IP数据报头
版本 | 长度为4位,标识数据报的版本号,值为0100,表示IPv4; |
报头长度(Internet Header Length,IHL) | 长度为4位,单位为4个字节 ,该字段表示整个IP数据报头的长度 |
服务类型(Type of Service,ToS) | 长度为8位,指定特殊数据处理方式。该字段分为两部分:优先权和ToS。后来该字段被IETF改为区分服务(Differentiated Service,DS),该字段的前6位构成了区分代码点(Differentiated Services Code Point,DSCP)和后2位的显式拥塞通知(Explicit Congestion Notification,ECN)字段,DSCP用于定义64个不同服务类别,而ECN用于通知拥塞。 |
总长度 | 长度为16位,单位为1个字节,表示整个数据报的长度(数据报头+用户数据)。 |
标识符 | 长度为16位,同一数据报分段后其标识符一致,这样便于重装为原来的数据报。 |
标记 | 长度为3位,第一位不使用,默认为0;第二位为D标志,不可分段位;第三位位M标志,更多分段位,具体使用方法在数据报分段时介绍。 |
分片偏移 | 长度为13位,单位为8字节。该字段是标识所分片的分组,分片之后在数据报中的相对位置,具体使用方法在数据报分段时介绍。 |
生存时间 (Time to Live,TTL) | 长度为8位,用来设置数据最多可以经过几个路由器。由发送数据报的源主机设置,每经过一台路由器,其值减1,为0时丢弃该数据报并对源主机发送一个错误信息。 |
协议类型 | 长度为8位,指明IP所封装的上层协议类型。 |
头部校验 | 长度为16位,针对IP报头的纠错字段。校验和不计算被封装的数据,不同协议都有自己的校验和。 |
源地址 | 长度为4个字节,表示发送数据报的源主机地址。 |
目的地址 | 长度为4个字节,表示发送数据报的目的主机地址。 |
可选项 | 这是一个长度可变的字段。可选项被添加到包头中,包括源点产生的信息和其他路由器加入的信息,可选项字段主要用于测试。 |
填充项 | 该字段通过在可选项字段后面添加0来补足32位。这样保证报头长度是4个字节的倍数。 |
IP协议操作
IP数据报在传输过程中,因现实网络中的一些限制,需要对IP数据报做一些特殊操作。
数据报生存期
IP数据报在从源地址传输到目的地址的过程中,可能会经过无数个路由器。每经过一台路由器,路由器为了保证数据报能准确送达到目的地址,可能会复制多份数据报发往不同的路径上。如果不做限制,同一份数据报在传输过程中的数量会指数级上升,最坏的情况可能会在网络中无休止地巡回,不能到达目的地并造成大量的浪费。
为了解决这个问题,IP数据报引入了生存时间(TTL)。IP协议规定每个数据报在传输过程中有一定的生存期,生存期的长短由数据报经过的路由器决定。每经过一台路由器TTL的值便减1,当TTL的值到0时数据报丢弃,并对源地址发送一个错误报文(ICMP报文)。
数据报分段与重装配
每个网络可能规定了不同的最大分组长度(MTU)。当数据报在因特网中传送时,可能要进入一个MTU较小的网络,这是网络需要对数据报进行分段与重装配。
IP协议采用了五个字段处理分段与重装配问题:
- D标志:设定数据报是否可以进行分段,取值为0时,表示允许分段;取值为1时,表示不允许分段;
- 报文ID字段:唯一地标识了某个站某一个协议层发出的数据;
- 数据长度:即数据报长度;
- 偏置值:即分段在原来数据报中的位置;
- M标志:表示是否是最后一个分段。
分段与重装配步骤
当一个站发出数据报时,对长度字段的赋值整个数据报字段的长度、偏置值为0、M标志置False、D标志置False。
分段过程
①:对数据报的数据块进行划分,除了最后一段,每一段长度必须为8个字节的整数倍;
②:对得到的数据块分段加上原来数据报的IP头,组成短报文;
③:对第一个报文的偏置值置为0,其他报文的偏置值为他前边所有报文长度之和除以8;
④:最后一个报文的M标志置为0,其他报文置为1。
重装配过程
重装配的IP模块必须有足够大的缓冲区。整个重装配序列以偏置值为0的分段开始,以M标志为0的分段结束,全部由同一ID的报文组成。
差错控制与流控
无连接的网络操作不保证数据报的成功提交,当路由器丢弃一个数据报时,要尽可能地向源点返回一些信息。源点的IP实体可以根据收到的出错信息改变发送策略或者把情况报告上层协议。
路由器或接收站可以采用某种流控机制来限制发送速率。对于无连接的数据报服务,可采用的流控机制是很有限的。最好的办法也许是向其他站或路由器发送专门的流控分组,使其改变发送速率。
IP地址
IP地址一般是指IPv4地址。
组成
- 网络号:唯一地标识了一条物理链路或逻辑链路,对于与该链路相连的所有设备来说网络号部分是共同的;
- 主机号:唯一地标识了一条物理链路或逻辑链路上连接的具体设备。
表示方法
一般都采用点分十进制表示,32位的地址包含4个字节,每个字节均可以用0~255之间的十进制数表示,而每个十进制数之间用点号分隔。
地址分类
按照使用方式分类
-
共有地址(公网地址):由IANA统一分配,用于链接互联网。
-
私有地址(私网地址):可以自由分配,用于私有网络内部通信。
-
保留地址:有特殊作用,每一类地址的保留地址都有不同作用。
这三类地址必须跟A-C类地址一起才有意义,但是混在一起无法解释是什么意思
按照网络大小分类
A类网络
主要用于大型网络,32位地址的第一位固定为0。A类地址的第一个字节为网络地址,其他三个字节为主机地址。地址范围为0.0.0.0~127.255.255.255。
- 私有地址:范围为10.0.0.0~10.255.255.255。
- 共有地址:范围为1.0.0.0~9.255.255.255与11.0.0.0~126.255.255.255。
- 保留地址:A类地址的保留地址有两个范围。
-
范围为0.0.0.0~0.255.255.255,用做表示所有的IP地址(不知道是啥,先记着)。
-
范围为127.0.0.0~127.255.255.255,用做环回地址。
使用环回地址时会向自己发送数据包,发送到该地址是数据不会离开设备到达网络中,而是直接回送到本主机中。 该地址既可以作为目标地址,也可以作为源地址,是一个虚IP地址。
-
B类网络
主要用于大型网络,32位地址的第一位固定为10。B类地址的前两个字节为网络地址,后两个字节为主机地址。地址范围为128.0.0.0~191.255.255.255。
- 私有地址:范围为172.16.0.0~172.31.255.255。
- 共有地址:
- 保留地址:范围为169.254.0.0到169.254.255.255。如果PC机的IP地址是自动获取IP地址,而PC机在网络上又没有找到可用的DHCP服务器,这时PC机将会从169.254.0.0到169.254.255.255中临时获得一个IP地址。
C类网络
主要用于小型网络,32位地址的第一位固定为110。C类地址的前三个字节为网络地址,最后一个字节为主机地址。地址范围为192.0.0.0~223.255.255.255。
- 私有地址:范围为192.168.0.0~192.168.255.255。
- 共有地址:范围为192.0.0.0~192.167.255.255与192.169.0.0~223.255.255.255。
- 保留地址:没有。
D类网络
它并不指向特定的网络,这一类地址被用在多点广播(Multicast)中。32位地址的第一位固定为1110。D类地址不分网络地址和主机地址。地址范围为192.0.0.0~223.255.255.255。
-
私有地址;范围为239.0.0.0-239.255.255.255,用于测试。
-
共有地址:范围为224.0.1.0-238.255.255.255,用于其它组播。
-
专用地址:范围为224.0.0.0-224.0.0.255,用于网络协议组的广播。
D类地址的专有地址有特殊作用: 224.0.0.1代表所有主机与路由器; 224.0.0.2代表所有组播路由器; 224.0.0.5代表OSPF路由器; 224.0.0.6代表OSPF指定路由器/备用指定路由器; 224.0.0.7代表ST路由表
E类网络
它并不指向特定的网络,为将来使用保留。32位地址的第一位固定为11110。D类地址不分网络地址和主机地址。地址范围为240.0.0.0到255.255.255.254。