IP —— 网际协议

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ling_hun_pang_zi/article/details/82353829

IP —— 网际协议

参考资料《图解TCP/IP》

目录:

IP是TCP/IP协议族中最为核心的协议,所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。它为上层协议提供无状态、无连接、不可靠的服务。
主要作用就是在复杂的网络环境中将数据包发给最终的目标地址。实现“点对点的通信”。

不可靠指的是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。

无连接指的是IP并不维护任何关于后续数据报的状态信息,每个数据报的处理都是相互独立的。
这里写图片描述

IP头部格式

这里写图片描述
4位版本号:指定IP协议的版本,对于IPv4来说,就是4。

4位首部长度:指首部占32bit字的数目,包括任何选项。由于它是一个4 bit字段,因此首部最长为60字节。

8位服务类型(TOS):包括3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。

16位总长度:指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。

16位标识:唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。

3位标志:第一位保留(现在不用,说不定以后要用到)。第二位置为1,表示禁止分片,这时候,如果报文长度超过MTU,IP就会丢弃报文。第三位表示“更多的分片”,如果分片了的话,最后一个分片置为1,其它是0,类似于一个结束标记。

13位片偏移:是分片相当于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 *8 得到的,因此,除了最后一个报文之外,其它的报文的长度必须是8的整数倍。

8位生存时间(TTL):设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,这个字段主要用来防止出现循环路由。

8位协议:表示上层协议的类型。

16位首部校验和:使用CRC进行校验,来鉴别头部是否损坏。

32位源IP地址和32位目的IP地址:表示发送端和接收端。

IP地址

在TCP/IP通信时,用IP地址识别主机和路由器。为了保证正常通信,有必要为每个设备设置正确的IP地址。

IP地址(IPv4地址)由32位正整数来表示。IP地址在计算机内部以二进制方式被处理。但在日常生活中,我们并不习惯采用二进制的方式,一般用点分十进制的方式来看IP地址。

IP地址由“网络地址”和“主机地址”两部分组成。网络地址必须保证相互连接的每个段的地址不相重复,而相同段内相连的主机必须有相同的网络地址。IP地址的“主机地址”不允许在同一网络内重复出现。

由此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的IP地址都不会相互重叠,即IP地址具有了唯一性。

IP地址分为5类
这里写图片描述

下面这个表格详细表示了A、B、C三类地址所包含的主机数量。
这里写图片描述
我们可以看出,C类能够包含的最大主机数太少了,只有254个。

CIDR(无类型域间选路)

再接着,引入了一个额外的子网掩码来区分网络号和主机号。
一个IP地址的网络标识主机标识已不再受限于该地址的类别。这种方式将原来的A、B、C类等分类中的主机地址部分用作子网地址,可以将原网络分为多个物理网络的一种机制。
将子网掩码和IP地址进行AND计算,就可以得到网络号。

这时,人们开始放弃了对IP地址分类,采用任意长度分割IP地址的网络标识和主机标识,这种方式叫做无类型域间选路,简称CIDR。这种方式打破了原来设计的几类IP地址的做法,将32位IP地址一分为二,前面是网络号,后面是主机号。
例如:10.100.122.2/24,这个IP地址中有一个斜杠,斜杠后面有个数字24。这种地址表示形式,就是CIDR,后面的24的意思是,32位中,前面24位是网络号,后面8位是主机号。

再说一下广播地址的概念:

广播地址用于在同一个链路中相互连接的主机之间发送数据包,IP地址中的主机地址部分全部设置为1,就成为了广播地址。

在本网络内的广播叫做本地广播。
这里写图片描述
在不同网络内的广播叫做直接广播。
这里写图片描述

公网IP地址和私有IP地址

公网IP要求在整个互联网范围内保持唯一,但私有IP不需要,只要在同一个域里保证唯一即可。
这里写图片描述
不同的路由器,子网IP其实都是一样的,子网内的主机IP地址不能重复,但是子网间的IP地址就可以重复。

子网内的主机需要和外网进行通信时,路由器将IP首部的IP地址进行替换(替换成WAN口IP),这样逐级替换,最终数据包中的IP地址称为一个公网IP,这种技术叫做NAT技术

IP路由

由是指将分组数据发送到最终目标地址的功能。即使网络非常复杂,也可以通过路由控制确定到达目标地址的通路。一旦这个路由控制的运行出现异常,分组数据极有可能“迷失”,无法到达目标地址。因此,一个数据包之所以能够成功地到达最终的目标地址,全由路由控制。
这里写图片描述
路由表控制表中记录着网络地址与下一步应该发送到哪一个的路由器的地址。在发送IP包时,首先要确定IP包首部中的目标地址,再从控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。

在路由器表得出下一跳路由器的IP地址后,不是把这个地址填入IP地址数据报,而是送交给数据链路层的网络接口软件。网络接口软件负责把下一跳的路由器的IP地址转换成硬件地址(必须使用ARP),并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。

如果路由控制表中存在多条相同网络地址的记录,就选择一个最合适的网络地址。

IP路由选择是逐级跳进行的。IP并不知道到达目的地的完整路径(除了那些与主机直接相连的)。所有的IP路由选择只为数据传输提供下一站路由器的IP地址。
这里写图片描述

IP的分片与重组

如果IP层要传的数据比链路层的MTU还大,那么IP层就需要进行分片,把数据拆分成若干片,这样每一片都小于MTU。

把一份IP数据报分片以后,只有到达目的地才能进行重新组装。重新组装由目的端的IP层来完成,其目的是使分片和重组过程对运输层(TCP和UDP)是透明的,已经分片的数据报有可能会再次进行分片(可能不止一次)。IP首部中包含的数据为分片和重新组装提供了足够的信息。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/ling_hun_pang_zi/article/details/82353829