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

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 高性能服务器编程》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值