数据转发过程:数据在同网段或不同网段中转发原理基本一致,一般都遵循TCP/IP协议

封装:

1.传输层

当主机建立了目的地的TCP连接后,对应用层数据封装

数据转发 java TCP_网络层


填充TCP报头,主要是目的端口号和源端口号等

2.网络层

数据转发 java TCP_IP_02


填充IP报头,主要是协议号,源IP地址,目的IP地址等3.查找路由

4.查ARP

通过ARP缓存表查下一跳MAC,若无则发送ARP请求

5.数据链路层封装

用Ethernet_||或802.3(下图为以太网封装)

数据转发 java TCP_数据转发 java TCP_03


主要填充源MAC,目的MAC,Type类型等

6.数据帧转发

若工作在共享式以太网中,先用CSMA/CD检测链路是否空闲。

空闲则在帧头添加定界符和前导码

前导码—使接收设备进行同步,并做接收准备,1B(8bit)为10101011

定界符—指示帧开始,7B(56bit)的二进制10交替循环

共享以太网中,同一个冲突域的主机都收到该帧

收到的设备:

(1)进行FCS校验,检测真的完整性,若不完整,则丢弃

(2)检查目的MAC是否与本机MAC一致,不一致的丢弃

(3)目的MAC符合的,剥去帧头和帧尾后,据对应类型字段传给网络层对应协议处理

(4)据IP头部校验,确认完整性,后据目的IP地址查路由表项,若有路由,则数据链路层重封装,改变源MAC地址(出端口的MAC)和目的MAC地址(下一跳MAC地址),TTL值减1后转发

到达目的设备后:

(1)FCS检验后,通过类型字段交给网络层处理

(2)网络层解封装,发现目的MAC,目的IP与本设备一致,剥掉IP包头后交给上层协议处理

(3)传输层检查TCP目的端口号,交给相应应用层协议处理

PS.若两台主机同时访问服务器的同应用协议,据源IP或源端口区分数据所属会话