网际协议IP


网际协议IP

[TOC]

IP协议简介(lP- Internet Protocol)

  • 网际协议IP是TCP/IP最核心的协议,也是最重要的因特网标准协议之一
  • IP负责将数据包从源点交付到终点,所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。

IP的特性:

不可靠:不保证分组成功地送到目的站。任何可靠性的要求必须由上层协议实现。

无连接:IP并不维护任何后续分组的状态信息,每个分组都是相互独立的

尽最大努力交付:IP协议尽力发送每个分组,只有当资源用完或网络出现故障时才会发送失败

IP地址及表示方法:

IP地址:一个IP地址惟一地标识了Internet上的一台主机,IPv4协议使用32位地址,这表示地址空间是2^32。而IPv6协议使用128位地址,地址空间为2^128。
表示方法:点分十进制表示:每个字节用一个十进制数表示。

网络号:

D类地址和E类地址不划分网络号和主机号。

特殊的IP地址:

网络地址:主机号全0的IP地址,不分配给任何主机,作为网络本身的标识

广播地址:主机号为全1的IP地址,用作广播地址,目的地址为广播地址的数据包传递给该网络中的所有节点

有限广播地址:32位为全“1”的IP地址(255.255.255.255),通常由无盘工作站启动时使用,希望从网络IP地址服务器处获得一个IP地址

主机本身地址:32位全“0”的IP地址(0.0.0.0)称为主机本身地址

- 当一个主机要获得其IP地址时,可以运行一个引导程序,并发送一个以全0为源地址、以全1为目的地址的分组给引导服务器,以获得本主机的IP地址。

环回地址:27.0.0.1称为回环地址,可用来测试TCP/IP协议是否正常工作,常用于本机上软件测试和本机上网络应用程序之间的通信地址。

- 使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。
专用IP地址:

专用lIP地址:仅用于专用网内部的本地主机。
大多数路由器不转发携带专用IP地址的数据包,本地主机必须经网络地址转换服务器才能访问Internet。
专用IP地址范围:

子网划分:

Subnetting
提高IP空间的利用率,增加IP分配的灵活性。
从主机号借用若干个比特作为子网号subnet-id,而主机号host-id也就相应减少若干个比特

子网掩码:

子网掩码是一个网络号全1,主机号全0的32位二进制数,用于确定P中有多少位用于子网号。

- **~~表示方法~~**:点分十进制,IP地址后用`/`后面写明网络号的位数 - 子网掩码与IP地址**按位做与**得到IP地址对应的**网络地址**

IP数据格式:

IP数据报由首部和数据两部分组成

各字段的含义:

版本:4 bit,指IP协议的版本,目前的IP协议版本号为4(即IPv4)

首部长度:4 bit,以4字节为单位,因此IP的首部长度最大是60字节

服务类型: 8 bit,区分服务,一般不用。

总长度: 16 bit,首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度不能超过网络的最大传输单元MTU。

标识:16 bit,数据报计数器

IP软件在存储器中维持一个计数器,每产生一个数据报,计数器加1,并将此值赋给标识字段。
当数据报由于长度超过网络MTU而必须分片时,标识字段的值就被复制到所有的数据报分片的标识字段中。
相同的标识字段的值使分片后的各数据报片能正确重组成原来的数据报。

标志: 3 bit,目前只有两位有意义

  • 第一位保留。
  • 中间一位记为DF,为不分片标志,只有当DF=0时才允许分片。
  • 最后一位为MF,MF=1表示后面还有分片,MF=O表示这是最后一个数据报片。

偏移量:13 bit,较长的分组被分片后,某分片在原分组中的相对位置。片偏移以8个字节为单位。每个分片的长度必须是8的整数倍。

生存时间:8 bit,记为TTL (Time To Live)

  • 表明数据报在网络中的寿命,其单位为秒。现在TTL的单位是跳数,指明数据报在因特网中至多可经过多少个路由器,最大值为255,通常为32、64、128。

  • 当TTL值为1时,表示这个数据报只能在本局域网内传送,因为这个数据报传送到局域网上的某个路由器,在被转发之前TTL值就减小到0,因而会被路由器丢弃。

协议: 8 bit,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给对应的进程处理。

首部检验和:16 bit,检验数据报的首部,不包括数据部分。采用简单的16位反码求和的计算方法。

源IP地址: 32bit,定义了源主机的IP地址。在IP数据包从源主机传送到目的主机期间,该字段保持不变。

目的IP地址: 32bit,定义了目的主机的IP地址。在IP数据报从源主机传送到目的主机期间,该字段保持不变。

IP数据报分片:

数据包可能经过多个不同的网络,每一个路由器把收到的帧进行拆装,处理后又封装成另一个帧。
收到帧的格式与长度取决于这个帧刚经过的物理网络所使用的协发
送出去的帧的格式与长度取决于这个帧将要经过的物理网络所使用的协议。

最大传输单元MTU:不同网络所能传送的数据包的最大长度是不同的,这个最大长度叫做最大传输单元MTU ( Maximum Transmission Unit )

MTU即该网络的数据链路层帧的数据部分的最大长度。

分片:

  • 对于物理网络,如果数据包的长度超过了MTU,就要把数据部分进行分片。

  • 每个分片都有自己的首部。

  • 如果已经分片的数据包要经过更小MTU的网络,那么这些已经分片的数据包还可再进行分片,数据包在到达最后终点之前可以经过多次的分片。

  • 数据包可以被源主机或在其路径上的路由器进行分片,但是数据包的重装只能在目的主机上进行。

重组

目的主机进行分片重组

IP规定,数据报分片的重组地点是目的主机,中间路由器不对任何被分片的数据报进行重组,即使其转发接口的MTU非常大。

优点:
简化了路由软件的操作,提高了路由器的处理效率。
可以避免重复分片。在数据报投递过程中,途经网络的MTU是不可预知的

缺点
浪费带宽。因为每个分片都要有一个首部,分片越多,首部开销越大。
增加了数据包丢失的可能性。分片越多,丢失的可能性越大。一旦丢失了一个分片,整个数据报就必须重新传输。

分片重组:

有关的三个字段是:标识字段、标志字段和偏移量字段。

当目的主机收到一个数据报时,可以根据偏移量和MF位判断:

  • 片偏移不为0,表明它是一个分片;
  • 如果片偏移为0,且MF位为1,表明它是第一个分片;
  • 如果片偏移为0,且MF位为0,则表明它是一个完整的数据报。

根据数据报首部“标识”字段的值,可判断哪些分片属于同一个原始数据报片偏移用来确定分片在原始数据报中的位置。

重组定时器:

为防止因等待一个丢失的分片而无限期延长重组过程,在重组分片时启动一个定时器,如果超时后仍然没有收到一个数据报的全部分片,则该数据报被丢弃。
IP数据报校验和:

校验和:数据包上的附加信息,能够识别数据包在传输过程中是否出错。

发送端先计算校验和,并把得到的结果与数据包一起发送出去。接收端对数据包进行同样的计算。若结果正确,则接受这个数据包,否则就丢弃它。

校验和的计算:

发送端:将数据包按16位分段。把这些段用反码算术运算相加,将相加后得到的和再取反码就得出了校验和。
接收端:把收到的数据包按16位分段,并把这些段相加。得到的和取反码。若结果为0,则接受这个数据包,否则拒绝这个数据包。

说明:

IP数据包的校验和只校验IP首部部分而不校验IP数据部分。

  • 首先,所有将数据封装在IP数据报中的高层协议,都有覆盖整个数据包的校验和。因此,IP数据报的校验和就不必再检验所封装的数据部分。
  • 其次,每经过一个路由器,IP数据包的首部就要改变一次,但数据部分不改变。因此若校验和包含数据部分,这就意味着路由器要花费很多时间计算没有改变的数据部分的校验和。

文章作者: 十二惊惶
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 十二惊惶 !
  目录