网络数据包转发过程

本文仅作为学习笔记记录,内容可能不是很完整。

假设有一台局域网电脑对 http://www.baidu.com  这个ip地址发起get请求。

局域网电脑网络设置如下:

  • IP:192.168.1.10
  • 子网掩码: 255.255.255.0
  • 网关:192.168.1.1
  • DNS:8.8.8.8

具体流程如下:

1. 使用DNS协议,像8.8.8.8发起请求查询www.baidu.com对应的ip地址为:39.156.66.14

2. 判断目的ip和本机ip是否同一个局域网:

        1. 求本机的网络号: 192.168.1.10 & 255.255.255.0 = 192.168.1.0

        2. 求目的IP的网络号:39.156.66.14 & 255.255.255.0 = 39.156.66.0 

        3. 显然 192.168.1.0 !=  39.156.66.0 ,因此不在同一个局域网

3. 操作系统构造IP报文,目的IP填写39.156.66.14。因为经过上述判断,目的IP与本机IP不在同一个局域网,因此IP报文中的目的MAC地址字段填写网关(192.168.1.1)的MAC地址。(如果目的IP与本机IP在同一个局域网,则目的MAC地址填写目的IP的MAC地址。 MAC地址可通过ARP协议获取)

4. 网卡发送数据报文,数据报文到达交换机。

5. 交换机工作在OSI模型第二层数据链路层,其只针对MAC地址进行数据转发,而不认识IP地址。收到数据包后,根据路由表,查询目的MAC对应的转发端口然后进行转发。如果无法查询到目的端口,则向除了此数据接收端口以外的所有端口广播此数据。

6. 数据经过交换机转发(有可能是N个交换机级联转发),最终来到了路由器(网关192.168.1.1)。路由器工作在OSI模型第三层,可以识别IP地址。路由器按照一定的规则根据路由表判断下一跳地址,按照最长网络号匹配原则进行数据转发。(转发前会更新ip数据包中的目的MAC地址以适应后续的链路层传输)。如果路由表中无法匹配到目标端口,则会向默认路由端口进行转发。

7. 数据包经过层层转发,最终到达百度服务器。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值