我在百度告诉你,当你请求百度时都发生了什么……(6)

2023-05-02 来源:飞速影视
对我的机器来说,我想访问百度的服务器,也就是往百度的服务器发数据包的话,那我的电脑得先封装好数据包吧!
那数据包里面起码要包含哪些信息呢?其实在上面的第一节中我们已经说过了,也就是、、、
对于我的电脑来说:
Copysrc ip = 192.168.0.64src mac = fa:16:3e:6b:ab:64 (本机mac地址)dst ip = 220.181.38.251 (通过DNS服务解析www.baidu.com获取到)dst mac = ???
那目的mac地址是多少呢?这是个问题!
因为我是192.168.0.X网段,百度的服务器在220.181.38.X网段,我们都不在一个网段中!我的机器没法直接获取到百度对外暴露的网关的mac地址。
那怎么我的机器怎么办呢?
答案是:我的机器会先查看一下自己的路由表,路由表会记录该将这个数据包转发到哪里去。具体可通过route -n命令可以查看到,如下:

我在百度告诉你,当你请求百度时都发生了什么……


具体的做法就是,拿着dst ip 220.181.38.251,分别和路由表中的Genmask做与操作,ip地址 与 子网掩码可以得到该ip地址所在的网段,那得到了所在的网段之后呢,就拿着这个网段和路由表中的Destination对比,如果相同的话,就将数据包准发给他。
在我们这个例子中,很明显跟后三条路由相与得到的结果和route表期望的都不匹配。
但是跟第一条路由表中的记录想与,得到的结果肯定符合route预期的,毕竟谁与0,结果都是0嘛。(它的Flags为UG,表示它就是网关,也就是网络的出口)
找到了符合预期的路由后,我的机器就会先将数据包发送给网关,对应的网卡就是eth0 ,那这也就意味着我们找到了第一个跳目的ethernet地址。于是数据包被封装成下面这样
Copysrc ip = 192.168.0.64src mac =dst ip = 220dst mac = eth0网卡的mac地址。(ip地址是:192.168.0.1)
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号