目录
- 前言
- 12.1 TCP协议简介
- 12.2 TCP相关的一些概念词
- 12.2.1 MSL
- 12.2.2 MSS
- 12.3 TCP工作特性
- 12.3.1 面向连接
- 12.3.2 全双工通信
- 12.3.3 可靠性
- 12.3.4 缓冲机制
- 12.3.5 拥塞控制
- 12.3.6 基于字节流
- 12.3.7 其它机制
- 12.4 TCP报文
- 12.4.1 TCP报文段封装
- 12.4.2 TCP报文段格式
- 12.4.3 TCP伪首部
- 12.4.4 TCP选项字段
- 12.4.5 选项格式
- 12.4.6 wireshark报文分析
- 12.5 TCP状态变迁图
- 12.6 TCP连接与关闭
- 12.6.1 三次握手
- 12.6.2 四次挥手
- 12.6.3 同时打开
- 12.6.4 同时关闭
- 12.6.5 半关闭
- 12.7 窗口
- 12.7.1 窗口大小通告
- 12.7.2 拥塞窗口
- 12.7.3 发送窗口
- 12.7.4 接收窗口
- 12.7.5 糊涂窗口综合症
- 12.7.5.1 概念
- 12.7.5.2 原因
- 12.7.5.3 解决
- 12.8 拥塞控制&一些可靠算法
- 12.8.1 RTT和RTO计算
- 12.8.1.1 RTT测量
- 12.8.1.2 RTT估计器
- 12.8.1.3 RTT方差
- 12.8.1.4 RTO值计算
- 12.8.2 慢启动
- 12.8.3 拥塞避免
- 12.8.4 拥塞发生
- 12.8.4.1 超时重传
- 12.8.4.2 快速重传
- 12.8.5 快恢复
- 12.8.6 Nagle算法
- 12.8.7 延迟确认
- 12.8.1 RTT和RTO计算
- 12.9 四个定时器
- 12.9.1 重传定时器
- 12.9.2 坚持定时器
- 12.9.3 保活定时器
- 12.9.4 2MSL定时器
- 12.10 常用选项字段分析
- 12.10.1 MSS
- 12.10.2 SACK
- 12.10.3 WSOPT
- 12.10.4 TSOPT
- 12.10.5 UTO
- 12.10.6 TCP-AO
所以把原理篇和源码篇分开写 。
原文:https://www.cnblogs.com/lizhuming/p/16883586.html李柱明博客园:https://www.cnblogs.com/lizhuming/
12.1 TCP协议简介传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义 。
12.2 TCP相关的一些概念词12.2.1 MSLMSL :报文段最大生存时间,它是任何报文段被丢弃前在网络内的最长时间 。
- RFC 793 [Postel 1981c] 指出MSL为2分钟 。现实中的常用值是30秒,1分钟,或2分钟 。
参考:RFC 1122, chap 4.2.2.6
文章插图
12.3 TCP工作特性12.3.1 面向连接TCP是面向连接的传输层协议 。应用程序在使用TCP协议之前,必须先建立TCP连接 。在传送数据完毕后,必须释放已经建立的TCP连接 。
12.3.2 全双工通信在 TCP 连接建立后 , 那么两个主机就是对等的,任何一个主机都可以向另一个主机发送数据,数据是双向流通的,所以 TCP 协议是一个全双工的协议 。
12.3.3 可靠性TCP通过下列方式来提供可靠性:
- 报文段:应用数据被分割成TCP认为最适合发送的数据块 。由TCP传递给IP的信息单位称为报文段或段(segment) 。
- 确认与重传:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段 。接收端收到数据后 , 需要响应一个确认 。这个确认可以不是立即发送,通常将推迟几分之一秒(延迟确认) 。发送端如果超时也未能收到一个确认,将重发这个报文段 。
- 差错控制:
- 校验和:TCP会对TCP首部(包括伪首部)和TCP数据进行校验和验证 。这是一个端到端的检验和 , 目的是检测数据在传输过程中的任何变化 。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发) 。
- 丢弃重复报文:IP数据报会发生重复,TCP的接收端必须丢弃重复的数据 。
- 重排序:TCP报文段作为 IP 数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序 。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层 。
- 流量控制:TCP还能提供流量控制 。TCP连接的每一方都有固定大小的缓冲空间 。TCP的接收端只允许另一端发送 接收端缓冲区 所能接纳的数据 。(窗口)
在发送方想要发送数据的时候,由于应用程序的数据大小、类型都是不可预估的,所以TCP提供了缓冲机制来处理这些数据 。
在发送少量数据时,协议通常会延迟发送数据的时间,已缓冲到更多的用户数据后,组成一个合适大小的报文段再发送出去 。
推荐阅读
- vulnhub靶场之DOUBLETROUBLE: 1
- 亚索怎么玩呢(亚索大招怎么才能释放)
- 如何打好亚索(亚索的打法技巧)
- 无期迷途钻石获取途径有哪些
- 传奇九层妖塔祖玛阁怎么走(传奇祖玛阁攻略)
- 【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库
- 【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
- DNF里浓缩的异界精髓怎么获得(浓缩的异界精髓作用)
- 小孩沉迷手机网络游戏怎么办(儿童玩手机游戏沉迷怎么办)
- 带你了解NLP的词嵌入