网络是怎样连接的(十五)—— 网络包传输概览(IP 模块视角)

132 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情

前言

在上一篇文章中,我们我们探索了网络包在在传输过程中会经过了哪些设备。

设备视角 介绍了网络包发送的整体过程,今天我们换一个角度,从我们之前一直提起的 IP 模块 再来看一看网络包收发的整体流程。

下面,就开始我们今天的学习之旅!

注:往期文章在本文的最下方哦

包收发操作概览

首先我们先来明确一点,尽管我们说 IP 模块负责将包发给对方,但实际上将包从发送方传输到接收方的工作是由集线器、路由器等网络设备来完成的。因此 IP 模块仅仅是整个包传输过程的入口而已。即便如此,IP 模块还是有很多工作需要完成,下面我们来简单整理下。

包收发操作的起点是 TCP 模块委托 IP 模块发送包的操作。这个委托的过程就是 TCP 模块在数据块的前面加上 TCP 头部,然后整个传递给 IP 模块,这部分就是网络包的内容。与此同时,TCP 模块还需要指定通信对象的 IP 地址,也就是需要写清楚“将什么内容发给谁”。

收到委托后,IP 模块会将包的内容当做一整块数据,在前面加上包含包含控制信息的头部。IP 模块会添加 IP 头部 和 MAC 头部 这两种头部。IP 头部中包含 IP 协议规定的、根据 IP 地址将包发往目的地所需的控制信息;MAC 头部包含通过以太网的局域网将包传输至最近的路由器所需的控制信息。

关于 IP 头部和 MAC 头部的去呗以及其中包含的控制信息的含义,我们在接下来的文章学习中再专门介绍。我们现在只需要知道,加上这两个头部之后,一个包就封装好了,这些就是 IP 模块负责的工作。

IP 模块负责添加如下两个头部:

  1. MAC 头部:以太网用的头部,包含 MAC 地址
  2. IP 头部:IP 用的头部,包含 IP 地址

接下来,封装好的包会被交给网络硬件,例如以太网、无线局域网等。网络硬件可能是计算机主板上集成的芯片,不同形态的硬件名字也不一样,这里我们统一使用网卡来称呼。

传递给网卡的网络包是由一连串 0 和 1 组成的数字信息,网卡会将这些数字信息转换为电信号或光信号,并通过网线(或光纤)发送出去,然后这些信号就会到达集线器、路由器等转发设备,再由转发设备一步一步地送达接收方。

包送达对方之后,对方会作出响应。返回的包也会通过转发设备发送回来,然后我们需要接收这个包。接收的过程和发送的过程是相反的,信息先以电信号的形式从网络传输进来,然后由网卡将其转换为数字信息并传递给 IP 模块,接下来,IP 模块会将 MAC 头部和 IP 头部后面的内容,也就是 TCP 头部加上数据块,传递给 TCP 模块。接下来的操作就是我们之前讲过的 TCP 模块负责的部分了。

在这个过程中,有几个关键的点。TCP 模块在收发数据时会分为好几个阶段,并为各个阶段设计了实现相应功能的网络包。但 IP 的包收发操作都是相同的,并不会因为本身而有所区别。因为 IP 模块会将 TCP 头部和数据块看作一整块二进制数据,在执行收发操作时并不关心其中的内容,也不关心这个包是包含 TCP 头部和数据两者都有呢,还是只有 TCP 头部而没有数据。当然,IP 模块也不关心 TCP 的操作阶段,对于包的乱序和丢失也一概不知。总之,IP 的职责就是将委托的东西打包送到对方手里,或者是将对方送来的包接收下来,仅此而已。  因此,接下来我们要讲的这些关于 IP 的工作方式,可适用于任何 TCP 委派的收发操作。

总结

IP 模块可以看作是整个包传输过程的入口

IP 模块负责添加如下两个头部:

  1. MAC 头部:以太网用的头部,包含 MAC 地址
  2. IP 头部:IP 用的头部,包含 IP 地址

封装好的包会交给网卡,然后顺着网线(光纤)发送出去,再经过其他转发设备,最终到达目的地

无论要收发的包是控制包还是数据包,IP 对各种类型的包的收发操作都是相同的。

参考文档

  • 《网络是怎样连接的》—— 户根勤

往期文章