1、源端口号、目的端口号、包的序号、确认序号(确认)、状态位、窗口大小(流量控制)。。。
状态位:SYN(发起一个连接)、ACK(回复)、RST(重新连接)、FIN(结束连接)。TCP是面向连接的,因而双方要维护连接的状态,这些带状态位的包的发送,会引起双方状态变更。
2、TCP协议的重点有五个问题:连接维护(三次握手、四次挥手)、顺序问题、丢包问题(超时重传、快速重传)、流量控制(滑动窗口)、拥塞控制(拥塞窗口)。
3、等待的时间设为 2MSL,MSL是Maximum Segment Lifetime,报文最大生存时间,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
4、状态图==》很重要!
两次握手:A之前发了一个包一直在游荡,A和B建立连接通信结束后,这个包又回到了B,如果B也认为它是正常的请求,就会建立连接,显然这是不能进行下去的。
累计确认
TCP 也需要发送端和接收端分别都有缓存来保存这些记录。
发送端的滑动窗口分为四部分、接收端分为三部分。
超时重传、快速重传
拥塞的表现形式是丢包==》重传(两种)。
慢启动、超时重传、快速重传、快速回复。
TCP的拥塞控制主要用来避免两种现象:包丢失和超时重传。但TCP 的拥塞控制主要来避免的两个现象都是有问题的。
(1)丢包并不代表拥塞了,比如带宽不满也会丢包;
(2)TCP 的拥塞控制要等到将中间设备都填充满了,才发生丢包,从而降低速度,这时候已经晚了。其实 TCP 只要填满管道就可以了,不应该接着填,直到连缓存也填满。
为了优化这两个问题===》TCP BRR拥塞算法,企图找到一个平衡点,通过不断的加快发送速度,将管道填满,但是不要填满中间设备的缓存。很好的达到了高带宽好低时延的平衡。
顺序问题、丢包问题、流量控制都是通过滑动窗口来解决的
拥塞的一种表现形式是丢包,需要超时重传
TCP 的拥塞控制主要来避免两种现象,包丢失和超时重传。(可以回想一下交换机的结构,里面有缓存来存储消息,如果缓存太小,包会丢失;缓存太大,会超时)