文章目录
TCP详解
零声学院TCP/IP训练营笔记。
协议头
TCP的头部结构为:
(1) 16位的源端口号/目的端口号
告知目的机器报文段来自哪里(源端口号)以及传给传递给哪个上层协议或者应用程序(目的端口号)。进行TCP通讯时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名端口号。在Linux系统中,一些知名服务使用的端口号定义在/etc/services中。
(2) 32位序号
一次TCP通讯(从TCP连接的建立到断开)整个过程中,一个传输方向上的字节流的每一个报文的编号。例如主机A和主机B进行TCP通讯,A发送给B的第一个TCP报文中,序号值就被系统设置为某个随机值(ISN, Initial Sequence Number),在该传输方向(A->B)的后续TCP报文的序号子将被系统设置为ISN加上该报文所携带的第一个字节在整个字节流的偏移。假设某个TCP报文段传输的数据是整个字节流中的第1024~2048字节,那么该报文的序号值为ISN+1025,下一个报文为ISN+2049。
(3) 32位的确认号
用于对对方发来的TCP报文段的响应,其值为收到的TCP报文段的序号值加1。
(4) 4位头部长度
标志该TCP头部具有多长,单位为字(4字节),可见TCP头部最长为60字节。
(5) 6位保留
(6) 6个标志位
① URG: 表示紧急指针是否有效
② ACK: 表示确认号是否有效(携带ACK标志的TCP报文段称为确认报文段)
③ PSH: 提示接收端应用程序要立即从TCP接收缓冲区读走数据,以腾出空间接收后续的数据。(若应用程序不读走数据,数据会一直留在TCP模块的接收缓冲区)
④ RST: 表示要求对方重新建立连接(携带RST标志的TCP报文段为复位报文段)
⑤ SYN: 表示请求建立一个连接(携带SYN标志的TCP报文段称为同步报文段)
⑥ FIN: 表示通知对方要关闭连接(携带FIN标志的TCP报文段为结束报文段)
(7) 16位窗口大小
这是TCP流量控制的一个手段。此处的窗口指的是接收