MAC有全球唯一性,但是在不同的局域网可以重复,前提是不在同一跳
这个时候当我要寻找baidu.com
时需要先询问DNS
由DNS
告诉我服务器ip
地址获取到ip
以后开始运算掩码
掩码计算遵循有0
则0
计算法则有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
会出现以下内容
第4行询问网关谁是 目的地ip
网关返回MAc
这时客户端会把数据给目标网关,如果网关内没有这台计算机ip
路由器开始一跳发送到ISP网络运营商
的网关同时MAC
变成ISP
的地址,ISP
找到目标地址把地址交给他完成链路!开始通信
总结:两台不同局域网通信时需要有个中间人他就是第一跳,打个比方如果你想要别的家庭通信,就需要一个传话的,他就是路由(route)然后路由代替你传唤找到下一条完成链路.每一跳MAC
都会改变
到达目标主机建立socket
我们可以在数据头写上数据,转到对方内网指定主机包括端口复用
2021、6、9补充
当服务器数据返回到路由器时路由器怎么知道是谁的数据?
这个问题我终于弄明白的了!当路由器(route)把数据发送下一跳时就已经把返回的ip:port
已经告诉下一跳的网关了,当返回数据再到这个端口时就知道是谁的数据包了!相关文章 NAT和路由