TCP-IP协议详解学习笔记-- IP

时间:2023-01-07 23:12:31

注:本文图片均来自网络,若侵权请联系我删除

IP是计算机网络的“细腰”

一切运行在IP之上,IP运行在一切之上

TCP-IP协议详解学习笔记-- IP
其中值得注意的是,ICMP、IGMP协议等由IP封装,而ARP和RARP虽然也是IP协议族,但它们并不由IP封装(图中没有显示出来)

而,这种“细腰”结构,使上层程序员在编程时,底层网络实现对其均为透明;上下层的各种网络技术可以独立发展。

IP数据报格式

TCP-IP协议详解学习笔记-- IP

big endian字节序:又称作网络字节序,4个字节的32bit值以下面的次序传输,0-7bit –> 8-15bit –> 16-23bit –> 24-31bit

首部长度:以4字节为单位,一般为5(即首部的固定部分)

区分服务:即服务类型(TOS),包括一个3bit的优先权子字段(现已被忽略),4bit的TOS子字段(分别表示:最小时延、最大吞吐量、最高可靠性和最小费用,其中只有1位能置1),还有1bit未用位必须置为0。大多数TCP/IP实现都不支持TOS

总长度:指整个IP数据报的长度,以字节为单位

标识:在RFC791中认为这个字段应由上层来选择,而实际在大多数伯克利派生的系统中,每发送一个IP数据报,IP层都要把一个内核变量的值加1,不管其来自哪个上层。内核变量的初始值根据系统引导时的时间来设置

生存时间:TTL,记录的是跳数。当TTL为0时,该数据报即会被丢弃,并发送ICMP报文通知源主机。

标识、标志、片偏移均与IP分片相关,详见IP分片部分

IP分片(书中出现在UDP那章)

根据之前的知识,我们知道以太网帧的最大传输单元MTU为1500字节,而实际中IP数据报的长度可能会超过1500字节,所以就需要将IP数据报进行分片。

分片操作的位置:分片可能会在源主机进行,也可能会在路由器上进行。
分片的条件:大MTU的链路进入小的MTU链路,一定会进行分片。
分片的过程:分片仅仅划分数据报中的数据,片分组的首部信息从源分组获得,并做部分修改
分片重新组装:分片的重组仅发生在目的主机的网络层。仅到达目的主机后才会进行重组

下面用一个例子来具体说明一下IP的分片:

例:MTU = 1500 字节,IP数据报数据部分共 3500 字节
解:因为MTU的长度也包括首部长度,所以
MTU - 20 = 1480 字节
检验一下1480是否可以被8整除(因为片偏移字段是以8字节为单位的)
1480 / 8 = 185
3500 / 1480 = 2 ... 540
所以分为3
分片 标识 DF MF 片偏移
1 源分组标识 0 1 0
2 源分组标识 0 1 185
3 源分组标识 0 0 270

其中,DF和MF是标志位中的两位(标志位总共3位),片偏移代表片分组在源分组中的相对位置(以8字节为单位)

IP路由选择

功能
1. 搜索路由表,若找到匹配表目(可以是目标IP完全匹配,可以是与目标的网络号相匹配),则将报文发送至该表目指定的下一跳路由器或直接相连的接口
2. 搜索路由表,寻找标为“default”的表目。若找到,则把报文发送给该表目指定的下一跳路由器。

特性
1. 为一个网络指定一个路由器,而不必为每个主机指定一个路由器
2. IP路由选择是逐跳进行的

子网划分之类的

现在流行CIDR来划分网络, 子网掩码虽然还有在用,但是好像是为了更好理解吧。。这个具体放在后面的CIDR再讲