TCP 传输首部是 IP首部,所以把IP首部格式 拿过来研究下,看IP首部解码过程;
 
来源:51CTO博客,地址:http://lihuan.blog.51cto.com/4391550/799911 
 
原文如下:
 

IP包首部格式

IPv4首部一般是20字节长。在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016。 IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到60字节(总是4个字节4个字节的扩展)

0

4

8

12

16

19

24

31

版本

首部长度

服务类型

长度

认证

标志

段偏移量

TTL

协议

校验和

源IP地址

目的IP地址

选项 ...

IP包头字段说明

版本:4位,指定IP协议的版本号。

包 头长度(IHL):4位,IP协议包头的长度,指明IPv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数量的可选项,所以这 个字段可以用来确定IPv4数据报中数据部分的偏移位置。IPv4包头的最小长度是20个字节,因此IHL这个字段的最小值用十进制表示就是5 (5x4 = 20字节)。就是说,它表示的是包头的总字节数是4字节的倍数。

服务类型:定义IP协议包的处理方法,它包含如下子字段

过程字段:3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~ 7(网络控制)

延迟字段:1位,取值:0(正常)、1(期特低的延迟)

流量字段:1位,取值:0(正常)、1(期特高的流量)

可靠性字段:1位,取值:0(正常)、1(期特高的可靠性)

成本字段:1位,取值:0(正常)、1(期特最小成本)

未使用:1位

长度:IP包的总长

认证:

标志:是一个3位的控制字段,包含:

保留位:1位

不分段位:1位,取值:0(允许数据报分段)、1(数据报不能分段)

更多段位:1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)

段偏移量:当数据分组时,它和更多段位(MF, More fragments)进行连接,帮助目的主机将分段的包组合。

TTL:表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。

协议:8位,这个字段定义了IP数据报的数据部分使用的协议类型。常用的协议及其十进制数值包括ICMP(1)、TCP(6)、UDP(17)。

校验和:16位,是IPv4数据报包头的校验和。

源地址(Source Address,SA)

发送IP数据包的IP地址,占32位。

目的地址(Destination Address)

接收IP数据包的IP地址,也占32位。

选项(Options)+填充(Padding)

这两个选项较少使用,只有某些特殊的封包需要特定的控制才会利用到。共32位。这些选项通常包括:

? 安全和处理限制:用于军事领域

? 记录路径:让每个路由器都记下它的IP地址

? 时间戳:让每个路由器都记下它的IP地址和时间

? 宽松的源站选路:为数据报指定一系列必须经过的IP地址

? 严格的源站选路:与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址。

以上这些选项很少被使用,而且并非所有的主机和路由器都支持这些选项。选项字段一直都是以32位作为界限,在必要的时候插入值为0的填充字节。这样就保证IP首部始终是32位的整数倍(这是首部长度字段所要求的)。

从以上IP包头格式可以看出,IP协议包头大小也有两种:当没有“选项”这个字段时,为160位,20个字节;当有“选项”字段时为192位,24个字节。它与TCP协议包头大小是一样的。

IP首部格式[转载]的更多相关文章

  1. IP数据报首部格式

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

  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首部、TCP首部、UDP首部

    [转载自]http://blog.csdn.net/hjffly/article/details/7959889 IP首部 版本:L3协议版本号,IPv4或IPv6 首部长度:单位为4字节 协议:L4 ...

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

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

  6. TCP/IP笔记——TCP特点、首部格式、滑动窗口

    这次总结一下TCP相关的知识. TCP主要特点 面向连接:在通信前必须建立连接(只是逻辑上存在,而不是物理连接) 只能有两个端点:即只能一对一通信(所以通常p2p是用UDP实现的) 提供可靠交付服务: ...

  7. 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解

    转载:http://www.cnblogs.com/lifan3a/articles/6649970.html 以太网帧格式.IP数据报格式.TCP段格式+UDP段格式 详解   1.ISO开放系统有 ...

  8. 计算机网络(3)-----IP数据报格式

    IP数据报(IP Datagram) 格式 解析 (1)版本 占4位,指IP协议的版本.通信双方使用的IP协议版本必须一致.目前广泛使用的IP协议版本号为4(即IPv4). (2)首部长度 占4位,可 ...

  9. 详解TCP和UDP数据段的首部格式

    TCP数据段的首部格式: 源端口号(16) 目的端口号(16) 序列号(32) 确认应答号(32) 数据偏移(4) 保留(6) 代码位(6) 窗口(16) 校验和(16) 紧急指针 选项(长度可变) ...

随机推荐

  1. Hibernate缓存应用的积累与总结

    Hibernate缓存一直比较难掌握,下面就分析和总结原因,相信你就会慢慢清楚了原来Hibernate缓存也是可以轻松掌握的,但前提要求大家必须跟着动手去验证一下,再用心体会,光看是没有用的 目录: ...

  2. 使用JDBC向Kudu表插入中文数据乱码(转载)

    参考:https://cloud.tencent.com/developer/article/1077763 问题描述 使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文 ...

  3. Topic Model的分类和设计原则

    Topic Model的分类和设计原则 http://blog.csdn.net/xianlingmao/article/details/7065318 topic model的介绍性文章已经很多,在 ...

  4. TCP Socket Programming in Node.js

    TCP Socket Programming in Node.js Posted on October 26th, 2011 under Node.jsTags: Client, node.js, S ...

  5. thrift系列 - 快速入门

    1.简介           Thrift是当前流行的RPC框架之一,它有强大的代码生成引擎,可以跨语言,轻松解决程序间的通信问题. 本文旨在帮助大家快速入门,若想深入原理,请参见thrift官网:h ...

  6. go-ethereum

    如果要深入了解go-ethereum项目的实现与机制,看源代码是必不可少的.今天这篇博客就简单介绍一下如何在本地搭建项目的开发环境. GO语言环境搭建 以win8为例,访问地址https://gola ...

  7. (纪录片)电的故事 Shock & Awe The Story of Electricity

    简介: 导演: Tim Usborne主演: Jim Al-Khalili类型: 纪录片 / 传记 / 历史官方网站: www.bbc.co.uk/programmes/p00kjq6d制片国家/地区 ...

  8. 解决Android Studio无法下载sdk的问题

    因为google被墙了,android sdk无法下载.然后各种百度,都是说让设置代理,给的代理地址一般都是用的下面这个代理服务器: 大连东软信息学院镜像服务器地址: mirrors.neusoft. ...

  9. 用javascript请求动态页url返回更新

    例如我们用Ajax请求一个动态页返回的信息,或一个图片验证码请求一个*.ashx页面,第一次请求没问题,而第二次请求时,不变化,为啥? 因为第二次及以后请求的url与第一次是一样的,所以服务器(或是浏 ...

  10. 【医疗行业】关于dcm4che DICOM Toolkit:C-Move与C-Get

    在医学影像领域,DICOM标准与dcm4che的重要性毋庸置疑.幸好,这些开源的dcm4che DICOM 工具包,能对我们提供不少帮助. 在这里有很多的工具: Sources: https://gi ...