3.2.4数据转发过程详解(课件)-《计算机网络技术基础》同步教学(高教版)
2024-11-04
|
15页
|
100人阅读
|
24人下载
普通
内容正文:
数据转发过程详解
TCP/IP协议簇和底层协议配合,保证了数据能够实现端到端的传输。数据传输过程是一个非常复杂的过程,例如数据在转发的过程中会进行一系列的封装和解封装。对于网络工程师来说,只有深入地理解了数据在各种不同设备上的转发过程,才能够对网络进行正确的分析和检测。
1
数据包的封装过程
01
数据包的解封装过程
02
目录
CONTENTS
2
01 数据的封装过程
数据包在相同网段内或不同网段之间转发所依据的原理基本一致。
数据转发过程概述
Internet
主机 A
主机 B
服务器 A
服务器 B
10.1.1.1/24
10.1.1.2/24
172.16.10.1/24
172.16.10.2/24
RTA
RTB
灵石县第一职业高级中学
灵石县第一职业高级中学
数据可以在同一网络内或者不同网络间传输,数据转发过程也分为本地转发和远程转发,但两者的数据转发原理是基本一样的,都是遵循TCP/IP协议簇。
本示例中,主机A需要访问服务器A的Web服务,并且假定两者之间已经建立了TCP连接。接下来会以此示例来讲解数据在不同网络间的传输过程。
当主机建立了到达目的地的TCP连接后,便开始对应用层数据进行封装。
TCP封装
物理层
数据链路层
网络层
传输层
TCP Header
Data
数据段
主机 A
SYN
RST
FIN
Destination Port: 80
Sequence Number
Window
Checksum
Options
Source Port: 1027
Acknowledgement Number
Header Length
Resv.
Urgent Pointer
PSH
URG
ACK
Padding
灵石县第一职业高级中学
灵石县第一职业高级中学
主机A会对待发送的应用数据首先执行加密和压缩等相关操作,之后进行传输层封装。Web应用是基于传输层的TCP协议传输数据的。主机A使用TCP进行报文封装时,必须填充源端口和目的端口字段,初始序列号和确认序列号字段,标识位,窗口字段以及校验和字段。此例中数据段的源端口号为主机A随机选择的1027号端口,目的端口号为服务器A的TCP知名端口80。
IP封装
数据包
主机 A
IP Header
物理层
数据链路层
网络层
传输层
TCP Header
Data
DS Field
Total Length
Identification
Flags
Fragment Offset
Time to Live
Protocol:0X06
Header Checksum
Source IP Address:10.1.1.1
Destination IP Address:172.16.10.1
IP Options
Version
Header
Length
灵石县第一职业高级中学
灵石县第一职业高级中学
主机A完成传输层封装后,一般会进行网络层数据封装,在使用IP进行封装时,需要明确IP报文的源和目的地址。如果IP报文的大小大于网络的最大传输单元(MTU),则该报文有可能在传输过程中被分片。
生存时间(TTL)字段用来减少网络环路造成的影响。ARG3系列路由器产生的数据包,默认TTL值为255。路由器转发一个数据包时,该值会被减1,如果路由器发现该值被减为0,就会丢弃该数据包。这样,即使网络中存在环路,数据包也不会在网络上一直被转发。
协议字段标识了传输层所使用的协议。本例中,传输层使用的是TCP协议,所以该字段的填充值为0X06。
主机A必须要拥有到达目的地的路由。
查找路由
Network/Mask Gateway Interface
0.0.0.0/0 10.1.1.254 10.1.1.1
10.1.1.0/24 - 10.1.1.1
Internet
主机 A
主机 B
服务器 A
服务器 B
10.1.1.1/24
10.1.1.2/24
172.16.10.1/24
172.16.10.2/24
RTA
RTB
10.1.1.254/24
E0/0
灵石县第一职业高级中学
灵石县第一职业高级中学
每个主机都会独自维护各自的路由表项。主机A在发送数据前需要先检查是否能够到达目的端,这个过程是通过查找路由来完成的。在此示例中,主机A拥有一条到达“任何网络”(在IP编址部分已经简要介绍过)的路由,它发往其他网络的数据都会通过IP地址为10.1.1.1的接口转发到下一跳,即网关10.1.1.254。
通过ARP缓存表找到下一跳的MAC地址。
如果表项里没有下一跳的MAC地址,主机A会发送ARP请求。
ARP
主机 A
主机 B
10.1.1.1/24
00-01-02-03-04-05
10.1.1.2/24
00-01-02-03-04-06
10.1.1.254/24
00-01-02-03-04-08
Internet
Host A> arp -a
Internet address Physical address Type
10.1.1.254 00-01-02-03-04-08 Dynamic
10.1.1.2 00-01-02-03-04-06 Dynamic
RTA
E0/0
灵石县第一职业高级中学
灵石县第一职业高级中学
接下来,由于数据包要被封装成数据帧,所以主机A需要获取下一跳的MAC地址,也就是网关的MAC地址。主机首先会查询ARP缓存表。本例中,主机A的ARP缓存表中存在网关MAC地址的表项。
如果没有查找到网关的MAC地址表项,主机A会通过发送ARP请求来获取网关的MAC地址。
关于ARP解析MAC地址的流程,我们在此不做过多讲诉。
以太网封装
数据帧
Ethernet Header
Data
FCS
D.MAC
S.MAC
Type
物理层
数据链路层
网络层
传输层
IP Header
TCP Header
主机 A
灵石县第一职业高级中学
灵石县第一职业高级中学
主机A在链路层封装数据帧时,会遵循IEEE 802.3或Ethernet_II标准,Ethernet_II帧头中的类型字段填充为0x0800,以表示网络层使用的是IP协议。源MAC地址为主机A的MAC地址,目的MAC地址为网关路由器E0/0接口的MAC地址。
只有网关(RTA)会处理该数据帧,并继续转发。
数据帧转发过程
主机 A
主机 B
SFD
Preamble
Ethernet_II Header
FCS
Data
RTA
E0/0
10.1.1.254/24
00-01-02-03-04-08
目的MAC:00-01-02-03-04-08
TYPE:0x0800
灵石县第一职业高级中学
灵石县第一职业高级中学
本例中,主机A发送数据帧到路由器,设备收到帧之后,首先会进行FCS校验。如果FCS校验未能通过,则帧被立即丢弃。对于通过了FCS校验的帧,设备会检查帧中的目的MAC地址。如果帧中的目的MAC地址与自己的MAC地址不同,设备将丢弃帧,如果相同,则会继续处理。处理过程中,帧头帧尾会被剥去(也就是解封装),剩下的数据报文会被根据帧头中的类型字段的值来送到网络层中的对应协议模块去处理。
网关检查是否具有到达目的网络的路由条目。
如果存在转发路径,则为数据包添加一个新的二层帧头和帧尾,并继续转发。
数据包转发过程
Data
IP
10.1.1.100/24
E0/1
RTA
E0/0
Destination/Mask Interface
172.16.10.0/24 E0/1
DS Field
Total Length
Identification
Flags
Fragment Offset
Time to Live
Protocol
Header Checksum
Source IP Address:10.1.1.1
Destination IP Address: 172.16.10.1
IP Options
Version
Header
Length
SFD
Preamble
Ethernet_II Header
FCS
Data
灵石县第一职业高级中学
灵石县第一职业高级中学
RTA收到此数据报文后,网络层会对该报文进行处理。RTA首先根据IP头部信息中的校验和字段,检查IP数据报文头部的完整性,然后根据目的IP地址查看路由表,确定是否能够将数据包转发到目的端。RTA还必须对TTL的值进行处理。另外,报文大小不能超过MTU值。如果报文大小超过MTU值,则报文将被分片。
网络层处理完成后,报文将被送到数据链路层重新进行封装,成为一个新的数据帧,该帧的头部会封装新的源MAC地址和目的MAC地址。如果当前网络设备不知道下一跳的MAC地址,将会使用ARP来获得。
02 数据的解封装过程
RTB以服务器A的MAC地址作为目的MAC继续转发。
服务器A接收到该数据帧后,发现目的MAC为自己的MAC,于是会继续处理该数据帧。
数据帧解封装
服务器 A
服务器 B
172.16.10.1/24
00-03-04-05-06-AA
172.16.10.2/24
00-03-04-05-06-BB
D.MAC
S.MAC
Type(0x0800)
RTB
E0/1
SFD
Preamble
Ethernet_II Header
FCS
Data
灵石县第一职业高级中学
灵石县第一职业高级中学
该示例中,服务器A会收到RTB发送的数据帧。服务器A成功收到该帧,并通过FCS校验。服务器A将利用帧中的类型字段来识别在网络层处理该数据的协议。该示例中,服务器A会将解封装后的此数据交给网络层的IP协议来进行处理。
服务器A检查数据包的目的IP地址,发现目的IP与自己的IP地址相同。
服务器A剥掉数据包的IP头部后,会送往上层协议TCP继续进行处理。
数据包解封装
Data
IP Header
服务器 A
服务器 B
172.16.10.1/24
00-03-04-05-06-AA
172.16.10.2/24
00-03-04-05-06-BB
RTB
E0/1
DS Field
Total Length
Identification
Flags
Fragment Offset
Time to Live
Protocol
Header Checksum
Source IP Address:10.1.1.1
Destination IP Address: 172.16.10.1
IP Options
Version
Header
Length
灵石县第一职业高级中学
灵石县第一职业高级中学
服务器A通过IP协议来处理该报文,首先会通过校验和字段来验证报文头的完整性,然后检查IP报文头中的目的IP地址是否与自己当前的IP地址匹配。
如果在源与目的之间的数据传输期间数据发生了报文分片,则报文会被目的端重新组合。标识字段用于标识属于同一数据源的分片报文,偏移量表示该分片在原分组中的相对位置。标志字段目前只有两位有意义,标志字段最低位为1,表示后面还有分片,为0表示这已经是最后一个数据片;中间一位为1表示不能分片,为0表示允许分片。所有的分片报文必须被目的端全部接收到后才会进行重新组合。
协议字段表示此数据包携带的上层数据是哪种协议的数据。需要注意的是,下一个报头并非总是传输层报头。例如,ICMP报文也是使用IP协议封装,协议字段值为0x01。
服务器A检查TCP头部的目的端口,然后将数据段发送给应用层的HTTP协议进行处理。
数据段解封装
服务器 B
Data
TCP Header
服务器 A
172.16.10.1/24
00-03-04-05-06-AA
172.16.10.2/24
00-03-04-05-06-BB
RTB
E0/1
SYN
RST
FIN
Sequence Number
Window
Checksum
Options
Acknowledgement Number
Header Length
Resv.
Urgent Pointer
PSH
URG
ACK
Padding
Destination Port:80
Source Port:1027
灵石县第一职业高级中学
灵石县第一职业高级中学
当IP报文头被处理完并剥离后,数据段会被发送到传输层进行处理。在此示例中,传输层协议使用的是TCP,且发送端和接收端已经通过三次握手建立了连接。传输层收到该数据段后,TCP协议会查看并处理该数据段头部信息,其中目的端口号为80,用于表示处理该数据的应用层协议为HTTP协议。TCP处理完头部信息后会将此数据段头部进行剥离,然后将剩下的应用数据发送到HTTP协议进行处理。
$$
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。