TCP
传输控制协议,一种面向连接的、可靠的、基于字节流的传输层全双工 通信协议,由IETF的RFC 793定义
TCP连接的接口通常使用“套接字socket”来连接,每一条连接由两个端点socket进行点对点连接。格式为
$$socket=(IPAddress:port)$$
$$TCP={socketA,socketB}$$
特性:全双工、可靠信道、三次握手四次挥手,建立步骤成本高,适合用于不可靠的网络状况上。数据结构为报文段。面向字节流,“流”概念极大程度方便了应用层的工作。发心跳包以保持连接的持续性。
注意
- 一条虚连接而不是一条真正的物理连接
- TCP 对应用进程一次把多长的报文发送到TCP 的缓存中,TCP是不需要关心的
- TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节
- TCP 可把太长的数据块划分短一些再传送,也可等待积累有足够多的字节后再构成报文段发送出去
可靠交付
- 三次握手四次挥手
- 确认和重传机制
- 超时重传
- 滑动窗口
- 流水线传输 发送方可连续发送多个分组,不必每发完一个分组就停顿,下来等待对方的确认。 由于信道上一直有数据不间断地传送,这种传输方式可获,得很高的信道利用率
拥塞控制
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞
就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞
流量控制 往往指在给定的发送端和接收端之间的点对点通信量的控制 拥塞控制 防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载h
慢启动
设定指数增长的分片,到达阈值后平缓增长
避免拥塞
通过控制窗口值、慢启动阈值来调节平衡
快重传
丢失一些包的时候,会分开重新请求,不会影响其他的包的传输,思路类似多线程并发
快恢复
从连续收到三个重复的确认转入拥塞避免,把慢开始门限 ssthresh 减半。由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,拥塞窗口 cwnd 设置为慢开始门限 ssthresh 减半后的数值。
握手挥手