TCP/IP协议栈 之 IP协议

来源:互联网 发布:mac air怎么看内存 编辑:程序博客网 时间:2024/04/28 19:01

      主机到网络层的协议对应于OSI的数据中路层、对于硬件及其驱动层TCP/ IP协议没有进行规范。网络层主要为IP协议和ARP协议提供服务、发送和接收网络数据报。在这一层中主要实现跨网和跨设备的互通。以太网的封包格式为:

         目的地址(6字节) +  源地址(6字节) +  包类型(2字节) +  数据(46~1500字节)+  CRC(4字) 

 

      以太网用48bit(6字)来示源地址和目的地址(这里的地址指的是硬件地址。如:MAC地址)。

 

      数据大小范围是46个字节到1500个字节,不足的要用空字符填满(如:ARP协议的数据格式为28个字节,为了符合规范,其后18个字节的占位符用于满足最少46个字节的要求)。数据段的长度有一个最大值,以太网为1500,这个特性称为MTU,即最大传输单元。如IP层有一个要传送的数据长度比MTU大,在IP层数据要进行分片,使得每个片都小于MTU。   

 

      CRC字段 用于对帧内数据进行校验,保证数据传输的正确性,通常由硬件实现,例如在网卡设备中实现网络数据的CRC校验。

 

IP协议

      IP协议是TCP/IP协议中最重要的协议,它为TCP、UDP、ICMP等协议提供传办理的通路。IP层的主要目的是提供子网的互联,形成较大的网络,使不同的子网之间能传输数据。

      IP层主要有如下作用:

  •       数据传送:将数据从一个主机传输到另一个主机。
  •       寻址:根据子网划分和IP地址,发现正确的目的主机地址。
  •   路由选择:选择数据在互联网上的传送路径。
  •   数据报文的分段:当传送的数据大于MTU时,将数据进行分段发送和接收并组装。

   IP数据的头部长度为20个字节,具体格式如下: 

  0                                                                                    15  16                                                      31  

版本 (4 位 )头长度 (4 位 )服务类型( 8 位)总长度( 16 位)标识( 16 位)标识( 3 位)片偏移( 13 位)生存时间 TTL(8 位 )协议类型( 8 位)头部校验和( 16 位)源 IP 地址( 32 位)目的 IP 地址( 32 位)选项( 32 位)

 

数据

 

 

 

 

 

 

 

 

 

 

 


   1、版本

      IP协议的版本号,长度为4位,规定网络所实现的IP版本,例如,如果主机为IPv4协议,此字段的值为4,而IPv6协议此字段的值为6。

 

      2、首部长度

      首部长度指的是IP字段除去数据和选项的整个头部的数据长度,以32位(即:4个字节)为单元计算。首部长度值为:5 - 15,即IP数据头最大长部为20 - 60个字节。

 

      3、服务类型(TOS)

  IP的服务类型字段长度为8位。此字段包含3位的优先权(现在已经忽略),4位的服务类型子字段和1位的保留位(必须置0)。4位的服务类型分别为最小延迟(D)、最大吞吐量(T)、最高可靠性(R)、最小费用(F)。这4位中最多只有一个位置可以为1,如果全为0表示一般服务。

      优先权字段3位(该字段目前已被忽略)。它允许传输站点的应用程序设定向IP层发送数据报文的优先权。该字段与D、T、R、F相结合,确定应采取哪种路由方式。

      服务类型字段由应用程序进行设置,路由器仅在必要时进行读取,不进行设置。

 

      4、总长度

     总长度字段是16位,表示以字节为单位的数据报文长度,长度包含IP 的头部和数据部分。由于数据位段是16位,所以IP数据报文最大可达到65535个字节的长度。

 

     5、标识和偏移

     IP每发一份数据报文都会填写一个标识用来表示此数据包,发送完后此值会加1。在IP进行分片的时候,将标识复制的IP 的头部表示数据报文的来源,还要加上分片数据在原数据报文中的偏移地址,便于之后进行组装。利用字段总长度和片偏移可以重新组装IP的数据报文。总长度指出原始包的总长度,片偏移指出该包位于正在组装的IP的报文的偏移量,偏移量从头部开始计算。

 

    6 、生存时间(TTL)

    TTL(Time To Live)字段的值表示数据报文最多可以经过的路由器的数量。它指定数据报文的生存时间,源主机发送数据时设置TTL(一般为32或64),经过一个路由器TTL 的值减1。当TTL为0的时候,路由器丢弃此包,并发送一个ICMP报文通知源主机。TTL的出现是由于在包的传递过程中可能会出现错误情况,引起包在Internet的路由器之间不断循环。为了访止此类事件发生,因而引入了TTL限制报文经过路由器的个数。

 

      7 协议类型

    该字段为8位长度,表演示IP 承载的是什么高级协议。在封包和解包的过程中,TCP/IP协议栈知道将数据发给哪个层的协议做相关的处理,字段的值分别表示各协议类型(ICMP、IGMP、TCP、UDP)。

 

      8 校验和

      校验和是一个16位长度的数值,使用循环冗余校验生成,其作用是保证IP 帧的完整性。发送端发送数据的时候要计算CRC16校验值,填入此字段; 接收端会计算IP的校验值与此字段进行匹配,如果不匹配,表示此帧发生错误,将丢弃此报文。在路由的过程中,由于每经过一个路由器都要修改TTL的值,所以需要重新计算CRC16,将结果填入此字段中。

 

      9 源地址和目的地址

      源地址表示发送数据的主机或者设备的IP地址,目的地址为接收数据的主机IP地址。这两个院段均为32位长度。字段的目的用于识别Internet上的主机。

 

     10 IP选项

     IP选项字段是一个32b的字段,该选项用来识别IP的数据段是正常数据还是用做网络控制的数据。主要有如下定义:

  • 安全和处理限制。
  • 路径记录:记录所经历路由器的IP地址。
  • 宽松源站路由:指定数据报文必须经历的IP地址,可以经过没有指定的IP地址。
  • 严格的源站路由:指定数据报文必须经历的IP址址,不能经过没有指定的IP地址。


0 0
原创粉丝点击