1.TCP的主要特点
(1).TCP的面向连接的运输层协议;
(2).每一条TCP连接只能有两个端点(endpoint),是点到点之间的连接,每一个端点称为套接字(socket),套接字socket=(IP地址:端口号)。
(3).TCP提供可靠支付的服务;
(4).TCP提供双工通信;
(5).面向字节流。
2.TCP报文段的首部格式
尽管TCP是面向字节流,但是TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两个部分,而TCP的全部功能都体现在它首部中各字段的作用。
TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项。因此TCP首部的最小长度为20字节。
TCP报文段首部如下图所示
固定部分的介绍如下:
(1).Souce Port:源端口。
(2).Destination Port: 目的端口。
(3).Sequence Number: 序号,表示本报文段所发送的数据的第一个字节的序号。
(4).Acknowledge Number:确认号,期望收到对方下一个报文段的第一个数据字节的序号;若确认号等于n,则表示序号为n-1为止的所有数据都已经正确的收到了。
(5).Data Offset:数据偏移,报文段的数据起始位置距离报文段的起始位置的距离,单位为32位字。
(6).Reserved:保留
(7).URG:紧急位,当该位为1时,表明紧急指针(Urgent Pointer)有效。当URG置1时,发送应用程序进程就告诉发送方的TCP有紧急数据要传送。于是,发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。要与紧急指针(Urgent Pointer)配合使用。
(8).ACK:仅当ACK=1时,确认号(Acknowledge Number)才有效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
(9).PSH:即PUSH,推送,发送方把PSH位置1时,TCP立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后才向上交付。
(10).RST:复位,当RST=1时,表明释放连接,然后再重新建立连接。RST置1还用来拒绝一个非法报文段或拒绝打开一个连接。
(11).SYN:即Synchronization,同步,在建立连接的时候用来同步序号的。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则在响应的报文段中使SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或连接接受报文。
(12).FIN:终止,用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放连接。
(13).Window:窗口,指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口值告诉对方,从本报文段首部中的确认号(Acknowledge Number)开始,报文接收方目前运行发送的数据量。
(14).Check Sum:校验和,用于检查收到的数据是否有错。
(15).Urgent Point:紧急指针。仅在URG=1时有效,它指出了紧急数据的末尾在报文段中的位置。即使窗口为0时,也可以发送紧急数据。
(16).Options:选项,长度可变,最长可达40个字节。当没有使用选项时,TCP的首部长度是20个字节。
这些报文段各个部分在TCP建立连接、TCP数据传输和TCP断开连接时,会出现不同的状态,特别是六个标志位:URG,ACK,PSH,RST,SYN和FIN。TCP连接的建立和断开将在后面介绍。
参考文献
谢希仁, 计算机网络(第五版): 电子工业出版社, 2007.
版权所有,欢迎转载,转载请注明出处,谢谢
版权声明:本文为博主原创文章,未经博主允许不得转载。