码迷,mamicode.com
首页 > 其他好文 > 详细

IP协议解读(一)

时间:2015-08-10 12:02:06      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:网络编程   数据   通信   网络   tcp   

IP协议是TCP协议栈中的核心协议,也是网络编程的基础之一。

网络层概述

IP服务特点:

IP协议为上层协议提供无状态,无连接,不可靠的服务。

  • 无状态:IP通信双方不同步状态传输信息,因此所有IP数据报的发送和接收都是相互独立的,这样也就造成了它无法处理乱序,重复的IP数据报。相对于面向连接而设定的,例如TCP协议,它能够自己处理乱序,重复的报文段。他递交给上层的内容绝对是有序的正确的。但是IP协议的状态也是有优点的,它简单高效,因为我们无需为保证它的状态而分配一些内核数据结构。
  • 无连接:通信双方都不长久的维持对方的任何信息,那么就需要上层协议去指定传输的IP地址。
  • 不可靠服务:不可靠指的是IP协议不能保证IP数据报完整并且准确的到达接收端。因此使用IP的上层协议需要自己做数据确认,超时重传等可靠传输机制。

IPv4头部结构:

图一:

技术分享

IPv4头部结构包含20个字节。另外最多包含40个选项字节。

  • 4位版本号:指定IP协议的版本
  • 4位头部长度:标识有多少个四字节。
  • 8位服务类型(TOS):包括一个3位的优先权字段(现在已经被忽律),4位TOS字段(最小延时,最大吞吐量,最高可靠性,最小费用),1位保留字段。以上信息决定了IP协议的可弹性。
  • 16位总长度(字节数):整个IP数据报的长度。就是说IP数据报的最大程度就是2^16-1。因为MTU的限制。最大传输不可能达到这个值。

======分片传输实现原理=========

  • 16位标识别:唯一标识主机发送的每一个数据报。初始值有系统随机生成。每发送一个数据报,该值就+1.因此同一个数据报的分片都具有相同的标识值
  • 3位标志:

    (1)第一位是有保留的

    (2)第二位表示禁止分片(如果对这位进行了设置,IP模块将不会对数据报进行分片,所以可以想象一下我们刚才提到的,如果这个数据报的长度超过MTU,这段数据报就会被丢弃,返回ICMP差错报文)

    (3)第三位表示等多分片(除了IP数据报的最后一个分片外,其他分片都设置为1)。

  • 13位偏移:是分片相对原始IP数据报开始处的偏移。

这三个字段协同工作行形成了IP分段的功能。

=======================

  • 8位生存时间(TTL):它是数据报到达目的地前允许经过的路由跳数。在发送过程中,每经过一个路由,该值就减1.当TTL位0时,路由器会丢弃这个数据报,返回ICMP差错报文。它可以防止数据陷入路由循环。
  • 8位协议涌来区分上层协议。ICMP位1,TCP为6,UDP位17
  • 16位头部校验和:它是由发送端进行填充。接收端对其进行CRC校验算法,来检验头信息在传输过程中是否被损坏。
  • 32位原端IP:表示发送端IP
  • 32位目的IP:表示接受端IP
  • IPv4头部可变长的选项部分,最多包含401个字节,可选的IP选项包括:(1)纪录路由,(2)时间戳,(3)松散源路由选择,(4)严格路由选择 (这些的介绍会在以后进行分享)

版权声明:本文为博主原创文章,未经博主允许不得转载。

IP协议解读(一)

标签:网络编程   数据   通信   网络   tcp   

原文地址:http://blog.csdn.net/lastdays_l/article/details/47395921

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!