【网络是怎么连接的】第二章(下):一个网络包的接收

之前讨论了一个网络包的发送,现在我们来看看一个计算机或服务器收到一个网络包后会怎么做。

在一台半双工模式的以太网中,一个设备发送的包会被连接在集线器上的所有设备接收,所以接收操作会接收到很多可能不是发给自己的包。

在这里插入图片描述

首先PHY(MAU)模块先将信号转为通用格式然后发给MAC模块,MAC模块通过读取报头的同步时钟和起始帧分界符,将分节符后边的东西都转化为数字信息,再检查尾巴的FCS看看这个包有没有出错,出错的话就直接丢弃。

如果FCS校验没错,MAC模块就要查询MAC头部中接收方的MAC地址与自己网卡的MAC地址是否一致,来判断这个包是不是发给自己的,不是的话就丢弃这个包。是的话就把包丢到网卡的缓冲区中,然后网卡会调用操作系统的中断,让操作系统协议栈过来看看这个新收到的包。

协议栈过来后,就是IP模块的工作了,IP模块会查看数据包的IP头部信息,确认IP头部里的接收方的地址是不是自己。如果不是,IP模块就会发送ICMP消息将错误告知发送方。

如果正确,那么就交给TCP模块处理了,TCP模块会查看IP头部的发送方IP地址和接收方IP地址,以及TCP头部的发送端和接收端的端口号来查找自己协议栈内有没有对应的的套接字,找到对应的套接字后,就可以进行相应的操作了。例如,如果包的内容是数据,则返回确认接收的包,然后将数据放入缓冲区等上层应用(浏览器)来读取。如果是建立连接或者断开连接的包,则返回相应的响应控制包,然后告诉上层应用相应的状态。

这里还有个小Tips
在这里插入图片描述
整个发送,转发,接收的完整过程可以参考这个动画,非常详细:
https://www.bilibili.com/video/BV1c4411d7jb?p=9&vd_source=5898cd61d2d78c3c6feae32e4c4101c6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值