传输控制协议 Transmission Control Protocol
大部分应用使用的正是TCP传输层协议,比如HTTP应用层协议
TCP相比UDP多了许多特性,比如流量控制、超时重传、拥塞控制等,目的是保证数据包的可靠传输
TCP包头格式:
源端口号和目标端口号负责标识发送方和接收方的应用
序号解决包的乱序的问题
确认号负责确认发出去对方是否有收到,若没有需要重发直到送达,负责解决丢包的问题
状态位引起双方的状态变更,SYN发起连接、ACK回复、RST重新连接、FIN结束连接
TCP是面向连接的,因而双方要维护连接的状态
窗口大小,TCP要做流量控制,通信双方各声明一个窗口(缓存大小),标识自己当前能够处理的能力
TCP还需要做拥塞控制,控制自己发送的速度。
TCP传输数据之前,要先三次握手建立连接(双方计算机里维护一个状态机)
三次握手目的是保证双方都有发送和接收的能力
当传输层的数据包大小超过MSS(TCP最大报文段长度),就要将数据包分块,中途某个分块丢失或者损坏只需要重新发送该分块,不要重新发送整个数据包
在TCP协议中,每个分块称为一个TCP段(TCP Segment)
应用层的应用程序数据包括HTTP头部和消息体
TCP 报文中的数据部分就是存放 HTTP 头部 + 数据