TCP协议详解——Linux高性能服务器

TCP协议较IP协议更为接近应用层,在应用程序中有更强的可操作性。
传输层协议主要有两个:TCP、UDP。

TCP服务的特点

面向连接、字节流和可靠传输
面向连接:使用TCP协议通信双方要先建立连接才能开始数据的读写。连接双方都要为连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。完成数据交换后通信双方必须断开连接以释放资源。
TCP连接是全双工的,双方的数据读写可以通过一个连接进行。
TCP协议的连接是一对一的,基于广播和多播的应用程序不能使用TCP服务。
字节流:应用程序对数据的发送和接收没有边界限制。
可靠的:TCP协议采用发送应答机制,发送端发送的TCP报文段都必须得接收到应答才认为这个报文传送成功;采用超时重传机制,发送端在发送一个报文后启动定时器,一定时间内没收到应答将重发报文段;TCP报文段最终以IP数据报发送【IP数据报可能乱序、重复】,TCP协议对接收到的TCP报文段重排、整理后才交给应用层。
与UDP区别

  • UDP适合多播和广播发送端
  • 应用程序每执行一次写操作,UDP模块就将其封装成一个UDP数据报并发送。接收端必须及时对每一个UDP数据报执行读操作,否则就会丢包(较慢服务器)且如果用户没有指定足够的应用程序缓冲区来读取UDP数据,则UDP数据将被截断。
  • UDP与IP协议一样,提供不可靠服务,需要上层协议进行数据确认和超时重传

TCP字节流服务:

UDP数据报服务:

TCP头部结构

用于指定通信的源端端口号、目的端口号,管理TCP连接,控制两个方向的数据流。

固定头部


16位端口号:告知主机该报文段的源端口以及目的端口。进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号
32位序号:一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系统初始化为某个随机值ISN (初始序号值)。那么在该传输方向上,后续的TCP报文段中序号值将被系统设置成ISN加上该报文段所携带数据的第一个字节在整个字节流中的偏移。
32位确认号:用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1.假设主机A和B进行TCP通信,那么A发送出的TCP报文段不仅携带自己的序号,而且包含对B发送来的TCP报文段的确认号。
4位头部长度:标识TCP头部有多少个4字节。 因为4位最大能表示15,所以TCP头部最长是60字节。
6位标志位包含如下几项:

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

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

16位校验和:由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。这个校验不仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的一个重要保障
16位紧急指针:是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,称之为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。

头部选项

TCP头部最后的选项字段是可变长的可选信息,这里最多包含40字节【60字节-20字节的固定部分】
TCP头部选项结构:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值