目录
一、概述
二、初步了解网际协议 IP
👉2.1 与数据链路层的区别
👉2.2 网际协议 IP 概览
👉2.3 分层的意义
三、IP协议基础知识
👉3.1 IP地址属于网络层地址
👉3.2 路由控制
👉3.3 IP分包与组包
一、概述
这篇文章主要介绍TCP/IP协议的网际层,上一篇文章介绍了数据链路层,数据链路层的主要作用是 在互连同一种数据链路的节点之间进行包传递。而网际层的主要作用是 实现终端节点(即使不在同一网络)的通信。网际层 有时也称 网络层,但由于网际层的作用中包含了“实现一个网络和另一个网络的通信”,所以 网际层 可能是更好的表达。
网际层常用的的协议有
- IP(Internet Protocol):网际协议;
- ICMP(Internet Control Message Protocol):网际控制报文协议;
- IGMP(Internet Group Management Protocol):网际组管理协议;
- ARP(Address Resolution Protocol):地址解析协议;
其中 网际协议 IP 是TCP/IP体系中重要的协议之一,也是最重要的互联网标准之一,也是本文主要内容。
二、初步了解网际协议 IP
上一篇文章说的数据链路层提供直连两个设备之间的通信功能。与之相比, 作为网络层的IP则负责在没有直连的两个网络之间进行通信传输。那么这两者有什么区别?为什么要分两层呢?网际协议IP又是怎样工作的?
👉2.1 与数据链路层的区别
这一小节通过一个例子了解这两者的区别。
⚽️假设你有一个快递包裹从 广州市海珠区 寄到 广州市天河区,快递员收件之后,可能等包裹装上货车,直接就送到天河区的分拣中心了。
🏀假设你有另一个快递包裹从 广东省广州市 寄到 江苏省苏州市,快递员收件之后,包裹的移动路径可能是这样的:包裹先发往江苏苏州转运中心,再发往广州转运中心,最后才发往目的地。
⚽️例子中的第一个包裹从 广州市海珠区分拣中心 到 广州市天河区分拣中心,有
直达的路径。就好比在
同一网络(或同一链路)中的两台设备。只要知道源MAC地址 和 目的MAC地址就可以通信。这是 数据链路层 的通信方式。
🏀例子中的另一个包裹从 广东省广州市 到 江苏省苏州市,没有
直达的路径,需要通过转运中心发出。就好比不在
同一网络(或同一链路)中的两台设备。需要通过路由器转发到其他网络。这是 网络层IP 的通信方式。
从上面这个例子可以看出,两个设备在同一网络中使用的是基于MAC地址的数据链路层通信;如果不在同一网络,IP数据报无法直达,需要通过路由器转发,这就是网络层IP的通信。
👉2.2 网际协议 IP 概览
这个小节通过例子,大概地了解 IP 协议,了解IP数据报怎样发送的,对后面的学习有帮助。
🍁首先,我们来了解一下 虚拟互连网络 的概念,虚拟互连网络 也称 逻辑网络,意思是互连起来的各个物理网络的异构性(各个网络底层实现的硬件、结构、协议等差异性)是客观存在的,但是我们利用 IP协议 就可以使这些性能异构的网络在互联网层上看起来好像是一个统一的网络。这样使用IP协议的 虚拟互连网络 可以简称为IP网。
🍁当很多异构网络通过路由器连接起来,如果所有网络都使用相同的IP协议,那么网络层讨论问题就显得方便了。看下面这个例子。
🌰 如下图,源主机H1 要把一个 IP数据报 发给 目的主机H2。
1️⃣ 主机H1 先查找自己路由表,看目的主机是否在本网络上,是的话,IP数据报不经任何路由器直接交付到 目的主机H2。
2️⃣ 若不是,则将 IP数据报 发给与自己相连的路由器R1,R1查找路由表,把数据报发给R2进行 间接交付。这样一直转发下去,直到R5查找路由表,知道目的主机H2与自己连接在同一个网络上,不需要再转发,就把数据报直接交付到 目的主机H2。
注意,图中 R4 到 R5 之间使用了卫星链路,R5 连接的是个无线局域网。只要网络层都使用IP协议,这些底层网络实现的差异性就可以被忽略。
👉2.3 分层的意义
❓ 数据链路层和网络层都是负责通信,那为什么分开两层?
🔑网络通信的功能本身就是很复杂的,分层设计可以简化各个的功能;分层的设计可以隐藏各个网络底层的实现细节,让各层只关注本层的功能;分层的设计可以让存在差异性的计算机或网络相连。
三、IP协议基础知识
网际协议 IP 大致分为三大作用模块, ①IP寻址、 ②路由(最终节点为止的转发) 、③IP分包与组包。 以下就这三个要点逐一介绍。
👉3.1 IP地址属于网络层地址
在计算机通信中, 为了识别通信对端, 必须要有一个类似于地址的识别码进行标识。前面文章讲过数据链路层的MAC地址正是标识同一链路的不同计算机的识别码。
作为网络层的IP, 也有这种地址信息。 一般叫做 IP地址。 IP地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。 因此, 在TCP/IP通信中所有主机或路由器必须设定自己的IP地址(严格来说,要针对每块网卡至少配置一个或一个以上的IP地址。 ) 。
另外, 在网桥或交换集线器等物理层或数据链路层数据包转发设备中, 不需要设置IP地址。因为这些设备只负责将IP包
转化为0、 1比特流转发或对数据链路帧的数据部分进行转发, 而不需要应对IP协议。
👉3.2 路由控制
路由控制(Routing) 是指将分组数据发送到最终目标地址的功能。 即使网络非常复杂, 也可以通过路由控制确定到达目标地址的通路。一个IP数据报之所以能够成功地到达最终的目标地址, 全靠路由控制。
Hop译为中文叫“跳”。 它是指网络中的一个区间。 IP包正是在网络中一个个跳间被转发。 因此IP路由也叫做多跳路由。一跳的范围是指利用数据链路层以下分层的功能传输数据帧的一个区间,也就是主机 不经其他路由器 而能直接到达的相邻主机之间的一个区间。
为了将数据包发给目标主机, 所有主机都维护着一张 路由控制表(Routing Table) 。 该表记录IP数据在下一步应该发给哪个路由器.
👉3.3 IP分包与组包
前面介绍分层的意义时,提到可以隐藏网络底层的实现细节,连接存在差异性的网络。数据链路层就属于网络底层,IP数据报最终也是需要进行封装,形成数据链路层的数据帧,经数据链路层传输的。
MTU(Maximum Transmission Unit):最大传输单位。不同实现的数据链路层可能存在不同的 MTU,MTU的值在以太网中是1500字节, 在FDDI中是4352字节, 而ATM则为9180字节。
如果要将大于MTU的IP数据报传输的话,就需要进行 IP分片处理(IP Fragmentation),将较大的IP包分成多个较小的IP包。分片的包到了对端目标地址以后会再被组合起来传给上一层。这样的话就可以忽略存在差异的各个数据链路层。
总结:文章介绍TCP/IP五层(四层)协议的 网络层,大概了解到网际协议 IP 的发包过程,以及简单介绍了IP地址、路由控制、IP分包与组包。需要更详细了解IP协议,可以点击专栏查看后续文章或者看下面参考的三本书。
参考资料:
《计算机网络》第7版 谢希仁 编著
《计算机网络-自顶向下方法》第7版
《图解TCP/IP》第5版
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁