TCP首部

TCP的数据被封装在一个IP数据报中:



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmVzdGxlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="font-family:新宋体; font-size:14px; orphans:2; widows:2">

TCP首部例如以下图所看到的:

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

以下以此解说这些字段的含义。

16位源port号、16位目的port号。用于寻找发送端和接收端应用进程。一个IP地址(IP首部)加一个port号(TCP首部)称为一个套接字。一对套接字可唯一确定一个TCP连接。

32位序号。

用来标识数据字节流中的字节,它的值表示该报文段中第一个数据字节的序号。当建立TCP连接时,发送主机选择一个初始序号ISN作为该字段的基准值。如果该值为x。那么发送SYN标识时的序号字段就为x。

当建立连接后,发送数据的第一个字节的序号为x+1。

也就是说发送SYN标识消耗了一个序号。

32位确认序号。表示接收端希望下一次接受到的序号。该字段必须在ACK标志为1时(连接建立后。ACK标识总是为1)才有效。

TCP能够表述为一个没有选择确认或否认的滑动窗体协议,什么意思呢,以下逐一解释:

  • 没有选择确认:当接收端成功收到序号为1-1024字节的数据后。发送一个确认序号为1025的ACK,期待下一次收到1025開始的数据。但如果下一次实际收到的却是2049-3072,那么接收端不正确这个报文段进行确认,而是继续发送确认序号为1025的ACK。也就是说,接收端必须按序确认,无法跳跃式的确认。
  • 无法对一个报文段否认:还是上述样例,如果接收端收到了1025-2048字节的报文段,但校验出错,那么接收端仅仅能继续发送确认序号为1025的ACK。而不能告诉发送方其他出错信息。

4位首部长度。

表示首部中32bit字的数目,假设首部为20字节(选项字段为空的情况下),该字段的值就为5。看了这么多的协议。能够得出规律:凡是长度可变的数据包中一般都包括长度字段。

6位标志比特:

  • URG:紧急指针有效
  • ACK:确认序号有效
  • PSH:接收方应该尽快将这个报文段交给应用层
  • RST:重建连接
  • SYN:用来发起一个连接
  • FIN:完毕发送任务

16位窗体大小。它的值表示用于TCP流量控制的窗体大小。

以后会具体说明。

16位检验和。强制性字段。

16位紧急指针。仅仅有URG标志置1时才有效,暂不讨论。

选项字段。最常见的选项字段是最长报文大小MSS,通常在建立连接时的SYN中设置这个选项,指明本端所能接收的最大长度的报文段。

最后的TCP数据部分是可选的。比如,在建立和断开连接的时候两方仅仅传送了TCP首部。

參考:

《TCP/IP具体解释》 P170-P173.

时间: 2024-10-12 20:52:54

TCP首部的相关文章

原始套接字-自定义IP首部和TCP首部

1 /* ===================================================================================== 2 * 3 * Filename: raw.c 4 * Description: 使用原始套接字发送TCP协议,并外带自己的数据. 5 * 6 * ====================================================================================*

TCP/IP详解--TCP首部选项字段的作用

1.TCP首部选项字段多达40B,记下一些常用的东西: 2.选项结束字段(EOP,0x00),占1B,一个报文段仅用一次.放在末尾用于填充,用途是说明:首部已经没有更多的消息,应用数据在下一个32位字开始处 3.无操作字段(NOP, 0x01),占1B,也用于填充,放在选项的开头 4.MSS(最大报文段长度),格式如下:种类(1B,值为2),长度(1B,值为4),数值(2B) 用于在连接开始时确定MSS的大小,如果没有确定,就用默认的(一般实现是536B) 5.窗口扩大因子,格式如下:种类(1B

TCP 首部格式

<图解TCP/IP> 6.7  TCP的首部格式 TCP中没有表示包长度和数据长度的字段.可由IP层获知TCP的包长由TCP的包长可知数据的长度. 源端口号:表示发送端端口号,字段长16位. 目标端口号:表示接收端端口号,字段长度16位. 序列号:字段长32位.序列号是指发送数据的位置.每发送一次数据,就累加一次该数据字节数的大小.序列号不会从0或1开始,而是在建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机.然后再将每转发过去的字节数累加到初始值上表示数据的位置.此外,

TCP报文格式和三次握手——三次握手三个tcp包(header+data),此外,TCP 报文段中的数据部分是可选的,在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。

from:https://blog.csdn.net/mary19920410/article/details/58030147 TCP报文是TCP层传输的数据单元,也叫报文段. 1.端口号:用来标识同一台计算机的不同的应用进程. 1)源端口:源端口和IP地址的作用是标识报文的返回地址. 2)目的端口:端口指明接收方计算机上的应用程序接口. TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接. 2.序号和确认号:是TCP可靠传输的关键部分.序号是本报文段发送

TCP 之 TCP首部

TCP首部图 TCP首部说明 源端口,目的端口 用于寻找发送端和接收端应用进程.(源IP,源端口,目的IP,目的端口) 四元组确定唯一一个TCP连接:(IP,端口)也称为一个插口(socket): 序号 标识从TCP发送端向TCP接收端发送的数据字节流,它标识在当前传输报文段中的第一个数据字节:需要是32比特的无符号数,序号达到2^32-1后又冲0开始: 当建立一个新连接时,SYN标志设置为1:序号字段包含由这个主机选择的初始序号ISN(Initial Sequence Number):该主机要

【转载】IP首部、TCP首部、UDP首部

[转载自]http://blog.csdn.net/hjffly/article/details/7959889 IP首部 版本:L3协议版本号,IPv4或IPv6 首部长度:单位为4字节 协议:L4协议类型 TTL生存时间字段设置了数据报可以经过的最多路由器数.一旦经过一个处理它的路由器,它的值就减1.当该字段值为0时,数据报就被丢弃,并发送ICMP报文通知源主机. 源端口号.目的端口号,用于寻找发送端和接收端应用进程. 32位序号:用于标识从TCP发端向TCP收端发送的数据字节流,表示在这个

TCP首部详解

SourcePort(源端口)和DestinationPort(目的端口):各占2个字节,端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口才能实现. 注:TCP的包是没有IP地址的,那是IP层上的事.但是有源端口和目标端口. SequenceNumber(序号):占4个字节,TCP连接中传送的数据流中的每一个字节都编上一个序号.序号字段的值则指的是本报文段所发送的数据的第一个字节的序号. AcknowledgmentNumber(确认号):占4字节,是期望收到对方的下一个报文段

TCP/IP详解--TCP首部选项中时间戳选项

一.简介 TCP时间戳选项会在TCP包头增加12个字节,以一种比重发超时更精确的方法来启用对RTT 的计算.   二.作用 1) TCP时间戳位于TCP选项中,kind=8:lenth=10:data由timestamp和timestamp echo两个值组成,各4个字节的长度. 2) TCP时间戳理论作用有3个:序列号回绕,乱序的时间判断依据,避免确认二义性,以及计算RTT. 3) TCP时间戳工作方式:双方各自维护自己的时间戳,时间戳的值随时间单调递增(规定为1ms-1s/次,常见值为1ms

TCP/IP协议及首部初了解

TCP/IP是Transmission Control Protocol/Internet Protocol的简写,是传输控制协议/互联网协议. a)协议结构包括链路层,网络层,传输层,应用层. 1)链路层主要负责物理设备特性,接收数据. 2)网路层主要负责传输层数据的ip首部封装,发送数据到网路接口,查看ip首部是否接收数              据或者继续传送数据. 3)传输层负责应用程序3次握手,4次断开. 一次握手:客户端发送序列号(例如是m)到服务器. 二次握手:服务器接收(m)并发