|
|
知识路径: > 计算机网络原理 > Internet 协议 > 传输层协议 TCP 与 UDP > TCP 协议 >
|
|
被考次数:2次
|
|
被考频率:
低频率
|
|
总体答错率:
59%
|
|
知识难度系数:
|
|
考试要求:
掌握
|
|
相关知识点:10个
|
|
|
|
TCP报文共分为TCP报头和TCP数据两个部分,如下图所示。TCP报头的前20个字节是固定的,后面有4×N个字节的选项(N为整数),因此TCP报头的最小长度是20字节。
|
|
|
|
|
|
(1)源端口(Sourece Port)和目的端口(Destination Port)这两个字段分别表示源和目的端口。TCP报文中源和目的端口字段加上IP报文中源和目的IP地址字段,构成一个4元组<源端口,源IP地址,目的端口,目的IP地址>,唯一地标识一个TCP连接。
|
|
|
(2)发送序号(Sequence Number)、确认序号(Acknowledgment Number)和通告窗口(Advertised Window)字段都在TCP滑动窗口机制中用到。因为TCP是面向字节流的协议,所以报文段中的每个字节都有编号。发送序号字段给出了该TCP报文段中携带的数据的第1个字节分配的编号(SYN标志位为0)。如果在TCP报文中SYN标志位为1,则序号字段表示初始序号(Initial Sequence Number,ISN)。确认序号给出了接收方希望接收的下一个TCP报文段中数据流的第1个字节的编号。确认序号字段只有在ACK标志位为1时有效,而一旦TCP连接建立好,则这个确认序号字段一直有效。通告窗口字段给出了接收方返回给发送方关于接收缓存大小的情况。
|
|
|
(3)头部长度(Header Length)字段表示TCP报头长度,以32位为单位。TCP报头之所以需要这个字段,是因为TCP报头有一个选项字段,而选项字段的长度是可变的。头部长度字段为4位,意味着TCP报头的最大长度是60字节;如果TCP报头没有选项字段,则TCP报头的最小长度是20字节。
|
|
|
(4)6位的标志位(Flags)字段用于区分不同类型的TCP报文。目前用到的标志位有SYN、ACK、FIN、RST、PSH和URG。
|
|
|
.SYN:这个标志位用于TCP连接建立。SYN标志位和ACK标志位搭配使用,当请求连接时,SYN=1,ACK=0;当响应连接时,SYN=1,ACK=1。
|
|
|
.ACK:ACK标志位为1时,意味着确认序号字段有效。
|
|
|
.FIN:发送带有FIN标志位的TCP报文后,TCP连接将被断开。
|
|
|
.RST:这个标志位表示连接复位请求,用来复位那些产生错误的连接。
|
|
|
.URG:URG标志位为1时,表示TCP报文的数据段中包含紧急数据,紧急数据在TCP报文数据段的位置由紧急指针(Urgent Pointer)字段给出。
|
|
|
.PSH:这个标志位表示push操作。所谓push操作是指当TCP报文到达接收端以后,立即传送给应用进程,而不是在缓存中排队。
|
|
|
(5)校验和(Checksum)字段与UDP中的校验和字段用法完全相同,它是通过计算整个TCP报头、TCP数据,以及来自IP报头的源地址、目的地址、协议和TCP长度字段构成的伪头部得来的。TCP报文段中的校验和字段是必需的。
|
|
|
TCP最常用的选项字段是最大分段长度(Maximum Segment Size,MSS),即最大的数据分段长度。每个TCP连接的发起方在第一个报文(为建立TCP连接而发送将SYN标志位置为1的那个TCP报文)中就指明了这个选项,其值通常是发送方主机所连接的物理网络的最大传输单元(MTU)减去TCP报头长度(TCP报头长度的最小值为20字节)和IP报头长度(IP报头长度的最小值为20字节),这样可以避免发送主机对IP报文进行分段。
|
|
|
MSS选项字段只能出现在SYN标志位为1的TCP报文(即TCP连接建立请求报文和连接建立响应报文)中。如果TCP连接的另一方不接受发起方给出的MSS值(即双方“协商”不成功),则发起方就将MSS设定为默认值536字节(这个MSS默认值加上20字节TCP报头,再加上20字节IP报头等于576字节,而这正是X.25广域网的MTU)。
|
|
|