TCP头部格式是什么

描述

在学习 TCP 连接之前,还要学习一下 TCP 头部格式。因为 TCP 连接建立,需要用 TCP 包来交换和管理数据,下面看一下 TCP头部格式。

通信

TCP 头部里每个字段都为管理 TCP 连接和控制数据流起了重要作用。

16 位端口号:告知主机该报文段是来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)的。

进行 TCP 通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号。所有知名服务使用的端口号都定义在/etc/services 文件中。

32 位序号(sequence number):一次 TCP 通信(从 TCP 连接建立到断开)过程中个传输方向上的字节流的每个字节的编号。

32 位确认号(acknowledgement number):用作对另一方发送来的 TCP 报文段的响应其值是收到的 TCP 报文段的序号值加1。

4 位头部长度(header length):标识该 TCP 头部有多少个 32bit ( 4 Byte 因为最大能表示 15 ,所以 TCP头部最长是 60 Byte。

6 位标志位包含如下几项:

URG 标志,表示紧急指针是否有效。

ACK 标志,表示确认号是否有效,一般称携带 ACK 标志的 TCP 报文段为“确认报文段”。

PSH 标志,提示接收端应用程序应该立即从 TCP 接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收到的数据读走,它们就会直停留在TCP 接收缓冲区中)。

RST 标志,表示要求对方重新建立连接,一般称携带 RST 标志的 TCP 报文段为“复位报文段”。

SYN 标志,表示请求建立 个连接,一般称携带 SYN 标志的 TCP 报文段为“同步报文段”。FIN 标志,表示通知对方本端要关闭连接了,一般称携带FIN 标志的 TCP 报文段为“结束报文段”。

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

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

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

综上,你需要注意如下几点:

TCP 的包是没有 IP 地址的,那是 IP 层上的事,但是有源端口和目的端口。

一个TCP 连接需要四元组( src_ip,src_port,dst_ip,dst_port )来表示是同一个连接 准确说是五元组,还有一个是协议但因为这里只是强调 TCP 协议,所以,只说四元组。

通信

Sequence Number 是包的序号,用来解决网络包乱序(reordering )问题。

Acknowledgement Number 就是 ACK ,用于确认收到,用来解决不丢包的问题。

Window Advertised Window ,也就是著名 的滑动窗口 Sliding Window ),用于解决流量控制问题。

TCP Flag ,也就是包的类型,主要是用于操控 TCP 的状态机的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分