TCP/IP的心脏是互联网层,这一层主要由IP
(Internet Protocol)和ICMP
(Internet Control Message Protocol)两个协议组成。
IP相当于OSI参考模型的第3层
IP
(IPv4、IPv6)相当于OSI参考模型中的第3层――网络层。网络层的主要作用是“实现终端节点之间的通信”,这种终端节点之间的通信也叫“点对点(end-to-end)通信”。
IP的主要作用就是在复杂的网络环境中将数据包发给最终的目标地址。
网络层的下一层――数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递,而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两端节点之间的数据包传输。
主机
的定义应该是指“配置有IP地址,但是不进行路由控制的设备”,既配有IP地址又具有路由控制能力的设备叫做路由器
,跟主机有所区别。而节点
则是主机和路由器的统称。
网络层与数据链路层的关系
数据链路层提供直连两个设备之间的通信功能,与之相比,作为网络层的IP则负责在没有直连的两个网络之间进行通信传输。
数据链路只负责某一个区间之间的通信传输。 -> 火车票或机票 IP负责将数据包发给最终的目标地址。即点对点通信。 -> 旅行的行程表
IP基础知识
IP大致分为三大作用模块:IP寻址、路由(最终节点为止的转发)、IP分包与组包。
IP地址属于网络层地址
IP地址
用于在“连接到网络中所有主机中识别出进行通信的目标地址”。在TCP/IP通信中所有主机或路由器必须设定自己的IP地址。
连接互联网的主机需要配置IP地址。 根据IP地址发送IP数据包。
网络层对数据链路层的某些特性进行了抽象。不论一台主机与哪种数据链路连接,其IP地址的形式都保持不变。以太网、无线局域网、PPP等,都不会改变IP地址的形式。
在网桥或交换集线器等物理层或数据链路层数据包转发设备中,不需要设置IP地址。因为这些设备只负责将IP包转化为0、1比特流转发或对数据链路帧的数据部分进行转发,而不需要应对IP协议。
路由控制
路由控制
(Routing)是指将分组数据发送到最终目标地址的功能。
我想去主机A那里。 # 根据路由数据包被发送至最终的目标地址。 让我想想,跟主机A连接的网络是哪个来着?
发送数据至最终目标地址
Hop
译为中文叫“跳”,是指网络中的一个区间,IP包正是在网络中一个跳间被转发。IP路由也叫做多跳路由
,在每一个区间内决定着包在下一跳被转发的路径。
数据链路实现某一个区间(一跳)内的通信。 而IP实现直至最终目标地址的通信(点对点)。
一跳
(1 Hop)是指利用数据链路层以下分层的功能传输数据帧的一个区间。以太网等数据链路中使用MAC地址传输数据帧,此时的一跳是指从源MAC地址到目标MAC地址之间传输帧的区间。也就是说它是主机或路由器网卡不经其他路由器而能直接到达的相邻主机或路由器网卡之间的一个区间。在一跳的这个区间内,电缆可以通过网桥或交换集线器相连,不会通过路由器或网关相连。
多跳路由
是指路由器或主机在转发IP数据包时只指定下一个路由器或主机,而不是将到最终目标地址为止的所有通路全部指定出来。因为每一个区间(跳)在转发IP数据包时会分别指定下一跳的操作,直至包达到最终的目标地址。
# 乘坐火车旅游 # IP就相当于在每次换乘时购买了标有下一个MAC地址的车票。 新宿站:我想去大阪站,该怎么走? -> 乘坐中央线先到东京站,再咨询一下东京站的工作人员。 东京站:我想去大阪站,该怎么走? -> 乘坐东海道线先到新大阪站,再咨询一个新大阪站的工作人员。 新大阪站:我想去大阪站,该怎么走? -> 乘坐JR京都线(神户线)即可到达大阪站。 # 快递的送货方式 以太网快递:麻烦您送到主机B。 -> 发给路由器A即可。再往后可以咨询路由器A。 FDDI快递:麻烦您送到主机B。 -> 不好意思,请送给路由器B。再往后可以咨询路由器B。
路由控制表
为了将数据包发给目标主机,所有主机都维护着一张路由控制表
(Routing Table)。该表记录IP数据在下一步应该发给哪个路由器。IP包将根据这个路由表在各个数据链路上传输。
从路由控制表可以了解目标地址的方向。
数据链路的抽象化
IP是实现多个数据链路之间通信的协议,数据链路根据种类的不同各有特点,对这些不同数据链路的相异特性进行抽象化也是IP的重要作用之一。
不同数据链路有个最大的区别,就是它们各自的最大传输单位
(MAximum Transmission Unit, MTU)不同。
# 不同数据链路的最大传输单位 寄件人:将写有目的地详细地址(IP首部)的包裹单贴到包裹上交给邮递公司投递。如果包裹超重则分成多个包裹投递。 FDDI特快专递:一辆货车限重4352kg 以太网快递:一辆货车限重1500kg 收件人:收件人看到每个细分的包裹单,再将整个包裹还原。
MTU的值在以太网中是1500字节,在FDDI中是4352字节,而ATM则为9180字节。IP的上一层可能会要求传送比这些MTU更多字节的数据,因此必须在线路上传送比包长还要小的MTU。
为了解决这个问题,IP进行分片处理
(IP Fragmentation)。所谓分片处理是指将较大的IP包分成多个较小的IP包。分片的包到了对端目标地址以后会再被组成起来传给上一层。即从IP的上次层看,它完全可以忽略数据包在途中的各个数据链路上的MTU,而只需要按照源地址发送的长度接收数据包。
IP属于面向无连接型
IP面向无连接。即在发包之前,不需要建立与对端目标地址之间的连接。
为什么IP要采用面向无连接呢?主要有两点原因:一是为了简化,二是为了提速。面向连接比起面向无连接处理相对复杂,甚至管理每个连接本身就是一个相当繁琐的事情。此外,每次通信之前都要实现建立连接,又会降低处理速度。需要有连接时,可以委托上一层提供此项服务。因此,IP为了实现简单化与高速化采用面向无连接的方式。
为了提高可靠性,上一层的TCP采用面向有连接型。
IP提供尽力服务
(Best Effort),意指“为了把数据包发送到最终目标地址,尽最大努力。”然而,它并不做“最终收到与否的验证”。如果说IP只负责将数据发给目标机,那么TCP则负责保证对端主机确实接收到数据。
为什么不让IP具有可靠传输的功能,从而把这两种协议合并到一起呢?按照网络分层,明确定义了每层协议的作用和责任以后,针对每层具体的协议进行编程会更加有利于该协议的实现。
(最近更新:2019年09月18日)
来源:51CTO
作者:王山山
链接:https://blog.csdn.net/Watkins_OS/article/details/100973781