网络数据包转发过程

本文详细描述了局域网电脑如何通过DNS查找www.baidu.com的IP地址,判断是否在同一局域网,然后通过IP报文和MAC地址构建,经过交换机和路由器的三层转发,最终到达目标服务器的过程。

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

假设有一台局域网电脑对 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. 数据包经过层层转发,最终到达百度服务器。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值