主机A给已知IP地址的主机B发送ip报文的过程

前言

最近一直在看网络的书,有的地方看得有点乱,这里总结一下两个主机之间发送数据包的过程。
可能内容会有小错误,欢迎在下面留言指出~
我之后学的更深入了也可能会来完善这篇~

过程如下

1.封装好了有源ip、目标ip、报文内容的ip报文。交由而二层后要知道目的mac地址,所以下面是确定目的mac地址的过程~

2.主机A先将主机B的ip跟自己的网络掩码相,判断是否在同一网段


3.a. 如果在同一网段:
1.主机A检查自己的ARP缓存有没有主机B的mac地址,没有的话就发一个ARP请求并把结果添加到ARP缓存里
2.将B的mac地址以【目的mac】添加到mac帧头部。
3.发送~Over


3.b. 如果不在同一网段:
1.主机A检查自己的ARP缓存有没有默认网关的mac地址,没有的话就发一个ARP请求并把结果添加到ARP缓存里。
(不在一个网段的话,就发给默认网关,默认网关再进一步分发~)
2.将默认网关的mac地址以【目的mac】添加到mac帧头部。
3.发送给默认网关
4.默认网关接收到之后,查看【目的ip】,对照自己的路由表判断是否能直接交付

5.a. 如果能直接交付(就是B与默认网关的某个端口处于同一个网段):
1.默认网关就查arp缓存(没有的话就发arp请求),然后把B的mac地址以【目的mac】添加到mac帧头部。
2.发送~Over

5.b. 如果不能直接交付(还要再交给别的路由器)
1.默认网关通过路由表判断把此报文从哪个端口转发出去
2.通过arp缓存查询该端口对应的路由器的mac地址(这个地方不是很确定。。),并把它以【目的mac】添加到mac帧头部。
3.如果一直不是直接交付就循环5b,否则就执行 5a 那步~最终发送到B

结束语

抓住7月的尾巴发篇博客哈哈 ^ ^ ~

觉得有帮助到你的话,欢迎打赏~~