计算机网络概述
一、定义与发展历程
1.1 计算机网络的定义
- 定义 :计算机网络是将地理位置不同的计算机及其设备通过通信线路连接起来,按照网络协议进行数据传输和资源共享的系统。
- 功能 :数据通信、资源共享(硬件、软件、信息资源)、分布式处理、提高可靠性和可用性。
1.2 计算机网络的发展历程
- 早期阶段(20 世纪 50 年代 - 60 年代) :计算机主要用于科学计算和数据处理,通信主要依靠点对点的专线连接。
- 分组交换网络阶段(20 世纪 60 年代 - 70 年代) :ARPANET 的建立,标志着计算机网络的诞生,引入了分组交换技术。
- 互联网阶段(20 世纪 70 年代 - 90 年代) :TCP/IP 协议的标准化,互联网的形成,网络应用逐渐丰富。
- 高速网络与移动网络阶段(20 世纪 90 年代 - 至今) :高速网络技术的发展,如光纤通信、无线通信等,移动互联网的兴起。
二、计算机网络的基本概念与分类
2.1 基本概念
计算机网络的组成
- 硬件 :计算机、服务器、路由器、交换机、网卡、传输介质等。
- 软件 :操作系统、网络协议、应用程序等。
- 传输介质 :有线介质(双绞线、同轴电缆、光纤)、无线介质(无线电波、微波、红外线)。
- 网络协议 :为计算机网络中进行数据交换而建立的规则、标准或约定,如 TCP/IP 协议、HTTP 协议等。
2.2 网络分类
按覆盖范围分类
- 局域网(LAN) :覆盖范围通常在几百米到几公里之内,如企业内部网络、校园网络等。
- 城域网(MAN) :覆盖范围在几公里到几十公里之间,通常用于连接一个城市或地区的网络。
- 广域网(WAN) :覆盖范围广泛,可以跨越国家、洲际甚至全球,如互联网。
按拓扑结构分类
- 总线型拓扑 :所有节点都连接到一条公共的总线上,数据在总线上广播传输。
- 星型拓扑 :所有节点都连接到一个中心节点(如交换机或集线器),中心节点负责数据的转发。
- 环型拓扑 :节点通过通信线路连接成一个闭合的环形,数据在环中逐站传输。
- 树型拓扑 :节点按照层次结构连接,类似于一棵树,适用于大型网络的分层管理。
- 网状拓扑 :每个节点都与其他多个节点直接相连,具有较高的可靠性和容错能力,但网络复杂度较高。
三、网络体系结构与协议分层
3.1 网络体系结构的概念
- 定义 :网络体系结构是计算机网络各层及其协议的集合,它定义了网络中各层的功能和接口。
- 作用 :通过分层结构,将复杂的网络通信问题分解为多个相对简单的层次,便于管理和维护。
3.2 OSI 参考模型
七层结构
- 物理层 :负责比特的传输,定义了物理接口的机械、电气、功能和过程特性。
- 数据链路层 :将物理层接收到的原始比特流组织成帧,进行差错控制和流量控制。
- 网络层 :负责数据包的路由选择和转发,实现不同网络之间的互联。
- 传输层 :提供端到端的通信服务,确保数据的可靠传输,如 TCP 和 UDP 协议。
- 会话层 :管理会话和连接,负责建立、维护和终止会话。
- 表示层 :进行数据的表示和转换,如数据加密、压缩和编码等。
- 应用层 :为用户提供各种网络应用程序和服务,如文件传输、电子邮件、万维网等。
- 协议与服务 :各层之间通过协议和服务进行交互,下层为上层提供服务,上层使用下层的服务。
3.3 TCP/IP 参考模型
四层结构
- 网络接口层 :对应 OSI 模型的物理层和数据链路层,负责与网络介质的接口和数据帧的传输。
- 网络层 :对应 OSI 模型的网络层,主要协议为 IP 协议,负责数据包的路由选择和转发。
- 传输层 :对应 OSI 模型的传输层,主要协议为 TCP 和 UDP 协议,提供端到端的通信服务。
- 应用层 :对应 OSI 模型的应用层、表示层和会话层,为用户提供各种网络应用程序和服务。
- 与 OSI 模型的对比 :TCP/IP 模型更加简洁实用,更符合互联网的实际需求,在实际应用中得到了广泛采用。
3.4 网络设备分类及介绍
物理层设备
设备名称 | 主要功能及特点 |
---|---|
中继器 | 放大信号,延长网络传输距离。工作在物理层,对信号进行再生整形放大。 |
集线器 | 用于组建、扩展网络,相当于多端口中继器。所有端口共享同一带宽。 |
数据链路层
设备名称 | 主要功能及特点 |
---|---|
网桥 | 连接两个相同或相似局域网的存储转发设备,可隔离冲突域。 |
交换机 | 可连接、分隔与扩展局域网,各端口间独享带宽的高速数据存储转发。 |
网络层
设备名称 | 主要功能及特点 |
---|---|
路由器 | 实现不同局域网、广域网之间的互联,基于IP寻址进行数据转发。 |
传输层及以上设备
设备名称 | 主要功能及特点 |
---|---|
网关 | 连接异构体系网络,进行协议转换使之互联通信。 |
其他设备
设备名称 | 主要功能及特点 |
---|---|
网卡 | 控制物理层信息传输方向,在网络和计算机间进行IP数据包的收发及出错检测。 |
调制解调器 | 在计算机和电话网之间进行数字信号、模拟信号的转换。 |
无线接入点 | 允许无线设备连接到有线网络,创建Wi-Fi网络。 |
防火墙 | 保护网络安全,通过过滤数据包防止不良数据包进入内部网络。 |
VPN服务器 | 提供虚拟专用网络服务,保障数据传输的安全性和隐私性。 |
...... | ...... |
四、数据通信基础
4.1 数据通信的基本概念
- 定义 :数据通信是指在计算机网络中,数据以数字信号的形式在通信线路上传输的过程。
组成要素
- 信源 :产生数据的设备或系统。
- 信宿 :接收数据的设备或系统。
- 传输介质 :数据传输的物理通道,如双绞线、同轴电缆、光纤等。
- 传输设备 :用于数据传输的设备,如调制解调器、路由器、交换机等。
通信方式
- 单工通信 :数据只能从信源单向传输到信宿,如广播、电视等。
- 半双工通信 :数据可以在信源和信宿之间双向传输,但不能同时进行,如对讲机。
- 全双工通信 :数据可以在信源和信宿之间同时双向传输,如电话、网络通信等。
4.2 数据编码技术
模拟数据编码
- 幅度调制(AM) :通过改变载波信号的幅度来表示数据。
- 频率调制(FM) :通过改变载波信号的频率来表示数据。
- 相位调制(PM) :通过改变载波信号的相位来表示数据。
数字数据编码
- 曼彻斯特编码 :将数字信号的每个比特周期分为两个相等的部分,前半部分表示数据的电平,后半部分表示数据的反转电平。
- 差分曼彻斯特编码 :在曼彻斯特编码的基础上,通过在比特周期的中间进行电平转换来表示数据。
- NRZ(不归零制)编码 :用高电平表示二进制 1,低电平表示二进制 0,不进行电平转换。
4.3 信道复用技术
频分复用(FDM)
- 原理 :将信道的带宽分成多个窄带信道,每个用户占用一个窄带信道进行通信。
- 应用场景 :主要用于模拟信号的传输,如电话系统中的多路复用。
时分复用(TDM)
- 原理 :将信道的传输时间分成多个时间片,每个用户在分配的时间片内进行通信。
- 应用场景 :广泛应用于数字信号的传输,如 ISDN(综合业务数字网)。
码分复用(CDM)
- 原理 :每个用户使用一个独特的码序列进行通信,接收端通过与发送端的码序列进行相关运算来解码。
- 应用场景 :主要用于无线通信,如 CDMA(码分多址)技术。
波分复用(WDM)
- 原理 :在光纤通信中,将不同波长的光信号复用到一根光纤中进行传输。
- 应用场景 :用于提高光纤通信的带宽和容量,如长途光纤通信网络。
五、物理层
5.1 物理层的功能
- 机械特性 :定义物理接口的形状、尺寸、引脚排列等机械特性,确保不同设备之间的物理连接。
- 电气特性 :定义信号的电压、电流、阻抗等电气特性,确保信号的正确传输。
- 功能特性 :定义物理接口的各个引脚的功能,如发送数据、接收数据、控制信号等。
- 过程特性 :定义物理接口的操作过程和时序关系,如信号的建立、维持和拆除等。
5.2 传输介质
- 有线传输介质
介质类型 | 主要功能及特点 |
---|---|
双绞线 | 由两根具有绝缘保护层的铜导线相互绞合而成,用于传输电信号。分为非屏蔽双绞线(UTP)和屏蔽双绞线(STP)。UTP成本低,安装方便,但抗干扰能力较差;STP具有金属屏蔽层,抗干扰能力强,但成本较高,安装复杂。 |
同轴电缆 | 由内导体、绝缘层、外导体屏蔽层和护套组成,用于传输电信号。有线电视网络常用,也用于旧的局域网。分为粗同轴电缆(10Base5)和细同轴电缆(10Base2)。粗同轴电缆传输距离较远,但安装维护复杂;细同轴电缆安装方便,但传输距离较短。 |
光纤 | 由玻璃或塑料制成的纤维,用于传输光信号。带宽大、损耗小、抗干扰能力强,适用于长距离、高速率的数据传输。分为单模光纤和多模光纤。单模光纤适用于长距离传输,成本较高;多模光纤适用于短距离传输,成本较低。 |
- 无线传输介质
介质类型 | 主要功能及特点 |
---|---|
无线电波 | 通过无线电波进行数据传输,广泛应用于移动通信、无线局域网(Wi-Fi)等领域。传输距离远,覆盖范围广,但易受环境因素影响,如建筑物遮挡、电磁干扰等。 |
微波 | 通过微波进行数据传输,常用于点对点的无线通信,如微波中继站。传输速率高,但需要直视路径,受天气影响较大。 |
红外线 | 通过红外线进行数据传输,常用于短距离通信,如遥控器、红外线打印机等。传输速率高,但传输距离短,且需要直视路径。 |
5.3 设备
设备名称 | 主要功能及特点 |
---|---|
中继器 | 放大信号,延长网络传输距离。工作在物理层,对信号进行再生整形放大。 |
集线器 | 用于组建、扩展网络,相当于多端口中继器。所有端口共享同一带宽。 |
六、数据链路层
6.1 数据链路层的功能
- 帧的封装与解封装 :将网络层的数据包封装成帧,添加帧头和帧尾,进行数据的传输和接收。
- 差错控制 :通过校验码(如 CRC 校验)检测数据传输中的错误,并进行重传或纠错。
- 流量控制 :控制发送方的数据发送速率,避免接收方来不及处理数据而造成数据丢失。
- 介质访问控制 :在共享介质的网络中,协调多个节点对介质的访问,避免数据冲突。
6.2 介质访问控制协议
CSMA/CD(载波监听多路访问 / 冲突检测)
- 原理 :节点在发送数据前先监听信道,如果信道空闲则发送数据,如果信道忙则等待一段时间后再发送;在发送数据过程中,如果检测到冲突,则停止发送,并发送干扰信号,然后等待随机时间后重试。
- 应用场景 :主要用于以太网的共享介质访问控制。
CSMA/CA(载波监听多路访问 / 冲突避免)
- 原理 :与 CSMA/CD 类似,但在发送数据前,节点会先发送一个短帧(如 RTS/CTS 帧)来预约信道,避免冲突的发生。
- 应用场景 :主要用于无线局域网(如 Wi-Fi)的介质访问控制。
令牌传递协议
- 原理 :网络中有一个令牌在各个节点之间传递,只有持有令牌的节点才能发送数据,其他节点只能接收数据。
- 应用场景 :主要用于环型拓扑和树型拓扑的网络中,如 Token Ring 网络。
6.3 局域网技术
以太网技术
- 标准 :IEEE 802.3 标准,定义了以太网的物理层和数据链路层规范。
- 原理 :基于 CSMA/CD 协议,采用共享介质的访问控制方式,数据以帧的形式在以太网中传输。
- 发展历程 :从最初的 10Mbps 以太网发展到现在的 10Gbps、40Gbps 甚至更高的以太网技术,不断满足网络应用的需求。
集线器、网桥和交换机
- 集线器 :工作在物理层,将接收到的信号进行放大和转发,实现多个节点的连接,但不能进行数据的过滤和选择。
- 网桥 :工作在数据链路层,根据 MAC 地址进行数据帧的转发和过滤,可以将多个局域网连接在一起,提高网络的性能和可靠性。
- 交换机 :是一种智能化的网桥,具有更高的转发速率和更多的功能,如虚拟局域网(VLAN)、端口镜像等,广泛应用于现代局域网中。
6.4 以太网帧格式
- 局域网:IEEE 8.2、以太网
- 广域网:PPP、HDLC
不同的协议栈用于定义和管理不同网络的数据转发规则
数据链路层控制数据帧在物理链路上传输
Ethernet_II帧格式
Ethernet_II 帧类型值大于等于1536 (0x0600),以太网数据帧的长度在64-1518字节之间。
IEEE802.3帧格式
IEEE802.3帧长度字段值小于等于1500 (0x05DC),数据帧的长度也在64-1518字节之间。
MAC地址
数据链路层基于MAC地址进行帧的传输。
MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。
数据库帧的发送与接收
当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。
6.5 单播、组播与广播
单播(Unicast)
- 定义:单播是指网络中一个发送者和一个接收者之间的网络通信类型。在单播方式下,数据包从一个特定的源地址发送到一个特定的目的地址,只有指定的接收者能够接收到数据包。
特点:
- 数据传输方向是单向的,从源到特定目的。
- 每个数据包都有唯一的源地址和目的地址。
- 网络设备(如路由器)根据目的地址进行路由选择,将数据包转发到相应的下一跳。
- 适用于点对点通信,如网页浏览、文件下载等场景。
应用场景:
- Web浏览:当用户访问一个网站时,服务器通过单播方式将网页内容发送给请求的客户端。
- 电子邮件:一封邮件通过单播方式从发件人的邮件服务器发送到收件人的邮件服务器。
- 即时通讯:如QQ或微信等即时通讯软件中,用户之间的消息传输采用单播方式。
优点:
- 针对性强:数据能够直接发送到指定的接收者,没有多余的传输。
- 安全性较高:由于数据只发送给特定的接收者,相对不容易被第三方截获。
缺点:
- 当需要向多个接收者发送相同数据时,需要为每个接收者单独发送数据包,增加了网络带宽的消耗和服务器的负担。
组播(Multicast)
- 定义:组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的发送可传给一群接收者)的网络技术。在组播方式下,数据包从一个源地址发送到一组指定的接收者,这些接收者可以分布在不同的网络中。
特点:
- 数据传输方向是单向的,从源到一组接收者。
- 使用组播地址来标识一组接收者,常见的组播地址范围是224.0.0.0到239.255.255.255。
- 网络设备通过IGMP(Internet Group Management Protocol)协议来管理组播组的成员关系,决定如何将数据包转发到各个接收者所在的网络。
- 适用于一对多或多对多的通信场景,如视频会议、在线直播等。
应用场景:
- 视频会议:多个参与者需要同时接收实时的视频和音频数据,通过组播方式可以将数据高效地发送给所有与会者。
- 在线直播:如体育赛事、音乐会等直播活动,可以通过组播将视频流发送给大量的观众,节省网络带宽。
- IP电视:用户可以通过组播方式接收多个频道的电视节目,每个频道对应一个组播组。
优点:
- 高效利用网络带宽:只发送一份数据包到多个接收者,减少了网络中的数据流量。
- 可扩展性强:能够支持大量的接收者同时接收数据,而不增加源端的负担。
缺点:
- 组播组的管理和维护相对复杂,需要网络设备支持组播协议。
- 组播数据的安全性需要额外的保护措施,如加密和认证。
广播(Broadcast)
- 定义:广播是指网络中一个发送者向该网络中所有接收者发送数据。在广播方式下,数据包从一个源地址发送到该网络段内所有可能的目的地址。
特点:
- 数据传输方向是单向的,从源到网络中所有接收者。
- 使用广播地址来标识整个网络段的所有设备,常见的广播地址范围是可用主机地址的最后一个地址。
- 网络设备会将广播数据包转发到整个网络段内的所有设备,不进行路由选择。
- 适用于网络中所有设备都需要接收相同数据的场景,如局域网中的设备发现、地址解析协议(ARP)等。
应用场景:
- 局域网设备发现:当一台新设备接入局域网时,可以通过广播方式发送发现请求,以便其他设备能够发现并建立连接。
- 地址解析协议(ARP):当主机需要获取某个IP地址对应的MAC地址时,会通过广播方式发送ARP请求,所有设备都会接收到请求,只有目标设备会回复。
- 网络管理:如网络管理员可以通过广播方式向网络中的所有设备发送配置更新或告警信息。
优点:
- 简单易用:无需复杂配置,数据能够自动发送到网络中的所有设备。
- 适用场景广泛:在网络中的许多基础通信协议和设备发现过程中发挥着重要作用。
缺点:
- 占用大量网络带宽:由于数据包会被发送到整个网络段内的所有设备,容易造成网络拥堵。
- 安全性较低:所有设备都能接收到广播数据,增加了数据被截获和攻击的风险。
总结
- 单播适用于点对点通信,数据传输针对性强且安全性较高,但对多点数据传输不够高效。
- 组播适用于一对多或多对多通信,能够在网络中高效地将数据发送给多个接收者,节省带宽,但管理和维护较为复杂,对网络设备的要求较高。
- 广播适用于网络中所有设备都需要接收相同数据的场景,简单易用但占用大量带宽且安全性较低。
6.6 广播与广播域
- 广播:将广播地址作为目的地址的数据帧。
- 广播域:网络中能接收到同一个广播所有节点的集合。
- MAC地址广播:广播地址为FF-FF-FF-FF-FF-FF。
IP地址广播:
- 广播MAC地址为FF-FF-FF-FF-FF-FF。
- 广播IP地址为IP地址网段的广播地址。
七、网络层
7.1 网络层的功能
- 数据包的路由选择和转发 :根据网络层协议(如 IP 协议)和路由表,选择最佳路径将数据包从源节点传输到目的节点。
- IP 地址的分配与管理 :为网络中的每个节点分配唯一的 IP 地址,进行 IP 地址的分配、管理和解析。
- 子网划分 :将一个大的网络划分为多个小的子网,提高网络的性能和安全性,便于网络的管理和维护。
7.2 IP 地址
概述
- IP地址是主机的唯一标识,保证了主机间正常的通信。
- IP地址是一种网络编码,用于确定网络中的一个节点。
- IP地址是由32位二进制(32bit)所组成的
关于进制
进制 | 字符范围 | 基值 |
---|---|---|
二进制 | 0 — 1 | 2 |
八进制 | 0 — 7 | 8 |
十进制 | 0 — 9 | 10 |
十六进制 | 0 —9,A — F | 16 |
在IP网络中,二进制和十六进制是常用的编码方式。
进制之间的转换
比特位 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
数值 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
二进制:11111111
转换为十进制等于:128+64+32+16+8+4+2+1=255
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
0 | 00000000 | 0 | 00 |
1 | 00000001 | 1 | 01 |
2 | 00000010 | 2 | 02 |
3 | 00000011 | 3 | 03 |
4 | 00000100 | 4 | 04 |
5 | 00000101 | 5 | 05 |
6 | 00000110 | 6 | 06 |
7 | 00000111 | 7 | 07 |
8 | 00001000 | 10 | 08 |
9 | 00001001 | 11 | 09 |
10 | 00001010 | 12 | 0A |
11 | 00001011 | 13 | 0B |
12 | 00001100 | 14 | 0C |
13 | 00001101 | 15 | 0D |
14 | 00001110 | 16 | 0E |
... | ... | ... | ... |
255 | 11111111 | 377 | FF |
二进制与十进制的转换
组成
IP地址由两部分组成:网络部分与主机部分。
分类
IP地址分为A、B、C、D、E五类,每一类有不同的划分规则。
IPv4地址被划分为A、B、C、D、E五类,每类地址的网络号包含不同的字节数。
A类,B类和C类地址为可分配IP地址,每类地址支持的网络数和主机数不同。比如,A类地址可支持126个网络,每个网络支持224 (16,777,216 )个主机地址,另外每个网段中的网络地址和广播地址不能分配给主机。
C类地址支持200多万个网络,每个网络支持256个主机地址,其中254个地址可以分配给主机使用。
D类地址为组播地址。主机收到以D类地址为目的地址的报文后,且该主机是该组播组成员,就会接收并处理该报文。
各类IP地址可以通过第一个字节中的比特位进行区分。如A类地址第一字节的最高位固定为0,B类地址第一字节的高两位固定为10,C类地址第一字节的高三位固定为110,D类地址第一字节的高四位固定为1110,E类地址第一字节的高四位固定为1111。
A类地址
- A类地址第1组为网络地址,其它3组为主机地址。
- A类地址范围:1.0.0.0---126.255.255.255。
- A类地址中的私有地址和保留地址10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
- A类地址中的私有地址范围:10.0.0.0---10.255.255.255。
- 127.X.X.X是保留地址,用做循环测试用(127.0.0.1,测试本机TCP/IP是否安装正确)。
B类地址
- B类地址第1组和第2组为网络地址,其它2组为主机地址。
- B类地址范围:128.0.0.0---191.255.255.255。
- B类地址的私有地址范围 :172.16.0.0---172.31.255.255。
- 169.254.X.X是保留地址,如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务,就会得到其中一个IP。
- 191.255.255.255是广播地址,不能分配。
C类地址
- C类地址第1组、第2组和第3组为网络地址,第4组为主机地址。
- C类地址范围:192.0.0.0---223.255.255.255。
- C类地址中的私有地址范围:192.168.0.0---192.168.255.255。
注意:在一个网段中,第一个IP地址和最后一个IP地址都不能被网络设备使用。因为第一个IP地址为网络地址,而最后一个IP地址为广播地址。中间的地址为主机地址,只有主机地址才可以被网络设备使用。
私有地址
- 私有地址的目的:满足企业用户在内部网络中使用的需求。
- 私有地址不能在Internet上使用。
- 私有地址包括3组 A类:10.0.0.0~10.255.255.255B类:172.16.0.0~172.31.255.255 C类:192.168.0.0~192.168.255.255 。
IP数据包格式
7.3 子网划分
子网掩码
- 子网掩码目的是用于确定IP地址的网络地址。
- 不同主机之间通信情况分为两种:相同网段与不同网段。
32个二进制位:
- 对应IP地址的网络部分用1表示。
- 对应IP地址的主机部分用0表示。
IP地址和子网掩码做逻辑“与”运算得到网络地址。
- 0和任何数相“与”都等于0。
- 1和任何数相“与”都等于任何数本身。
网络中不同主机之间的通信:
- 同网段主机之间的通信,将数据直接发送给另一台主机,源主机的网络地址=目标主机的网络地址。
- 不同网段主机之间的通信,将数据发送给网关进行转发,源主机的网络地址≠目标主机的网络地址。
- 子网掩码(Netmask)可区分IP地址的网络地址部分。
A、B、C三类地址的默认子网掩码:
- A类:255.0.0.0
- B类:255.255.0.0
- C类:255.255.255.0
简单解释:同一街道与不同街道的寄信方式可能不一样,同一街道直接送达,不同街道可能需要第三方转达。
而计算机通信也是一样,同一网络直接送达,不同网络需要通过其它方式传递,子网掩码就是用来确定IP的网络地址。
划分的原因
- 满足不同网络对IP地址的需求。
- 实现网络的层次性(性能瓶颈)。
- 节省IP地址。
IP地址分类:
- 有类地址。
- 无类地址。
有类地址与无类地址
在设计网络时使用有类IP地址会造成地址的浪费,如果企业网络中希望通过规划多个网段来隔离物理网络上的主机,使用缺省子网掩码就会存在一定的局限性。
网络中划分多个网段后,每个网段中的实际主机数量可能很有限,导致很多地址未被使用。如图所示的场景下,如果使用缺省子网掩码的编址方案,则地址使用率很低。
实验
将192.168.1.0/24划分为4个小网段,将主机位划分到网络位
借两位:
可用的网段则为:
那么每段可用的IP地址是
- 192.168.1.1 ~ 192.168.1.62
- 192.168.1.65 ~ 192.168.1.126
- 192.168.1.129 ~ 192.168.1.191
- 192.168.1.193 ~ 192.168.1.254
C类地址划分
IP地址经过一次子网划分后,被分为三个部分:网络位、子网位和主机位。
了解即可,如果在工作场景中遇见,直接使用计算机算!!!
7.4 ARP协议
定义
ARP协议:Address Resolution Protocol,地址解析协议。
ARP协议是一种用于将网络层地址(IP地址)映射为数据链路层地址(MAC地址)的协议。它在局域网中起着至关重要的作用,使得数据包能够准确地从一个设备传送到另一个设备。
工作原理
发送ARP请求:
- 当一台设备需要与另一台设备通信时,如果它不知道目标设备的MAC地址,会发送一个ARP请求广播包。该请求包包含目标设备的IP地址。
- 例如,设备A(IP地址192.168.1.1)需要与设备B(IP地址192.168.1.2)通信,但它不知道设备B的MAC地址,于是发送一个ARP请求广播包。
接收并响应ARP请求:
- 网络中的所有设备都会收到这个ARP请求广播包,但只有目标设备(设备B)会响应。设备B收到ARP请求后,会发送一个ARP响应单播包,包含自己的MAC地址。
- 例如,设备B会发送一个ARP响应包,告诉设备A它的MAC地址是00:11:22:33:44:55。
更新ARP缓存:
- 设备A收到ARP响应后,会将设备B的IP地址和MAC地址的映射关系存储在ARP缓存中,以便后续通信时直接使用,无需再次发送ARP请求。
Windows系统中的ARP命令
- arp -a ,查看ARP缓存表。
- arp -d,清楚ARP缓存。
应用场景
- 局域网通信:在以太网中,ARP用于将IP地址解析为MAC地址,确保数据包能够正确传输。
- 动态主机配置协议(DHCP):在DHCP过程中,客户端和服务器之间需要通过ARP来解析对方的MAC地址。
安全性
- ARP欺骗:攻击者可以通过发送伪造的ARP响应包,将错误的MAC地址与目标IP地址进行映射,从而截获或篡改数据。
- ARP泛洪:攻击者发送大量的ARP请求包,导致网络设备的ARP缓存表被填满,从而无法正常解析新的IP地址。
- 防范措施:可以通过配置静态ARP表、使用ARP防火墙、启用ARP防护功能等方法来防范ARP攻击。
7.5 ICMP协议
定义
ICMP协议(Internet Control Message Protocol,互联网控制消息协议)是TCP/IP协议族中的一个重要协议,位于网络层(第三层),主要用于在IP主机和路由器之间传递控制信息和错误消息。
ICMP协议不直接传输用户数据,而是在确保用户数据正确、高效地传输过程中起着至关重要的作用,为网络的操作和管理提供支持。
工作原理
- ICMP消息封装在IP数据包中传输,其头部包含类型、代码、校验和等字段。
- 不同类型的ICMP消息用于不同的网络控制和诊断目的。
- 当网络设备(如路由器或主机)检测到错误或需要进行网络诊断时,会生成ICMP消息并将其传递回源主机。
消息类型
报文格式
应用场景
网络故障诊断:
- Ping:通过发送ICMP回显请求消息并等待回显应答消息,
ping
工具可以检测主机是否可达,并测量往返时间(RTT)。 - Traceroute:通过发送多个TTL值从1开始递增的ICMP数据包,每当一个数据包到达一个中间路由器且TTL值减为零时,该路由器会返回一个ICMP时间超过消息,通过这些消息可以确定到达目标主机的路径。
网络优化:
- 重定向消息:如果路由器发现发送端主机使用了“不是最优”的路径发送数据,那么它会返回一个ICMP重定向消息给这个主机,通知其调整路由以优化网络性能。
安全监控:
- 防火墙配置:由于ICMP可以被滥用于网络扫描和攻击(如ICMP Flood攻击),许多防火墙配置默认阻止ICMP消息,特别是对回显请求和应答消息。正确配置防火墙规则可以在保持网络诊断功能的同时,减少潜在的安全风险。
- 网络监控:网络管理员可以利用ICMP消息监控网络设备的健康状态。例如,定期发送
ping
请求可以帮助及时发现网络问题并进行排查。
安全性
- ICMP泛洪攻击:攻击者发送大量的ICMP回显请求消息,导致目标主机或网络设备资源耗尽,无法正常处理合法请求。防范措施包括配置防火墙规则,限制ICMP消息的速率和数量。
- ICMP重定向攻击:攻击者发送伪造的ICMP重定向消息,误导主机更改路由表,导致数据包被发送到错误的路径。防范措施包括配置主机和路由器忽略不可信来源的ICMP重定向消息。
八、传输层
8.1 传输层的功能
- 端到端的通信服务 :为应用程序提供端到端的通信服务,确保数据的可靠传输和正确交付。
- 可靠数据传输 :通过确认、重传、排序等机制,确保数据的可靠传输,避免数据丢失和错误。
- 流量控制 :控制发送方的数据发送速率,避免接收方来不及处理数据而造成数据丢失。
- 拥塞控制 :监测网络的拥塞情况,调整数据的发送速率,避免网络拥塞的发生。
8.2 传输层协议
TCP(传输控制协议)
- 特点 :面向连接的、可靠的、基于字节流的传输层协议,提供全双工通信,具有较高的可靠性,但开销较大。
- 协议格式 :TCP 报文段由报头和数据部分组成,报头中包含源端口、目的端口、序列号、确认号、窗口大小等信息。
- 工作原理 :TCP 在传输数据前需要建立连接,通过三次握手建立连接,通过四次挥手断开连接,在数据传输过程中进行确认、重传、排序等操作,确保数据的可靠传输。
UDP(用户数据报协议)
- 特点 :无连接的、不可靠的、基于数据报的传输层协议,提供简单的传输服务,开销较小,但可靠性较低。
- 协议格式 :UDP 报文由报头和数据部分组成,报头中包含源端口、目的端口、长度和校验和等信息。
- 工作原理 :UDP 在传输数据时不需要建立连接,直接将数据报发送给接收方,由接收方自行处理数据的丢失和错误等问题,适用于对实时性要求较高的应用,如视频直播、在线游戏等。
8.3 TCP 协议
定义
TCP协议(传输控制协议,Transmission Control Protocol)。
TCP协议是互联网协议族(TCP/IP)中传输层的重要成员之一。它是一种可靠的、面向连接的协议,确保数据无差错、按顺序地从发送方传输到接收方。
特点
- 面向连接:在传输数据之前,通信双方必须建立连接,类似于打电话前需要拨号建立通话。
- 可靠传输:通过序列号、确认应答(ACK)、超时重传等机制,确保数据按序、无误地传输到接收方。
- 面向字节流:将数据视为一连串的字节流,不关心数据包的边界。
- 流控制:通过滑动窗口机制动态调节发送方的数据发送速率,防止接收方因数据处理能力不足而溢出。
- 拥塞控制:根据网络状况动态调整传输速率,防止网络拥塞。
- 全双工:允许通信双方的应用进程在任何时候都能发送数据。
- 提供紧急数据传送机制:对于需要紧急处理的数据,可以插队发送。
TCP报文段
图中的单位为bit
字段名称 | 长度(字节) | 描述 |
---|---|---|
源端口号 | 2 | 发送方的端口号,用于标识发送方的应用进程。 |
目的端口号 | 2 | 接收方的端口号,用于标识接收方的应用进程。 |
序列号 | 4 | 发送方数据流中当前数据段的第一个字节的序列号。 |
确认号 | 4 | 接收方期望下一个接收到的序列号,用于确认数据已经接收。 |
数据偏移(首部长度) | 1 | 指示TCP头部的长度,单位为32位(即4字节)。 |
保留字段 | 1 | 通常设置为0。 |
标志位 | 1 | 包括URG、ACK、PSH、RST、SYN、FIN等,各标志位的功能如下: |
- URG:紧急指针是否有效。 | ||
- ACK:确认号是否有效。 | ||
- PSH:是否需要尽快交付。 | ||
- RST:是否重置连接。 | ||
- SYN:是否同步序列号。 | ||
- FIN:是否关闭连接。 | ||
窗口大小 | 2 | 接收方的接收窗口大小,用于流控制。 |
校验和 | 2 | 用于检测头部和数据在传输过程中是否发生错误。 |
紧急指针 | 2 | 用于紧急数据的传输。 |
选项字段 | 可变 | 用于扩展TCP头部的功能,如时间戳等。 |
填充字段 | 可变 | 确保头部长度为4字节的整数倍。 |
数据 | 可变 | 要传输的数据,没有固定长度。 |
注意:端口号是用于区分不同的网络服务。
TCP建立连接
TCP建立连接的过程称为三次握手。
- 第一次握手:客户端发送一个带有SYN标志的数据包到服务器,请求建立连接。数据包中的序列号设置为X。
- 第二次握手:服务器收到客户端的SYN数据包后,向客户端发送一个带有SYN和ACK标志的数据包作为回应,确认序列号为X+1,并且服务器自己的序列号为Y。
- 第三次握手:客户端收到服务器的SYN+ACK数据包后,发送一个带有ACK标志的数据包给服务器,确认序列号为Y+1。此时,连接建立成功。
如图所示:
- 第一次握手:主机A将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给服务器A,主机A进入SYN_SENT状态,等待服务器A确认。
- 第二次握手:服务器A收到数据包后由标志位SYN=1知道主机A请求建立连接,服务器A将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给主机A以确认连接请求,服务器A进入SYN_RCVD状态。
- 第三次握手:主机A收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给服务器A,服务器A检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,主机A和服务器A进入ESTABLISHED状态,完成三次握手,随后主机A与服务器A之间可以开始传输数据了。
TCP关闭连接
TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接。因此在传输完毕后,两个方向的连接必须都关闭。
TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要经过四次握手。
- 第一次挥手:客户端发送一个带有FIN标志的数据包到服务器,请求释放连接。序列号为X。
- 第二次挥手:服务器收到客户端的FIN数据包后,发送一个带有ACK标志的数据包作为回应,确认序列号为X+1。
- 第三次挥手:服务器发送一个带有FIN标志的数据包到客户端,请求释放连接。序列号为Y。
- 第四次挥手:客户端收到服务器的FIN数据包后,发送一个带有ACK标志的数据包作为回应,确认序列号为Y+1。此时,连接释放成功。
如图所示:
- 主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b。
- 服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a+1,作为对主机A的FIN报文的确认。
- 服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a+1。
- 主机A回应一个标识了ACK的数据段,序列号为a+1,确认序号为b+1,作为对服务器A的FIN报文的确认。
数据传输过程
- 数据发送:发送方将应用层的数据分割成多个TCP段,每个段附带序列号发送。
- 确认接收:接收方收到数据段后,发送确认应答(ACK)给发送方,ACK中包含下一个期望接收的序列号。
- 超时重传:发送方设置定时器,如果在定时器超时前没有收到ACK,将重新发送数据段。
- 流量控制:接收方通过窗口大小告知发送方其接收缓冲区的大小,发送方据此控制发送速率。
- 拥塞控制:通过慢开始、拥塞避免、快重传和快恢复等算法动态调整发送窗口的大小,防止网络拥塞
拥塞控制
TCP的拥塞控制主要包括以下几个算法:
- 慢开始:在连接建立初期,发送窗口快速增长,以快速探测网络的可用带宽,每次收到ACK后,拥塞窗口(cwnd)翻倍。
- 拥塞避免:当拥塞窗口达到预设阈值(ssthresh)后,发送窗口呈线性增长,每次收到ACK后,拥塞窗口增加较小的数值。
- 快重传:当发送方接收到三个重复的ACK时,认为某个数据段丢失,立即重新发送该数据段,而无需等待超时计时器溢出。
- 快恢复:当发送方执行快重传后,将拥塞窗口减半,并设置阈值为新的拥塞窗口,然后进入拥塞避免阶段,避免网络拥塞进一步加剧。
如下图所示:
TCP滑动窗口技术通过动态改变窗口大小来实现对端到端设备之间的数据传输进行流量控制。
- 主机A向服务器发送4个长度为1024字节的数据段,其中主机的窗口大小为4096个字节。
- 服务器A收到第3个数据段后,缓存区满,第4个数据段被丢弃。
- 服务器以ACK 3073响应,窗口大小调整为3072,表明服务器的缓冲区只能处理3072个字节的数据段。
- 于是主机A改变其发送速率,发送窗口大小为3072的数据段。
应用场景
- 网页浏览:HTTP协议基于TCP传输网页内容。
- 文件传输:FTP协议基于TCP传输文件。
- 电子邮件:SMTP协议基于TCP传输邮件。
- 远程登录:TELNET协议基于TCP进行远程登录。
- 安全外壳协议:SSH协议基于TCP进行安全通信。
缺点
- 传输效率相对较低。TCP 协议在传输数据之前需要进行三次握手建立连接,增加了传输延迟。此外,TCP 协议的可靠性机制(如确认应答、重传等)也会增加传输时间。
- 占用资源较多。TCP 协议需要维护连接状态,包括序列号、确认应答、重传等机制,消耗较多的系统资源。
- 首部开销大。TCP 报文头部至少为 20 字节,包含多个字段(如序列号、确认号、窗口大小等),增加了数据传输的开销。
- 不适合实时性要求高的应用。TCP 协议的可靠性机制(如确认应答、重传等)会导致数据传输的延迟,不适合对实时性要求较高的应用。
常见端口及服务
端口号 | 服务协议名称 | 服务功能描述 |
---|---|---|
20 | FTP | 文件传输协议的数据传输通道 |
21 | FTP | 文件传输协议的控制命令通道 |
22 | SSH | 安全外壳协议,用于安全远程登录 |
23 | Telnet | 远程登录协议,用于远程登录 |
25 | SMTP | 简单邮件传输协议,用于发送电子邮件 |
53 | DNS | 域名解析服务,用于域名到IP地址的转换 |
80 | HTTP | 超文本传输协议,用于网页数据传输 |
110 | POP3 | 邮局协议版本3,用于接收电子邮件 |
143 | IMAP | Internet消息访问协议,用于电子邮件接收 |
443 | HTTPS | 超文本传输协议安全版,用于加密的网页数据传输 |
445 | SMB | 服务器消息块协议,用于文件共享 |
8.4 UDP协议
定义
UDP协议(用户数据报协议,User Datagram Protocol)。
UDP协议是一种无连接的传输层协议,适用于对实时性和传输效率有较高要求,但对数据完整性和可靠性要求相对较低的应用。它提供了一种简单、轻量级的通信机制,允许数据在网络中快速传输而无需事先建立专用的连接。
特点
- 无连接:UDP在发送数据之前不需要建立连接,也不维护连接状态。每个数据报(Datagram)是独立的,接收方在收到数据报时不会确认其发送成功。
- 不可靠:UDP不保证数据的可靠传输。它不提供序号、确认和重传等机制来确保数据包的顺序和完整性。因此,UDP可能会出现数据包的丢失、乱序或重复。
- 面向数据报:UDP以数据报为单位进行传输,每个UDP数据报都被视为一个独立的单元,从发送方到接收方进行传输。每个数据报都有固定的最大长度,并且在传输过程中不会被拆分或重新组合。
- 低延迟:由于没有建立连接和重传机制,UDP传输速度非常快,适合低延迟应用。
- 首部开销小:UDP的首部只有8个字节,相比TCP的至少20个字节的首部,UDP的额外开销更小,这有助于减少网络带宽的占用,提高数据传输的效率。
- 支持广播和多播:UDP支持一对多的通信模式,能够同时向多个接收者发送数据,这在网络广播和多播应用中非常有用。’
UDP报文
UDP报文由8字节的头部和数据部分组成
图中单位为bit
源端口号 | 2 | 发送方的端口号,用于标识发送方的应用进程。 |
---|---|---|
目的端口号 | 2 | 接收方的端口号,用于标识接收方的应用进程。 |
长度 | 2 | 指定UDP数据报的长度,包括UDP头部和UDP数据的总长度。 |
校验和 | 2 | 用于检测头部和数据在传输过程中是否发生错误。 |
数据 | 可变 | 要传输的数据,没有固定长度。 |
应用场景
当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时,可以用UDP协议来替代TCP协议在传输层控制数据的转发。
UDP将数据从源端发送到目的端时,无需事先建立连接。
UDP采用了简单、易操作的机制在应用程序间传输数据,没有使用TCP中的确认技术或滑动窗口机制,因此UDP不能保证数据传输的可靠性,也无法避免接收到重复数据的情况。
例如一下场景:
- 实时音视频传输:如视频会议(Zoom、Skype)、网络直播(Twitch、YouTube Live)等,使用UDP进行实时音频和视频传输,确保最低的延迟。
- 在线游戏:大多数实时在线游戏(如射击游戏、角色扮演游戏)使用UDP进行状态更新和事件传输,以减少延迟和提高响应速度。
- VoIP(语音网络):如WhatsApp、Viber等,通过UDP进行语音数据的实时传输,以减少通话延迟,提供更好的用户体验。
- 流媒体服务:如Spotify、Apple Music等,使用UDP传输音频数据流,以确保连续播放,降低缓存时间。
- 广播和多播:如DHCP(动态主机配置协议)、SNMP(简单网络管理协议)等,通过UDP进行信息传递。
- 传感器网络:许多IoT应用使用UDP来传输传感器数据,以减少延迟和节省带宽。
- 简单请求-响应协议:如DNS(域名系统)、NTP(网络时间协议)等,通过UDP进行快速查询和响应。
- 文件传输:如TFTP(简单文件传输协议),用于在计算机之间传输小文件,通常在局域网内使用UDP。
缺点
- 可靠性差。UDP 协议不保证数据包的可靠传输,数据包可能会在传输过程中丢失、重复或损坏。
- 缺乏流量控制。UDP 协议没有流量控制机制,发送方可以以任意速率发送数据。
- 无拥塞控制。UDP 协议没有拥塞控制机制,无法根据网络状况动态调整传输速率。
- 不适合大文件传输。UDP 协议不保证数据包的顺序和完整性,对于大文件传输,可能会导致数据丢失或损坏。
- 错误处理能力有限。UDP 协议仅提供简单的校验和机制,无法检测和纠正数据传输中的错误。
常见端口及服务
端口号 | 服务协议名称 | 服务功能描述 |
---|---|---|
53 | DNS | 域名解析服务,将域名转换为IP地址 |
69 | TFTP | 简单文件传输协议,用于文件传输 |
161 | SNMP | 简单网络管理协议,用于网络设备管理 |
123 | NTP | 网络时间协议,用于同步网络设备的时钟 |
68 | DHCP | 动态主机配置协议,用于自动分配IP地址 |
520 | RIP | 路由信息协议,用于路由选择 |
162 | SNMP Trap | SNMP陷阱消息接收,用于网络管理告警 |
九、应用层
9.1 应用层的功能
- 为用户提供各种网络应用程序和服务 :如文件传输、电子邮件、万维网、远程登录、域名解析等,满足用户的各种需求。
- 实现应用程序之间的通信 :通过应用层协议,实现不同应用程序之间的数据交换和通信,如 HTTP 协议用于浏览器与服务器之间的通信,FTP 协议用于文件传输等。
9.2 常见应用层协议
DNS(域名系统)
- 功能 :将域名和 IP 地址进行映射,方便用户使用域名访问网络资源,而不需要记住复杂的 IP 地址。
- 工作过程 :用户在浏览器中输入域名,浏览器向 DNS 服务器发送域名解析请求,DNS 服务器查询域名对应的 IP 地址,并将结果返回给浏览器,浏览器根据 IP 地址访问相应的网络资源。
FTP(文件传输协议)
- 功能 :在计算机网络中进行文件的传输,支持文件的上传和下载,适用于文件共享和备份等应用。
- 工作过程 :用户使用 FTP 客户端软件连接到 FTP 服务器,通过 FTP 协议进行文件的传输,FTP 协议使用 TCP 协议进行数据传输,确保文件传输的可靠性。
SMTP(简单邮件传输协议)
- 功能 :在电子邮件系统中,用于发送和传输电子邮件,确保电子邮件能够正确地从发件人传输到收件人。
- 工作过程 :用户使用邮件客户端软件编写电子邮件,并通过 SMTP 协议将邮件发送到邮件服务器,邮件服务器再将邮件转发给收件人的邮件服务器,收件人可以通过邮件客户端软件从邮件服务器接收邮件。
HTTP(超文本传输协议)
- 功能 :在万维网中,用于浏览器与服务器之间的通信,传输网页、图片、视频等各种资源,是万维网的基础协议。
- 工作过程 :用户在浏览器中输入网址,浏览器向服务器发送 HTTP 请求,服务器根据请求内容返回相应的网页或其他资源,浏览器接收并解析服务器返回的数据,显示给用户。
十、数据转发的过程
TCP/IP协议簇和底层协议配合,保证了数据能够实现端到端的传输。数据传输过程是一个非常复杂的过程,例如数据在转发的过程中会进行一系列的封装和解封装。
10.1 数据转发概述
数据可以在同一网络内或者不同网络间传输,数据转发过程也分为本地转发和远程转发,但两者的数据转发原理是基本一样的,都是遵循TCP/IP协议簇。
10.2 实验
本示例中,主机A需要访问服务器A的Web服务,并且假定两者之间已经建立了TCP连接。接下来会以此示例来讲解数据在不同网络间的传输过程。
TCP封装
当主机建立了到达目的地的TCP连接后,便开始对应用层数据进行封装。
- 主机A会对待发送的应用数据首先执行加密和压缩等相关操作,之后进行传输层封装。
- Web应用是基于传输层的TCP协议传输数据的。
- 主机A使用TCP进行报文封装时,必须填充源端口和目的端口字段,初始序列号和确认序列号字段,标识位,窗口字段以及校验和字段。
此例中数据段的源端口号为主机A随机选择的1027号端口,目的端口号为服务器A的TCP知名端口80。
IP封装
- 主机A完成传输层封装后,一般会进行网络层数据封装,在使用IP进行封装时,需要明确IP报文的源和目的地址。
- 如果IP报文的大小大于网络的最大传输单元(MTU),则该报文有可能在传输过程中被分片。生存时间(TTL)字段用来减少网络环路造成的影响。
- ARG3系列路由器产生的数据包,默认TTL值为255。
- 路由器转发一个数据包时,该值会被减1,如果路由器发现该值被减为0,就会丢弃该数据包。这样,即使网络中存在环路,数据包也不会在网络上一直被转发。
- 协议字段标识了传输层所使用的协议。
本例中,传输层使用的是TCP协议,所以该字段的填充值为0X06。
查找路由
主机A必须要拥有到达目的地的路由。
每个主机都会独自维护各自的路由表项。
- 主机A在发送数据前需要先检查是否能够到达目的端,这个过程是通过查找路由来完成的。
- 在此示例中,主机A拥有一条到达“任何网络”(在IP编址部分已经简要介绍过)的路由,它发往其他网络的数据都会通过IP地址为10.1.1.1的接口转发到下一跳,即网关10.1.1.254。
ARP
通过ARP缓存表找到下一跳的MAC地址。
如果表项里没有下一跳的MAC地址,主机A会发送ARP请求。
- 接下来,由于数据包要被封装成数据帧,所以主机A需要获取下一跳的MAC地址,也就是网关的MAC地址。
- 主机首先会查询ARP缓存表。
- 本例中,主机A的ARP缓存表中存在网关MAC地址的表项。
- 如果没有查找到网关的MAC地址表项,主机A会通过发送ARP请求来获取网关的MAC地址。
以太网封装
- 主机A在链路层封装数据帧时,会遵循IEEE 802.3或Ethernet_II标准,
- Ethernet_II帧头中的类型字段填充为0x0800,以表示网络层使用的是IP协议。
- 源MAC地址为主机A的MAC地址,目的MAC地址为网关路由器E0/0接口的MAC地址。
数据帧的转发(封装)过程
主机工作在半双工状态下,所以会使用CSMA/CD来检测链路是否空闲。
前导码用于使接收者进入同步状态,定界符用于指示帧的开始。
首先
- 主机A工作在半双工状态下,所以会使用CSMA/CD来检测链路是否空闲。
- 如果链路空闲,主机A会将一个前导码(Preamble)和一个帧首定界符(SFD)附加到帧头然后进行传输。
- 前导码的作用是使接收设备进行同步并做好接收数据帧的准备。前导码是包括了7个字节的二进制“1”、“0”交替的代码,即1010…10共56位。
- 帧首定界符是长度为1个字节的10101011二进制序列,它的作用是使接收端对帧的第一位进行定位。
接着
同一个冲突域里的设备都会接收到主机A发送的数据帧。只有网关(RTA)会处理该数据帧,并继续转发。
- 本例中,主机A发送数据帧到共享以太网,此网络中的所有网络设备都会收到该帧。
- 设备收到帧之后,首先会进行FCS校验。如果FCS校验未能通过,则帧被立即丢弃。
- 对于通过了FCS校验的帧,设备会检查帧中的目的MAC地址。如果帧中的目的MAC地址与自己的MAC地址不同,设备将丢弃帧,如果相同,则会继续处理。
- 处理过程中,帧头帧尾会被剥去(也就是解封装),剩下的数据报文会被根据帧头中的类型字段的值来送到网络层中的对应协议模块去处理。
最后
网关检查是否具有到达目的网络的路由条目。如果存在转发路径,则为数据包添加一个新的二层帧头和帧尾,并继续转发。
- 路由器A收到此数据报文后,网络层会对该报文进行处理。
- 路由器A首先根据IP头部信息中的校验和字段,检查IP数据报文头部的完整性,然后根据目的IP地址查看路由表,确定是否能够将数据包转发到目的端。
- 路由器A还必须对TTL的值进行处理。另外,报文大小不能超过MTU值。如果报文大小超过MTU值,则报文将被分片。
- 网络层处理完成后,报文将被送到数据链路层重新进行封装,成为一个新的数据帧,该帧的头部会封装新的源MAC地址和目的MAC地址。
- 如果当前网络设备不知道下一跳的MAC地址,将会使用ARP来获得。
数据帧的解封装过程
路由器B以服务器A的MAC地址作为目的MAC继续转发。服务器A接收到该数据帧后,发现目的MAC为自己的MAC,于是会继续处理该数据帧。
- 该示例中,服务器A处于一个共享以太网中,两台服务器都会收到路由器B发送的数据帧。
- 该帧的目的MAC地址与服务器B的接口MAC地址不匹配,所以会被服务器B丢弃。
- 服务器A成功收到该帧,并通过FCS校验。服务器A将利用帧中的类型字段来识别在网络层处理该数据的协议。
- 该示例中,服务器A会将解封装后的此数据交给网络层的IP协议来进行处理。
数据包解封装
服务器A检查数据包的目的IP地址,发现目的IP与自己的IP地址相同。服务器A剥掉数据包的IP头部后,会送往上层协议TCP继续进行处理。
- 服务器A通过IP协议来处理该报文,首先会通过校验和字段来验证报文头的完整性,然后检查IP报文头中的目的IP地址是否与自己当前的IP地址匹配。
- 如果在源与目的之间的数据传输期间数据发生了报文分片,则报文会被目的端重新组合。标识字段用于标识属于同一数据源的分片报文,偏移量表示该分片在原分组中的相对位置。
- 标志字段目前只有两位有意义,标志字段最低位为1,表示后面还有分片,为0表示这已经是最后一个数据片;中间一位为1表示不能分片,为0表示允许分片。
- 所有的分片报文必须被目的端全部接收到后才会进行重新组合。
- 协议字段表示此数据包携带的上层数据是哪种协议的数据。需要注意的是,下一个报头并非总是传输层报头。
- 例如,ICMP报文也是使用IP协议封装,协议字段值为0x01。
数据段解封装
服务器A检查TCP头部的目的端口,然后将数据段发送给应用层的HTTP协议进行处理。
- 当IP报文头被处理完并剥离后,数据段会被发送到传输层进行处理。
- 在此示例中,传输层协议使用的是TCP,且发送端和接收端已经通过三次握手建立了连接。
- 传输层收到该数据段后,TCP协议会查看并处理该数据段头部信息,其中目的端口号为80,用于表示处理该数据的应用层协议为HTTP协议。
- TCP处理完头部信息后会将此数据段头部进行剥离,然后将剩下的应用数据发送到HTTP协议进行处理。
注意事项
- 主机在封装数据包之前,必须要知道目的端IP地址。
- 在封装数据帧之前,必须要知道去往目的网络的路由以及下一跳的MAC地址。
- 如果主机接收到一个不是发往自己的数据帧,在检验帧头中的目的MAC地址之后会丢弃该帧。
- 传输层会检查TCP或UDP报文头中的目的端口号,以此来识别特定应用。
服务器可以只通过源IP地址识别两台主机的HTTP流量,另外TCP报文头中包含的源端口也可以被用来区分同一台主机通过不同的浏览器发起的不同的会话。
例如,两个来自源IP为10.1.1.1的HTTP流量使用的目的端口号都是80,但源端口号为1028和1035。
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论