多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## TCP 概念 TCP( Transmission Control protoco:传输控制协议),TCP协议是计算机网络中非常复杂的一个协议 ## 特点 - TCP是面向连接的协议 - TCP的一个连接有两端(点对点通信) - TCP提供可靠的传输服务 - TCP协议提供全双工的通信 - TCP是面向字节流的协议 ![](https://img.kancloud.cn/67/87/678786472d246a108b0f741bfc6109f9_1562x654.png) ## 协议解析 ### 序号 - 0~2^32-1 - 一个字节一个序号 - 数据首字节序号 ### 确认号 - 0~2^32-1 - 一个字节一个序号 - **期望收到数据的首字节序号** >[info] 确认号为N:则表示N-1序号的数据都已经收到 ### 数据偏离 - 占4位:0~15,单位为:32位字 - 数据偏离首部的距离,因为**TCP选项**是可变长,所以需要通过数据偏离确定数据开始的实际位置 ### TCP标记 占6位,每位各有不同意义 | 标记 | 含义 | | --- | --- | | URG | Urgent:紧急位,URG=1,表示紧急数据 | | ACK | Acknowledgement:确认位,ACK=1,确认号才生效 | | PSH | Push:推送位,PSH=1,尽快地把数据交付给应用层 | | RST | Rest:重置位,RST=1,重新建立连接 | | SYN | Synchronization:同步位,SYN=1表示连接请求报文 | | FIN | Finish:终止位,FN=1表示释放连接 | ### 窗口 - 占16位:0~2^16-1 - 窗口指明允许对方发送的数据量 > 比如窗口的值是1000,确认号是501,则可以发送的数据为 501-1500 ### 校验和 与UDP一致 ### 紧急指针 - 紧急数据 (URG=1) - 指定紧急数据在报文的位置 ### TCP选项 - 最多40字节 - 支持未来的拓展