首页 理论教育 计算机网络TCP协议概述

计算机网络TCP协议概述

时间:2022-08-19 理论教育 版权反馈
【摘要】:其次,TCP协议还采用了超时重传机制,发送端在每发送出一个TCP报文段后均将启动一个定时器,如果在规定时间内未收到应答,则将重发该报文段。TCP 用序号对每个字节进行计数,发送序号的值表示报文段中的第一个字节是整个字节流中的第几个字节。

TCP是一种面向连接的、可靠的、基于字节流的传输层协议,使用TCP协议通信的双方必须首先建立连接,然后才能开始数据的传输,而且在通信完成后还要拆除连接,以释放占用的网络资源。此外,为了保证传输的可靠性,TCP还采用了确认机制,即,发送端发送的每个TCP报文段均必须得到接收方的确认才会被认为传送成功。其次,TCP协议还采用了超时重传机制,发送端在每发送出一个TCP报文段后均将启动一个定时器,如果在规定时间内未收到应答,则将重发该报文段。最后,因为TCP报文段最终是以IP分组发送的,而IP分组到达接收端时有可能乱序或重复,因此,TCP还会对接收到的TCP报文段进行重新排列整理,以保证报文段最终能够按照顺序交付给应用层

由于TCP是面向连接的,因此只能用于端到端的通信,通常,对可靠性要求比较高的服务一般使用TCP协议,例如:FTP、Telnet、SMTP、HTTP、POP3等。如图5.6所示,TCP报文段分TCP报头和TCP数据区两部分,其中,报头部分包括20字节的定长部分与可变长(≤40字节)的选项和填充部分,其中:

图5.6 TCP报文段格式

◆ 源端口(Source Port):长度为16比特(2字节),用于标识发送方进程的端口号,源端口和源IP地址相结合即可唯一标识报文的返回地址。

◆ 目的端口(Destination Port):长度为16比特,用于标识接收方进程的端口号,目的端口和目的IP地址相结合即可唯一标识报文的目的地址。

◆ 发送序号(Sequence Number):长度为32比特(4字节),用于标识TCP源端设备向目的端设备发送的字节流。TCP 用序号对每个字节进行计数,发送序号的值表示报文段中的第一个字节是整个字节流中的第几个字节。

◆ 确认号(Acknowledge Number):长度为32比特,用于标识期望收到的下一个报文段的第一个字节,并声明该字节之前的所有数据均已正确无误地收到,因此,确认号应该是上次已成功收到的字节序号加1。确认号字段只在ACK标志被设置时才有效。

◆ 数据偏移(Data Offset):长度为4比特,用于标识TCP头部的长度,TCP头部长度的单位是32比特(4字节)。由于TCP头部可能含有可变长的选项和填充内容,因此TCP头部的长度是不确定的。此外,TCP头部长度实际上也指示了数据区在报文段中的起始偏移值。

◆ 保留(Reserved):长度为6比特,目前未做定义,置为0,为将来定义新的用途保留。

◆ 控制位(Control Bits):包含6个1比特的标志位,其中,每一位标志均可打开一个控制功能。

①URG(Urgent Pointer Field Significant,紧急指针字段标志):表示TCP报文段的紧急指针字段有效,用来保证TCP连接不被中断,并且督促中间设备尽快处理这些数据。

②ACK(Acknowledgement field significant,确认字段标志):取1时表示应答字段有效,也即TCP应答号将包含在TCP段中,为0则反之。

③PSH(Push Function,推功能):表示Push操作,就是指在数据包到达接收端以后,立即送给应用程序,而不是在缓冲区中排队。

④ RST(Reset the connection,重置连接):表示连接复位请求,用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包。

⑤ SYN(Synchronize sequence numbers,同步序列号):表示同步序号,用来建立连接。

⑥ FIN(No more data from sender):表示发送端已经发送到数据末尾,数据传送完成,发送FIN标志位的TCP段,连接将被断开。

◆ 窗口(Window):长度为16比特,用于TCP流量控制,目的主机使用该字段告诉源主机从被确认的字节开始算起,下次可以发送多少字节。

◆ 校验和(Checksum):长度为16比特,用于错误检查,源主机与目的主机分别基于部分IP头信息、TCP头和数据内容计算出一个校验和。如果目的主机收到的报文段没有出错,则源主机与目的主机计算出的两个校验和应该是完全一样的,从而可借助该字段来证明数据的有效性。

◆ 紧急指针(Urgent Pointer):长度为16比特,是一个可选的指针,用于指示报文段内的最后一个字节位置,这个字段只在URG标志被设置时才有效。

◆ 选项(Option):至少1字节的可变长字段,用于标识哪个选项(如果有的话)有效。如果没有选项,则该字节等于0,说明选项的结束;若该字节等于1,则表示无须再有操作;若等于2,则表示下4个字节包括了源主机的最大报文段长度MSS(Maximum Segment Size),其中,MSS不包含协议的头部,只包含应用数据部分,TCP协议默认的MSS值为536字节。

◆ 填充(Padding):该字段中加入额外的零,以保证TCP头是32的整数倍。

常用的TCP端口号见表5.2。

表5.2 常用的TDP端口号

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈