数据包 应用层 TCP头:源端口 + 目的端口 数据包 传输层 IP头:源 IP 地址 + 目的 IP 地址 TCP头:源端口 + 目的端口 数据包 网络层 Ethernet头:源 MAC+ 目的 MAC IP头:源 IP 地址 + 目的 IP 地址 TCP头:源端口 + 目的端口 数据包 链路层
本机: 192.168.144.223;执行命令:telnet 192.168.145.77 23
【封装】1、 telnet 应用封装 telnet 程序请求信息,作为数据包传送给下一层; 【封装】2、传输层收到 telnet 数据包,在其前面封装一个 TCP 头部:本机随机启动一个端口作为源端口, 23 端口作为目的端口;然后将 TCP 报文传送给下一层; 【封装】3、网络层在 TCP 报文前面封装一个 IP 头:本地 IP 地址作为源 IP 地址, 192.168.145.77 作为目的 IP 地址; ( 多网卡存在不同网段 IP ,会根据本机路由选择; ) 根据本地路由表项,查找下一跳地址,如果不在同一个网段,一般会使用 default gateway 作为下一跳;通过 ARP 协议查找 gateway 对应的 MAC 地址, ARP 缓存表没有,则广播查找 who is 192.168.144.1 【封装】4、数据链路层将 IP 报文,封装一层数据链路头:将下一跳 MAC 作为目的 MAC , 192.168.144.223 网卡的 MAC 作为源 MAC 5、把网络报文以二进制格式,通过网线发送给下一跳 ( 基本上是路由器或者三层交换的入口);中间如果有二层交换机,根据 MAC 地址表,将数据报文转发到某一接口。 【解封装】6、以太网帧发送到三层交换或者路由器,数据包将被解封装到IP报文,根据目的IP查找路由表,路由转发; 【封装】7、在三层交换或路由器上,路由表项Iface接口MAC被封装成源MAC,对端接口MAC封装为目的MAC,发送到下一跳。 8、重复6、7步进行路由转发,一直发送到目的IP。 【解封装】9、在目的主机上,会进行解封装,然后根据目的Port发送到对应的进程,由该进程处理payload。 10、回包重复1-9步过程。
路由表项
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.120.1 0.0.0.0 UG 0 0 0 br-ext
192.168.120.0 0.0.0.0 255.255.254.0 U 0 0 0 br-ext
ARP表项
Address HWtype HWaddress Flags Mask Iface
10.42.2.0 ether 82:fd:67:52:6e:4a CM flannel.1
_gateway ether 48:7a:da:fa:aa:01 C ens192
192.168.34.151 ether 54:bf:64:59:16:f0 C ens192
10.42.0.12 ether c2:50:c1:89:69:ab C cni0
MAC地址表
MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s)
0026-b935-e865 120 Learned GigabitEthernet1/0/24 AGING