以太网报文封装:
1、以太网报文结构:src_mac,dst_mac,vlan号(非必须),网络层协议号
2、src_mac,dst_mac均是通过路由或arp决定,a、arp学到目的ip地址所在的remote_mac地址,则:src_mac=local_mac(学习网口),dst_mac=remote_mac;b、arp没有学习到remote_mac地址,则通过路由查看目标ip的所在gw,将dst_mac=gw_mac即可
报文路由发送:
1、本机客户端封装好以太网报文后通过src_mac将报文写入对应的网卡缓存中
2、下一跳gw即路由器收到该报文后,发现mac地址是自己,但是ip地址不是自己,根据路由表将dst_mac替换成路由器的下一 跳 gw1_mac; 同时将报文中的src_mac替换成自己的gw_mac
3、路由器重复第二步直至发送到目的ip所在的服务器,路由器不修改数据,仅作路由mac地址替换,服务器回复报文同理,可以通过ip层的TTL值可以判别出报文经过几跳。
ip_addr mac_addr route gw ethX arp
client: 10.43.85.162[eth5] 00:22:93:75:A2:43 10.0.0.0/8 10.43.85.1 eth5 10.43.85.1 00:19:c6:01:f6:9b eth5
client_gw:10.43.85.1 00:19:c6:01:f6:9b //路由器
sever_gw:10.43.42.1 00:d0:d0:c2:14:23 //路由器
server: 10.43.42.199[eth5] 00:22:93:71:DC:35 10.0.0.0/8 10.43.42.1 eth5 10.43.42.1 00:d0:d0:c2:14:23 eth5
客户端配置:
客户端SYN报文发送:
客户端SYN+ACK报文接受:
服务器配置:
服务器收到SYN报文:
服务器发送ACK报文: