`
sabolasi
  • 浏览: 910243 次
文章分类
社区版块
存档分类
最新评论

TCP/IP数据报格式

 
阅读更多

IP数据报格式

IP数据报(datagram)的头部格式如下:

Example Internet Datagram Header

Version4 bits

版本字段标明建立数据报的IP版本,目前的IP版本是IPv4,IPv6正在发展中。IPv40100

IHL4 bits

IP数据报头部长度(Internet Header Length),度量单位为4 Bytes32 bits),因此IHL始终是4 Bytes32 bits的整数倍,最长可达15 * 4 = 60个字节。IHL最小值为5(即20 Bytes),为不含填充字段和选项字段的最常见的IP数据报头格式。

Type of Service8 bits

服务类型,有3 bitsPrecedence1 bitDelay1 bitThroughout1 bitRelibility2 bitsReserved组成。

其值一般为0x00,表示Routine+Normal Delay+Normal Throughout+Normal Relibility

Total Length16 bits

总长度字段是指整个IP数据报的长度,以字节为单位。理论上,IP数据报最长可达2^16-1=65535 Bytes64KB)。IP数据长度由该字段值减去IHL值计算得到。

Identification16 bits

标识符是发送者为了接收者重组数据报的依据。当一个IP数据报比较大时,可能会被切分成多个数据包(fragments)分多次发送(此时Flags的第二位将置0,第三位置1),接收端依据该字段进行组包。

Flags3 bits

The internet modules use fields in the internet header to fragment and reassemble internet datagrams when necessary for transmission through "small packet" networks.

该字段用于分段控制。

0位为预留位。

1位表示是否分段,当值为0时,表示数据报将分段;当值为1时,表示数据报不分段(Don't Fragment)。

2位为段是否还有后续fragment,当值为0时,表示该段是原数据报的最后一段;当值为1时,表示后面还有更多的分段(More Fragments)。

当网络设备要发送的数据报长度比所在网络的最大传输单元(MTUMax Transfer Unit)大,并且标志位的第1位被置1,即为不分段时,网络设备会向发送方返回一个因特网控制消息协议ICMP错误消息,并丢弃该数据报。除了最后一个分段外,其余分段的第2位均设置为1

Fragment Offset13 bits

段偏移字段用于指定该分段在原始数据报中的位置,以8 Bytes为度量单位。

Time to Live8 bits

用于指定数据报允许保留在网络上的时间。计量单位为秒,在网络中每被处理一次该值就减小一次。当该值为0时,该数据报将会被销毁。

Protocol8 bits

用于指定数据报数据区中携带的消息是由哪种高级协议建立的。ICMP1,TCP6UDP17

Header Checksum16 bits

IP报头校验和。参考:校验和的计算

Source Address32 bits

IP地址。

Destination Address32 bits

目的IP地址。

Optionsvariable

可变长可选项。

Paddingvariable

4字节边界(填零)对齐。

// 定义ip报头数据结构

typedef struct _iphdr

{

byte ver_len; // 版本4,头长度4,报头长度以32位为一个单位

byte type; // 类型8

byte length[2]; //总长度,16,指出报文的以字节为单位的总长度,报文长度不能超过65536个字节,否则认为报文遭到破坏

byte id[2]; // 报文标示,用于多于一个报文16

byte flag_offset[2]; // 标志,3 数据块偏移13

byte time; // 生存时间,8

byte protocol; // 协议,8

byte crc_val[2]; // 头校验和,16

byte src_addr[4]; // 源地址,32

byte tar_addr[4]; // 目标地址,32

byte options[4]; // 选项和填充,32

}IP_HEADER;

TCP报文格式

传输控制协议(TCP)向上与用户应用程序进程接口,向下与网络层协议IP接口。用户应用程序采用首先调用TCP(或UDP),然后将应用程序数据递交给TCP这一方式,在IP网络上传送数据。TCP将这些数据打包分段并调用IP模块向目的主机传送每个数据段。接收方的TCP将段中的数据放入接收缓冲区,然后将段重装(reassemble)为应用程序数据,再将这些数据发送到目的的应用程序进程。

尽管TCPUDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。

TCP提供一种面向连接的、可靠的字节流服务。TCP数据包(package)的头部格式如下:

TCP Header Format

Note that one tick mark represents one bit position.

Source Port16 bits

源端口。

Destination Port16 bits

目的端口。

Sequence Number32 bits

在这个报文段中的第一个数据字节的序列号。SYN报文的序列号为初始化序列号(ISN),第一个TCP数据包的序列号为ISN+1

SEQ为对TCP包序列号,其数值为上一次对方发过来的ACK加上本次发出去的数据量。即SEQ2 = ACK1+send

Acknowledgment Number32 bits

只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个序列号。在[SYN,ACK]报文中,ACK=ISN+1

ACK为对上一次的响应(response)和对下一次的期待(expectation),其数值为上一次对方发过来的SEQ加上本次接收到的数据量。即ACK2 = SEQ1+recv

Data Offset4 bits

头部长度/4Byte,即头部长度占了多少个32 bits。没有任何选项字段的TCP头部长度为20字节;TCP头部长度最大为6015*4)字节。

Reserved6 bits

预留给将来使用,必须设置为0

Control Bits6 bits (from left to right)

URG: Urgent Pointer field significant紧急指针有效位。

ACK: Acknowledgment field significant确认序号有效位。

PSH: Push Function接收方应该尽快将这个报文段交给应用层。

RST: Reset the connection重建连接。如果主机接收到未经请求就进入的数据,接收到不符合预期的ACK,就会用它来重置。

SYN: Synchronize sequence numbers发起一个连接。

FIN: No more data from sender,关闭一条连接。

Window16 bits

用来进行流量控制的滑动窗口,单位为字节数。滑动窗口大小为接收方向发送方通知本机当前能够接收的最大数据量。发送方下次发送来的超出滑动窗口的数据将被接收方丢弃。

Checksum16 bits

对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。

Urgent Pointer16 bits

它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。只有当URG标志为1时,紧急数据才有效。

Optionsvariable

可能包括"窗口扩大因子""时间戳"等可选项。

Paddingvariable

4字节边界(填零)对齐。

// 定义TCP报头

typedef struct _tcphdr

{

byte source_port[2]; // 发送端端口号,16

byte dest_port[2]; // 接收端端口号,16

byte sequence_no[4]; // 32位,标示消息端的数据位于全体数据块的某一字节的数字

byte ack_no[4]; // 32位,确认号,标示接收端对于发送端接收到数据块数值

byte offset_reser_con[2]; // 数据偏移4位,预留6位,控制位6

byte window[2]; // 窗口16

byte checksum[2]; // 校验码,16

byte urgen_pointer[2]; // 16位,紧急数据指针

byte options[3]; // 选祥和填充,32

}TCP_HEADER;

参考:

IP数据报格式

TCP报文格式

分享到:
评论

相关推荐

    TCP/IP协议详解卷二:实现

    第二十三章 UDP:用户数据报协议 第二十四章 TCP:传输控制协议 第二十五章 TCP的定时器 第二十六章 TCP输出 第二十七章 TCP的函数 第二十八章 TCP的输入 第二十九章 TCP的输入(续) 第三十章 TCP的用户需求 第三十...

    TCP/IP教程TCP/IP基础

    9.4 理解用户数据报协议(UDP) 85 9.4.1 UDP头结构 85 9.4.2 UDP能做什么 85 9.4.3 TCP和UDP 86 9.5 小结 86 第10章 IPv6 87 10.1 IPv6数据报 87 10.1.1 优先级分类 88 10.1.2 流标识 89 10.1.3 128位IP地址 89 ...

    《TCP/IP详解,卷1:协议》

    第11章 UDP:用户数据报协议 107 第12章 广播和多播 128 第13章 IGMP:Internet组管理协议 136 第14章 DNS:域名系统 142 第15章 TFTP:简单文件传送协议 159 第16章 BOOTP: 引导程序协议 163 第17章 TCP:传输控制...

    TCP/IP协议与网络编程技术

    主要内容有IP数据报格式、IP层的功能、IP地址、ICMP协议、地址转换协议并介绍了IP的最新版本IP v6等。 第4章:介绍TCP/IP协议层次结构中传输层及其相关知识。主要内容有端口的概念、TCP协议和UDP协议的协议数据格式...

    TCP/IP技术大全

    9.4 理解用户数据报协议(UDP) 85 9.4.1 UDP头结构 85 9.4.2 UDP能做什么 85 9.4.3 TCP和UDP 86 9.5 小结 86 第10章 IPv6 87 10.1 IPv6数据报 87 10.1.1 优先级分类 88 10.1.2 流标识 89 10.1.3 128位IP地址 89 ...

    TCP/IP详解(卷一)

    第11章 UDP:用户数据报协议 107 第12章 广播和多播 128 第13章 IGMP:Internet组管理协议 136 第14章 DNS:域名系统 142 第15章 TFTP:简单文件传送协议 159 第16章 BOOTP: 引导程序协议 163 第17章 TCP:传输控制...

    TCP/IP数据

    TCP/IP数据报文的结构体,包括UDP ,TCP, IP, ARP,以太网物理祯结构

    TCP/IP详解 卷1完整版

    第11章 UDP:用户数据报协议 107 11.1 引言 107 11.2 UDP首部 107 11.3 UDP检验和 108 11.3.1 tcpdump输出 109 11.3.2 一些统计结果 109 11.4 一个简单的例子 110 11.5 IP分片 111 11.6 ICMP不可达差错(需要分片) ...

    TCP/IP详解卷 pdf格式

    第11章 UDP:用户数据报协议 107 11.1 引言 107 11.2 UDP首部 107 11.3 UDP检验和 108 11.3.1 tcpdump输出 109 11.3.2 一些统计结果 109 11.4 一个简单的例子 110 11.5 IP分片 111 11.6 ICMP不可达差错(需要分片) ...

    TCP/IP实验 数据包分析 实验数据

    TCP/IP 实验 数据包分析 实验数据 TCP/IP 实验 数据包分析 实验数据 TCP/IP 实验 数据包分析 实验数据

    TCP/IP技术大全(中文PDF非扫描版)

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    TCPIP安全 TCP/IP是Internet实现通信的核心

    在IP层定义了一个标准的包格式和协议,所有上层通信如TCP,UDP,ICMP等都被封装在一个IP数据报中,在网络层应用的协议在主机到主机的通信中起到了帮助作用。绝大多数安全威胁 并不来自于TCP/IP的这一层。

    TCP-IP技术大全

    IP协议家族 77 9.1 TCP/IP模型 77 9.1.1 解剖TCP/IP模型 78 9.1.2 协议组件 78 9.2 理解网际协议(IP) 79 9.2.1 IPv4结构 79 9.2.2 IP做什么 80 9.3 理解传输控制协议(TCP) 81 9.3.1 TCP头...

    tcp/ip详解

    tcp/ip详解全书pdf,绝对高清! 1.1 引言 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但T C P / I P协议 族允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远远超出了起初的...

    TCP/IP详解 卷1:协议--源代码

    第11章 UDP:用户数据报协议 107 11.1 引言 107 11.2 UDP首部 107 11.3 UDP检验和 108 11.3.1 tcpdump输出 109 11.3.2 一些统计结果 109 11.4 一个简单的例子 110 11.5 IP分片 111 11.6 ICMP不可达...

    TCP/IP详解卷1:协议

    第11章 UDP:用户数据报协议 107 11.1 引言 107 11.2 UDP首部 107 11.3 UDP检验和 108 11.3.1 tcpdump输出 109 11.3.2 一些统计结果 109 11.4 一个简单的例子 110 11.5 IP分片 111 11.6 ICMP不可达差错(需要分片) ...

    51单片机TCP/IP源代码

    //--------------------------------------------------------------------------- ...// ... if (rcve_buf_allocated) //如果分配数据空间成功(数据空间没有释放) { free(inbuf); //释放数据空间 ...

    TCP/IP详解 (卷2:实现)

     然后我们介绍一个简单的用户程序,它发送一个UDP数据报给一个位于另一主机上的日期,时间服务器,服务器返回一个UDP数据报,其中包含服务器上日期和时间的ASCIl码字符串。这个进程发送的数据报经过所有的协议栈...

    网络协议TCP/IP实验二IP 协议分析实验、IP 数据报分片实验

    湘潭大学网络协议TCP/IP实验二 IP协议分析实验、IP 数据报分片实验,仅供参考

Global site tag (gtag.js) - Google Analytics