TCP协议的特点及TCP头部结构信息

2022-02-24 15:40:09 浏览数 (1)

TCP协议的特点: (1)相对于传输层的UDP协议,TCP协议的特点是面向连接的、可靠的传输和字节流。 (2)使用TCP协议通信的双方必须首先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上的数据传输。TCP是全双工通信,即双方的数据读写可以通过一个连接进行。完成数据交换后,通信双方必须断开连接以释放系统资源。 (3)TCP是端对端的,所以基于广播和多播的应用程序不能使用TCP服务,而无连接的UDP协议则非常适合于广播和多播。

TCP的头部结构

(1)16位端口号:告诉主机该报文段来自哪里以及传给哪个上层协议或应用程序(目的端口号)的。进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务器端口号。在/etc/services中可以查看相关服务的端口。 如http,ftp等。 著名的http和ftp服务的端口号位80和21。

(2)32位序号:一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向的字节流的每个字节的编号。(注意是每一个自己都由编号)。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系统初始化为某个随机值ISN。那么在该传输方向上(A -> B),后续的TCP报文段中序号值将被系统设置成ISN加上该报文段所携数据的第一个字节在整个字节流中的偏移。

(3)32位确认号:用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值 1。现在假设主机A于主机B进行TCP通信,那么A发送出的TCP报文段不仅携带自己的序号,而且还包含对B发送来的TCP报文段的确认号。反之亦然。

(4)4位头部长度: 用来标识TCP头部有多少个32bit字(4字节)。因为四位二进制数最大是15,所以TCP头部最长有60字节。

(5)6位标志位: URG:紧急指针。 ACK:标识确认号是否有效。 PSH:提示接受端应用程序应该立即从TCP接受缓冲区中读走数据,为接受后续数据腾出空间(如果应用程序不将接受到的数据读走,它们就会一直停留在TCP缓冲区中)。 RST:表示要求对方重新建立连接。将携带RST标志的TCP报文段称为复位报文段。 SYN:表示请求建立一个连接。将携带SYN标志的TCP报文段称为同步报文段。 FIN:表示通知对方本端要关闭连接了。将携带FIN标志的TCP报文段称为结束报文段。

(6)16位窗口大小:这是控制TCP流量的一个手段。这里的窗口,指的是接受通告窗口。它告诉对方本端的TCP缓冲区还能容纳多少位字节的数据,这样对方就可以控制发送数据的速度。

(7)16位校验和:由发送端填充,接受端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意:这里的检验不仅包括TCP头部,也包括数据部分。这是TCP传输可靠的一个重要保障。

(8)16位紧急指针:是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一个字节的序号。因此,确切的说,这个字段的紧急指针是相对于当前序号的偏移,不妨称之为紧急偏移。TCP的紧急指针是发送端向接受端发送紧急数据的方法。

参考《Linux 高性能服务器编程》

udp

0 人点赞