MAC有全球唯一性,但是在不同的局域网可以重复,前提是不在同一跳
下
这个时候当我要寻找baidu.com时需要先询问DNSDNS告诉我服务器ip地址获取到ip以后开始运算掩码
掩码计算遵循有00计算法则有0则0
计算
当路由表里没有网关MAC时会主动去发送arp查询
网关通过arp查询mack
使用arp -a来查询arp列表

测试链路
先打开另一个终端开启抓包(这样帮助你查看数据)

tcpjump -nn -i eth0 port 80 or arp

使用arp删除命令arp -d 192.168.0.0 这样在连接时候会查询ARP寻找地址,再使用curl www.baidu.com:80
这时候tcpjump会出现以下内容
arp
第4行询问网关谁是 目的地ip 网关返回MAc这时客户端会把数据给目标网关,如果网关内没有这台计算机ip路由器开始一跳发送到ISP网络运营商的网关同时MAC变成ISP的地址,ISP找到目标地址把地址交给他完成链路!开始通信

总结:两台不同局域网通信时需要有个中间人他就是第一跳,打个比方如果你想要别的家庭通信,就需要一个传话的,他就是路由(route)然后路由代替你传唤找到下一条完成链路.每一跳MAC都会改变
到达目标主机建立socket我们可以在数据头写上数据,转到对方内网指定主机包括端口复用

2021、6、9补充
当服务器数据返回到路由器时路由器怎么知道是谁的数据?
这个问题我终于弄明白的了!当路由器(route)把数据发送下一跳时就已经把返回的ip:port已经告诉下一跳的网关了,当返回数据再到这个端口时就知道是谁的数据包了!相关文章 NAT和路由

Last modification:June 9th, 2021 at 08:59 am
如果觉得我的文章对你有用,请随意赞赏