IP首部
1. 引言
IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输,但是IP提供不可靠、无连接的数据报传送服务。
不可靠的意思是它不能保证IP数据报嫩成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。
无连接的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A达到之前先到达。
2. IP首部
IP数据报的格式如下,普通IP首部长为20个字节,除非含有选项字段:
上图中,最高位在左边,记为0bit;最低位在右边,记为31bit。
4个字节的32bit值以下面的次序传输:首先0~7bit,其次8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作big endian字节序。
由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称为忘了字节序。以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。
(1)4位版本:目前的协议版本号是4.
(2)4位首部长度:首部占32bit字的数目,包括任何选项,由于它是一个4比特字段,因此首部最长为60个字节。
(3)8位服务类型(TOS):包括一个3bit的优先权子字段,4bit的TOS子字段,1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用,4bit中同时只能置其中1bit为1,。如果所有4bit均为0,那就意味着是一般服务。
(4)16位总长度:指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据包最长可达65535字节,当数据报被分片时,该字段的值也随着变化。
(5)16位标识:唯一标识主机发送的每一份数据报,通常每发送一份报文它的值就会加1。
(6)3位标志
(7)13位片偏移
(8)8位生存时间:TTL设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1.当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。
(9)8位协议:识别是哪个协议向IP传送数据。
(10)16位首部检验和:根据IP首部的计算的检验和码。不对首部后面的数据进行计算,ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。如果检验和错误,IP就丢弃收到的数据报,但不生成差错报文,由上层去发现丢弃的数据报并进行重传。
(11)32位源IP地址
(12)32位目的IP地址
(13)选项:可变长的可选信息,选项字段都是以32bit作为界限,在必要的时候插入值位0的填充字节。这样就保证IP首部始终是32bit的整数倍(这是首部长度字段所要求的)。
(14)数据
IP首部的更多相关文章
- IP首部校验和的计算
ip抓包结果:0000: 00 e0 0f 7d 1e ba 00 13 8f 54 3b 70 08 00 45 00 0010: 00 2e be 55 00 00 7a 11 51 ac de ...
- IP首部校验和计算
根据RFC1071文档的计算方法,编写代码实现IP首部校验和的计算 计算步骤: 1.首先将IP首部中校验和字段置0 2.将IP首部每16bit进行相加,如果有进位产生,则将进位加到最低位. 3.将计算 ...
- 【转载】IP首部、TCP首部、UDP首部
[转载自]http://blog.csdn.net/hjffly/article/details/7959889 IP首部 版本:L3协议版本号,IPv4或IPv6 首部长度:单位为4字节 协议:L4 ...
- TCP/IP协议栈 --- 网络层(IP 首部 和分片)
IP 是TCP/IP协议栈中重要的层次, TCP UDP ICMP IGMP都是依赖IP层进行传输的.首先它是一种不可靠,无连接的协议.不可靠:它不保证IP包能正确到达目的地,无连接:表示IP并不会维 ...
- IP网际协议 - IP首部,IP路由选择,子网掩码
IP首部 4个字节的32 bit值以下面的次序传输:首先是0-7 bit,其次8-15 bit,然后1 6-23 bit,最后是24~31 bit.这种传输次序称作big endian字节序.由于T ...
- IP协议号 IP首部中有8位协议号,用于指明IP的上层协议.
IP协议号 IP首部中有8位协议号,用于指明IP的上层协议. 0 HOPOPT IPv6 逐跳选项 1 ICMP Internet 控制消息 2 IGMP Internet 组管理 3 GGP 网 ...
- 原始套接字-自定义IP首部和TCP首部
/* ===================================================================================== * * Filenam ...
- IP首部格式[转载]
TCP 传输首部是 IP首部,所以把IP首部格式 拿过来研究下,看IP首部解码过程: 来源:51CTO博客,地址:http://lihuan.blog.51cto.com/4391550/7999 ...
- Python socket编程之构造IP首部和ICMP首部
这两天在做一个实验需要自己构造IP首部,遇到诸多问题,搞了一天终于搞定. 关于socket的介绍网上一大堆,我只记录构造IP头时我遇到的问题.由于没玩过socket构造IP首部,网上找了段代码研究下, ...
- TCP/IP协议栈--IP首部选项字段的分析
IP输入函数(ipintr)将在验证分组格式(检验和,长度等)之后.确定分组是否到达目的地之前,对选项进行处理. 这表明分组所 遇到的每一个路由器以及终于的目的主机都对要分组的选项进行处理. IP分组 ...
随机推荐
- Android控件之HorizontalScrollView 去掉滚动栏
在默认情况下.HorizontalScrollView控件里面的内容在滚动的情况下,会出现滚动栏,为了去掉滚动栏.仅仅须要在<HorizontalScrollView/>里面加一句 ...
- 矩阵经典题目四:送给圣诞夜的礼品(使用m个置换实现对序列的转变)
https://vijos.org/p/1049 给出一个序列,含n个数.然后是m个置换,求对初始序列依次进行k次置换,求最后的序列. 先看一个置换.把置换表示成矩阵的形式.然后将m个置换乘起来.那么 ...
- ZH奶酪:PHP安装扩展imagick
明明几个简单命令就能搞定,但是按照网上的方法就是不行,弄了一天,最后发现只需要两行命令,而且不需要修改什么php.ini: sudo apt-get install php5-imagick sudo ...
- iOS 应用上传所需 Icon图片大小
iPhone-only Apps Include the following in your application's Resources group in the Xcode project: T ...
- HTML5 PACS 医学成像
http://ivmartel.github.io/dwv/ http://oviyam.raster.in/oviyam2.html https://github.com/ivmartel/dwv ...
- 关于ARM立即数的理解
转自:http://blog.sina.com.cn/s/blog_9bad4f090101e14d.html 一.立即数指令码的组成 ARM公司将32bit指令码分为如下两部分: 32bit立即数通 ...
- linux上安装BeatifulSoup(第三方python库)
1. 什么是beatifulsoup? beatifulsoup官网http://www.crummy.com/software/BeautifulSoup/ BeatifulSoup是用Python ...
- The Web Sessions List
The Web Sessions list contains the list of HTTP Requests that are sent by your computer. You can res ...
- VS2015 正式版中为什么没有了函数前面引用提示了?
HttpClient _httpClient = new HttpClient(); var clientId = Config.GetValue("AuthUser"); var ...
- ajax-原理分析
createTime--2016年9月19日13:59:11Author:Marydon参考链接 http://blog.csdn.net/csh624366188/article/details ...