IP协议提供不可靠、无连接的数据报传送服务。

  • 不可靠:尽力而为地传输,不保证IP数据报能成功到达目的地。
  • 无连接:每一个数据报之间相互独立地进行路由选择,可不按发送顺序接收。
IP首部格式例如以下:

以下就用这幅图结合Wireshark来分析个字段含义。

这次截取的是DNS数据报,它位于应用层。


首先看一下整个IP首部的内容:



相应的原始数据:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmVzdGxlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">


以下按字段分别进行说明。

4位版本号表示眼下的协议版本号号。这里使用的是IPv4,当然值就是4啦。


4为首部长度表示首部包括多少个4字节。相应Header length字段的20字节,但依据原始数据能够看出。这个字段实际值应该是5,也就是有5个4字节,共20字节。


8位服务类型包含最小延迟、最大吞吐量、最高可靠性等性能指标。

这里全为0表示一般服务。


16位总长度是指整个IP数据报的长度。以字节为单位。这里为514字节。

注意这一长度仅仅是包括在以太网帧中的IP数据报的长度,不包括以太网帧开头的目的地址(6字节)、源地址(6字节)、类型(2字节)。


16位标识唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就加1,这一字段主要用来分片和重组。

3位标识。在分片和重组时用到,这里暂不讨论。

13位片廉价。

在分片和重组时用到,这里暂不讨论。


8位生存时间表示该数据报能够经过的最多路由器数。经过一个路由器值减1。减到0则丢弃该数据报。并发送ICMP报文通知源主机。

8位协议域,分别有:
  • 1表示ICMP协议
  • 2表示IGMP协议
  • 6表示TCP协议
  • 17表示UDP协议
我们这里是UDP协议。从而能够知道。DNS协议执行于UDP之上。

16位首部检验和。详细怎样校验这里不讨论。当校验值有误时,IP层丢弃收到的数据报,但不生成差错报文,由上层去发现丢失的数据报并进行重传。


接下来就是32位的源IP加上32位的目的IP。这里没什么好说的。

最后的选项字段非常少被使用,这里就不讨论了。

參考:
《TCP/IP具体解释》 P24-P27.

IP数据报首部格式的更多相关文章

  1. IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  2. (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  3. 网络层 IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  4. IP数据报首部解析

    IP数据报首部的格式,普通20字节. 4位版本号:当前4--IPv4. 4首部长度:首部长度 8位服务类型TOS: 3bits(优先权)+ 4bits(类型--最小延迟+最大吞吐量+最高可靠性+最小费 ...

  5. IP数据报的格式

    1. IP数据报首部的固定部分中的各字段 ①版本:占4位,指IP协议的版本.通信双方使用的 IP协议版本必须一致.日前广泛使用的 IP协议版本号为 4 (即 IPv4). IPv6 目前还处于起步阶段 ...

  6. IP数据报首部校验和算法

    当用google搜索IP数据报首部校验和算法的时候,总是看到的是代码,没有看到其过程,于是就有了此文,如有错误请指正.文章省略一点,呵呵   IP/ICMP/IGMP/TCP/UDP等协议的校验和算法 ...

  7. IP数据报首部checksum的计算

    IP数据报首部checksum的计算 2009年02月22日 23:23:00 zhangyang0402 阅读数:10897   一.首先区别下面两个概念:(1)one's complement:正 ...

  8. Linux - IP数据报报头及个字段的意义

    IP数据报的格式: IP 数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍. 对于IPv4 ,4位版本字段是4. (1)版本 占4位,指IP协议的版本.通信双方使用的IP协议版本必须一致. ...

  9. IP数据包格式详解(转)

    摘自:http://blog.163.com/hlz_2599/blog/static/1423784742011112195857956/</> TCP/IP协议定义了一个在因特网上传输 ...

随机推荐

  1. oracle create directory

    1.新建directory的语法 CREATE [OR REPLACE] DIRECTORY directory AS 'pathname'; 例如: create or replace direct ...

  2. java date类型和calendar类型区别

    Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date ...

  3. Spring-IOC源码解读3-依赖注入

    当容器已经载入了BeanDefinition的信息完成了初始化,我们继续分析依赖注入的原理,需要注意的是依赖注入是用户第一次向IOC容器获取Bean的时候发生的,这里有个例外,那就是如果用户在Bean ...

  4. 使用Eclipse+axis2一步一步发布webservice

    1.下载axis2相关软件http://axis.apache.org/axis2/java/core/download.html 2.Java环境配置:JAVA_HOME.JRE_HONE.PATH ...

  5. 巴蜀2904 MMT数

    Description FF博士最近在研究MMT数. 如果对于一个数n,存在gcd(n,x)<>1并且n mod x<>0 那么x叫做n的MMT数,显然这样的数可以有无限个. ...

  6. 【BZOJ3224】普通平衡树(splay)

    题意: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排 ...

  7. Virtualization基础

    官方文档学习 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Virtualization_G ...

  8. 【转】3年PHPer的面试总结

    [转]3年PHPer的面试总结 算法# 1.反转函数的实现# /** * 反转数组 * @param array $arr * @return array */ function reverse($a ...

  9. android图片上传

    package com.example.center; import java.io.ByteArrayOutputStream;import java.io.InputStream; import ...

  10. JS基础之BOM对象

    BOM 对象 JavaScript分为 ECMAScript,DOM,BOM. BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其 ...