18.2.3 TCP协议
原始的互联网使用的传输介质为电话线,计算机通过调制解调器将数值信号转为模拟信号,然后使用电流载波。因为电话线的噪声极大,很容易造成误码,因此TCP协议具有完善的循环校验机制。TCP是重要的传输层协议,必须保证数据传递的完整性。另外,数据包报文中有计算机端口号信息,可以用来区别同一计算机上不同应用程序的数据。
数据包是很小的数据单位,而通过网络传递的连续数据往往是数据包长度的很多倍。因此,数据包报文中还有一个顺序编号,使接收的计算机能够更具编号重新按顺序还原数据。TCP协议的另一个重要功能就是把大的数据切成较小的数据包,或者将接收到的数据包按顺序还原为原始数据。如果发现某一个数据包丢失了,TCP协议会向源计算机发送请求,要求重新传递丢失的数据包。这种处理能力,被称之为全双工。
TCP协议最小的处理单位为字节,因此TCP是面向字节的顺序协议。数据包内的每个字节都会被分配一个顺序编号,以及为了验证数据真实性的奇偶校验位。虽然这种做法传递了过多的冗余数据,但根本原因是由早期网络极为不可靠造成的。
为可靠的完成数据传输任务,TCP将报文或数据分成可管理的长度并加上TCP头,并定义一些主要的字段,如图18.7所示
图18.7 TCP报文结构
TCP报文中的字段定义如下。
q 源端口:源计算机指定的端口编号。
q 目的地端口:接收计算机的端口编号。
q 顺序号:分配给TCP包的编号。
q 应答号:接收计算机向源计算机发送的编号。
q 偏移位:指出TCP 头的长度(即TCP头中的32位字的数)。它表明数据开始和TCP头结束。对于正常的20 字节的头,这个字段设置成0101。
q 保留位:为将来使用而保留。必须设置为0。
q 控制位:用作个别控制位,如表18.1所示。
q 窗口号:窗口字段也称接收窗口大小,表示在TCP连接上准备由主机接收的8位字节的数目。
q 校验位:一个差错检验数,用于确定被接收的数据包文在传输期间是否被讹误。包括TCP头和所有数据。
q 紧急指针:它指出了紧接紧急数据的字节的顺序编号。
q 可选项:长度变量,它考虑到TCP使用的各种选项:选项表的结束、无操作、最大分段长度。
表18.1 TCP报头控制位指令
指 令 |
说 明 |
URG |
紧急指示字段 |
ACK |
如果设置,该包包含确认 |
PSH |
启用推入功能 |
RST |
恢复连接。用于一个功能不接收连接请求时 |
SYN |
用于建立同步序号 |
FIN |
数据不再从连接的发送点进入,结束总报文 |
TCP提供的主要服务有:
q 建立、维持和终结两个进程之间的连接。
q 可靠的包传递(经过确认过程)。
q 编序包(可靠的数据传送)。
q 控制差错的机制。
q 通过使用端口,允许在个别的源和目的地主机内部实现和不同进程多重连接的 能力。
q 使用全双工操作的数据交换。