【Sofice小司笔记】5 计算机网络,包含数据传输原理、网络各层协议详细说明、TCP/IP协议栈各常用协议说明、TCP握手挥手、可靠传输、网络加密技术
❓ 在浏览器地址栏输入一个 URL 后回车,背后发生了什么
- 解析 URL
- 浏览器封装 HTTP 请求报文
- DNS 域名解析获取 IP 地址
- 建立 TCP 连接(长链接)
- 浏览器发送请求
- 负责传输的 IP 协议
- 使用 ARP 协议凭借 MAC 地址通信
- 服务器响应请求
- 断开 TCP 连接
- 浏览器渲染界面
数据传输方式和交换方式
传输方式
按数据传输的流向和时间关系分类
- 单工通信:只能指定方向。广播
- 半双工通信:双向,但不能同时。对讲机
- 全双工通信:双向同时。电话
按数据传输的顺序分类
- 串行:易于实现。缺点是要解决收、发双方码组或字符的同步,需外加同步措施。
- 并行:传输信道多,设备复杂,成本较高,故较少采用。
按数据传输的同步方式划分
- 同步:发送方和接收方的时钟要同步,同步符号(起始字符)+数据块+同步符号(结束字符)
- 异步:在发送每一个字符代码的前面均加上一个 “起” 信号(起始位),后面均加一个 “止” 信号(终止位)。字符可以连续发送,也可以单独发送;不发送字符时,连续发送止信号。
交换方式
数据交换(Data Switching)是指在多个数据终端设备之间,为任意两个终端设备建立数据通信临时互连通路的过程。通俗来说交换是就通过某些交换中心将数据进行集中和传送,传输线路为各个用户共用,从而大大节省通信线路,降低系统费用。如果网络规模较大,则把交换设备连接在一起形成交换网络。
电路交换
用户之间要传输数据时,交换中心在用户之间建立一条暂时的数据电路。电路接通后,用户双方便可传输数据,并一直占用到传输完毕拆除电路为止。电路交换引入的时延很小,而且交换机对数据不加处理,是这几种交换方式中最快的一种。因而适合传输实时性强和批量大的数据。
报文交换
报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整数据信息,其长短很不一致,长度不限且可变。传送过程采用存储转发的方式,中间方必须收到完整的报文并检查有无错误后才能进行转发。
分组交换
分组,就是将一个大的数据包(报文)分成一个个更小的数据包,这些一个个更小的数据报就称为分组。在每个分组的首部写入发送端和接收端的地址。分组交换同样采用存储转发,不同站点的数据分组可以交织在同一线路上传输,也就是说一个报文分成了若干个分组之后,这些分组不一定都沿着同一条路径进行转发,提高了线路的利用率。当然,由于将大的报文分割成了若干小分组,所以分组交换的速度比报文交换快得多
三种交换方式比较
电路交换 | 报文交换 | 分组交换 | |
---|---|---|---|
建立连接 | 需要 | 不需要 | 不需要 |
数据交换单位 | 比特流 | 报文 | 分组 |
传输方式 | 比特流直达 | 存储转发 | 存储转发 |
每个分组沿着规定路径 | 是 | 不是 | |
分组按序到达 | 是 | 不是 | |
优点 |
通信时延小; 实时性强; 适用范围广; 控制简单; 避免冲突 |
无需建立连接; 动态分配陆续; 可靠性高; 线路利用率高; 可提供多目标服务 |
加速传输; 简化存储管理; 减少出错几率和重发数据 |
缺点 |
建立连接时间长; 信道利用率低; 缺乏统一标准; 灵活性差 |
由于存储转发导致时延; 对报文大小没有限制,需要较大的存储缓存空间 |
由于存储转发导致时延; 工作量大,可能出现分组丢失等情况 |
数据交换方式的选择
- 传送数据量大,且传送时间远大于呼叫时,选择电路交换。电路交换传输时延最小。
- 当端到端的通路有很多段的链路组成时,采用分组交换传送数据较为合适
- 从信道利用率上看,报文交换和分组交换优于电路交换,其中分组交换比报文交换的时延小,尤其适用于计算机之间的突发式的数据通信(比如我们用微信发消息)
OSI七层协议模型和TCP/IP四层协议模型
五层协议模型
所谓通信协议就是通信双方都必须要遵守的通信规则。如果没有网络通信协议,计算机的数据将无法发送到网络上,更无法到达对方计算机,即使能够到达,对方也未必能读懂。有了通信协议,网络通信才能够发生。
每一层都是在下一层的基础上,通过层间接口向上一层提供一定的服务,而把 “这种服务是如何实现的” 细节对上层加以屏蔽。
- 对等层之间通信(不同开放系统中的相同层次之间的通信,对等层实体之间的信息交换):OSI 标准为每一层的通信都严格定义了 协议数据单元 PDU的格式。 对等层之间的通信是目的,对等层实体的协作保证该层功能和服务的实现
- 相邻层之间通信(相邻的上下层之间的通信,属于局部问题):相邻层之间的通信是手段,保证对等层实体之间的通信得以实施
物理层
两台计算机之间要进行通信,必然需要传输介质/物理媒介来连接两台计算机,这样,我们才能把数据传输过去。传输介质分为:
- 导向型传输介质:
- 双绞线:适用于近距离
- 同轴电缆(抗干扰性强):适用于远距离
- 光纤:带宽远远大于其他传输媒体
- 非导向型传输介质:
- 无线电波
- 微波
- 红外线、激光
物理层的作用:就是实现计算机之间的数据传送,这个数据其实是比特流,物理层需要尽可能屏蔽掉具体传输介质和物理设备的差异, 使其上面的数据链路层不必考虑网络的具体传输介质是什么,即实现比特流的透明传输。
数据链路层
物理层只是简单的把计算机连接起来并在上面传输比特流,它还是存在着很多问题的:
- 1)物理连接是有差错和不可靠的
- 2)物理设备之间可能存在传输速度不匹配问题
也就是说仅仅靠物理层是无法保证数据传输的正确性的。
数据链路层的主要作用:加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。在物理层提供服务的基础上,数据链路层还肩负着为网络层提供服务的责任,其最基本的服务是将来自网络层的 IP 数据报封装成帧,可靠的传输到相邻结点的目标网络层。
封装成帧
为什么需要封装成帧:前需要制定一套规则来进行 0、1 的传送,让计算能够读懂这些序列。
封装成帧就是:发送端的数据链路层接收到上层网络层传过来的 IP 数据报后,在其前后部分添加首部(包含MAC地址)、尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
MAC 地址
MAC 地址就是链路层地址,长度为 6 字节(48 位),**用于唯一标识网络适配器(网卡)。**计算机之间的数据传送,就是通过 MAC 地址来唯一寻找、传送的。
一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。
❓ 如果没有 MAC 地址,仅仅只有 IP 地址可以吗?
从理论上来说,如果 IP 地址够用,交换机也支持根据 IP 地址进行转发,我们只需要在 IP 数据报中加一个 “下一跳 IP 地址” 的字段就行了,MAC 地址确实并不是必要的。但从宏观来说,IP 地址只管上层建筑即路线规划,底层具体走的逻辑交给 MAC 地址来做,这样其实才符合 TCP/IP 协议体系这种分层的理念!所以,这种设计并非多次一举,而是为了符合最根本的设计理念。
网络层
在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。
网络层的任务:就是选择合适的网间路由和交换结点, 确保数据及时传送。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。
IP 协议
IP 协议用于屏蔽下层物理网络的差异,为上层提供统一的 IP 数据报。IP 数据报中含有发/收方的 IP 地址。
IP 协议提供无连接的、不可靠的、尽力的数据报投递服务
无连接
发送端可于任何时候自由发送数据,而接收端永远不知道自己会在何时从哪里接收到数据。每个数据报独立处理和传输, 一台主机发出的数据报序列,可能取不同的路径, 甚至其中的一部分数据报会在传输过程中丢失;
不可靠
IP 协议本身不保证数据报投递的结果。 在传输的过程中,数据报可能会丢失、重复、延迟和乱序等, IP协议不对内容作任何检测,也不将这些结果通知收发双方; 数据报的丢失,通过路由器发 ICMP报文 告知; 必要时,由高层实体(如TCP)负责差错恢复动作。
尽力
执行数据报的分段和封装,以适应具体的传输网络, 由最终结点的IP模块进行合段处理
不同物理网络对传输的帧 /分组的体积有不同的规定; 当数据报长度 > **MTU(Maximun Transfer Unit,最大传输单元)**时,需对数据报分段 。
IP地址
IPV4 地址长 32 比特 / 4 字节,而 IPV6 地址占 128 比特 / 16 字节
网络类别 | 第一个可用的网络号 | 最后一个可用的网络号 | 每个网络中的最大主机数 |
---|---|---|---|
A | 1 | 126 | 224−22^{24} - 2224−2 |
B | 128.1 | 191.255 | 216−22^{16} - 2216−2 |
C | 192.0.1 | 223.255.255 | 28−22^{8} - 228−2 |
当主机号全为 0:该网络的地址
当主机号全为 1:该网络的广播地址
127.0.0.1:环回地址,数据包就不会流向网络
❓ 为什么要分离网络号和主机号?
因为两台计算机要通讯,首先要判断是否处于同一个广播域内,即网络地址(网络号)是否相同:
- 如果网络地址相同,表明接受方在本网络上(本地网络主机),那么可以把数据包直接发送到目标主机,无需转发给其他的网络
- 网络号不相同的主机称之为远程网络主机,远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据
IP 单播/广播/多播
- IP 广播:用网络的广播地址,如
192.168.0.255
,一般进行本地广播,路由器上设置为不转发广播包。 - IP 单播:只有一个发送方和一个接收方。单播是可以穿透路由器的。
- IP 多播(组播):将包发送给特定组内的所有主机(可以穿透路由器),即一个发送方,特定的多个接收方
子网划分
将传统的两级 IP 地址(网络号 + 主机号)转换成粒度更小的三级 IP 地址(网络号 + 子网号 + 主机号),也就是将主机地址划分为子网号和子网内的主机号。划分子网后,对外仍表现为一个网络。
子网掩码
将某个 IP 地址划分成网络地址和主机地址两部分
以网络地址 192.168.1.0
(C 类二级 IP 地址),子网掩码 255.255.255.192
为例,我们可以写成:192.168.1.0/26
,表示网络号 + 子网号共 26 位。
子网掩码 255.255.255.192 中共有 26 个 1,即代表网络号 + 子网号共 26 位,而 C 类地址的网络号(加上分类号)共 24 位,由此可知,需要从 8 位主机号中借用 2 位作为子网号。由于子网网络地址被划分成 2 位,那么子网地址就有 22=42^2 = 422=4 个,分别是 00、01、10、11,具体划分如下图:
划分后的 4 个子网如下表格:
拯救枯竭的 IPV4 地址
无分类 IP 地址 CIDR
放弃 IP 地址的分类,采用任意长度分割 IP 地址的网络号和主机号。CIDR 的表现形式为
a.b.c.d/x
,其中/x
表示前 x 位属于网络号(网络前缀),网络号的长度可以根据需要变化。NAT 地址转换
用于在本地网络中使用私有地址,在连接互联网时使转而使用全局 IP 地址的技术。虽然说 NAT 实际上是为正在面临地址枯竭的 IPV4 而开发的技术,不过在 IPV6 中,为了提高网络安全也在使用 NAT。
IPV6
路由控制
为了将数据包发送给目标主机,所有主机和路由器都维护着一张路由控制表(Routing Table),该表记录着如下两个字段:
- IP 地址
- 如果想要到达这个 IP 地址,在当前路由器,数据包的下一步应该是发送到哪个路由器
在发送 IP 数据报时,首先要确定 IP 数据报首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 数据报转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。
默认路由 Default Route 就是指路由表中任何一个地址都能与之匹配的记录。如果一张路由表中包含所有的网络和子网信息,将会造成无端的浪费。这时,默认路由就是一个不错的选择。默认路由一般标记为 0.0.0.0/0
或 default
路由协议
路由控制表的形成有两种方式:
- 一种是管理员手动设置,也叫静态路由控制
- 另一种是路由器与其他路由器相互交换信息时自动刷新,也叫动态路由控制
为了让动态路由即时刷新路由控制表,在网络上互联的路由器之间必须设置好某种协议,保证正常读取路由控制信息。这种协议就称为路由协议。
人们根据路由控制的范围将路由协议大致分为两类:
- 外部网关协议 EGP(包含 RIP、OSPF 等协议)
- 内部网关协议 IGP(包含 BGP 等协议)
没有 EGP 就不可能有世界上各个不同组织机构之间的通信,没有 IGP 就不可能有机构内部的通信。
ARP 地址解析协议
ARP(Address Resolution Protocol )协议就可以实现由 IP 地址得到 MAC 地址。
每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。
如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组(该分组携带自己的 IP 地址 和 MAC 地址 以及 目标主机的 IP 地址),主机 B 收到该请求后会发送 ARP 响应分组 给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。
ARP请求包为广播,ARP响应包为单播
【Sofice小司笔记】5 计算机网络,包含数据传输原理、网络各层协议详细说明、TCP/IP协议栈各常用协议说明、TCP握手挥手、可靠传输、网络加密技术相关推荐
- 【Sofice小司笔记】1 Java,包含java基础知识,集合,面向对象,反射,泛型等
JavaSE:标准版(桌面程序,控制台) JavaME:嵌入式开发(手机) JavaEE:E企业级开发(web,服务器) JDK(Java Development Kit):整个java开发工具 JR ...
- 【Sofice小司笔记】4 Redis,包含nosql,redis架构,8中数据类型,事务,持久化,配置文件详解,发布订阅,集群管理,缓存穿透和雪崩
NoSQL 关系型数据库存在的问题: 网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘 I/O 是一个很大的瓶颈 网站每天产生的数据量是巨大的,对于关系型数据库来说, ...
- 【Sofice小司笔记】1 关系数据库基础,包含关系数据库设计,索引,事务,安全性,完整性,查询处理优化等
数据库管理系统 DataBase Management System / DBMS DBMS 是位于用户和操作系统之间的一层数据管理软件.数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复 ...
- 【Sofice小司笔记】2 算法与数据结构,各类基础及常用高级数据结构、各种搜索方法、动态规划、字符串、数论、编码学、排序等,大部分都基于java实现
维基百科算法与数据结构 ACM模式模板: import java.io.*; import java.util.*; public class Main{public static void main ...
- 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)
前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...
- -1-7 java 网络编程基本知识点 计算机网络 TCP/IP协议栈 通信必备 tcp udp
计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来, 在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 ...
- 计算机网络体系结构(OSI七层、TCP/IP四层、五层协议)
1.概述 2. 五层协议 2.1 应用层 为特定应用程序提供数据传输服务,例如 HTTP.DNS 等.数据单位为报文. 2.2 运输层 提供的是进程间的通用数据传输服务.由于应用层协议很多,定义通用的 ...
- lwIP TCP/IP 协议栈笔记之十五: TCP协议
目录 1. TCP 服务简介 2. TCP 的特性 2.1 连接机制 2.2 确认与重传 2.3 缓冲机制 2.4 全双工通信 2.5 流量控制 2.6 差错控制 2.7 拥塞控制 3. 端口号的概念 ...
- 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(4)
前情回顾:在回顾了网络层的IP协议之后,我们又紧接着进行对网络层其他协议的复习,了解了DNS.ARP.ICMP.DHCP.NAT(NAPT)等辅助性协议的作用以及基本原理. 今天中午起床的时候,突然非 ...
最新文章
- 2021年春季学期-信号与系统-第五次作业参考答案-第七小题
- Python中的id()函数_怪异现象
- 读不完的顶会Paper,我该如何读论文?
- 深度学习工作机制通俗介绍
- JS事件及其兼容用法
- geotif 添加坐标_python – 如何获取geotif中单元格的坐标?
- 中间省略_SpringBoot2 高级案例(03): 整合sharding-jdbc中间件,实现数据分库分表
- 程序员“小白”打野升级指南,值得收藏
- AttributeError: ‘str‘ object has no attribute ‘decode‘ model = keras.models.load_model
- 基于springboot实现OA办公管理系统
- 计算机组成原理上机试卷,计算机组成原理试卷及答案
- 商住楼和住宅楼的区别
- toolchain - 工具链
- vue实现微信分享链接 生成卡片
- 《测绘程序设计实习》实验报告(MFC,C++)
- 等高线节点过密如何处理?CASS10.1复合线滤波功能详解
- turtle实例8 玫瑰曲线
- 飞书机器人小助手@特定人
- JAVA通过Graphics2D生成表格图片
- 数据结构第六章图的思维导图