TCP协议
TCP协议
注意TCP协议面向字节流
(0-99为100B,1-100为100B)
看好序号的开始和结束,序号也会占一个字节,序号为0就是一个字节,0-9就是十个字节。
注意序号与确认号的关系,
- 序号+数据的有效载荷就等于确认号,确认号是上一个TCP报文的最后一个序号+1
- 确认号是无差错时对面下一次要发送的序号。
TCP链接的释放(四次挥手)
- 第一个RTT,客户提出释放连接,由客户向服务器发送报文段(客户FIN置1)(进入FIN-WAIT1 终止等待1状态);服务器进行确认(进入CLOSE-WAIT 关闭等待状态),确认数据到达后,客户机进入FIN-WAIT2 终止等待2状态。
- 第二个RTT,服务器在等待无数据发送后,服务器向客户发送链接释放报文段(服务器FIN置1)(进入LAST-ACK 最后确认状态),客户收到报文段后,给服务器发送确认报文段,进入TIME-WAIT状态,等待两个MSL(最长报文段寿命)后,客户进入CLOSED链接关闭状态。服务器在收到客户发出的确认报文段后进入CLOSED链接关闭状态。
在通信时ACK都为1,三次握手时SYN都为1
拥塞窗口最初为1。
即第一轮传输RTT时,传输的报文段长度为1。在第一轮RTT结束即收到确认后(第二轮RTT开始时),拥塞窗口值为2(慢开始算法),第二轮传输长度为2,第三轮传输为4……
- 可知,例如在经历3个RTT后,第三个RTT传输时的拥塞窗口值为4,第三个RTT确认后(结束时)也是第四个RTT开始时,拥塞窗口值为8,第四轮传输值最大为8。
网络拥塞后,阈值降低为拥塞时拥塞窗口值的二分之一,注意拥塞时一个RTT,拥塞后在下一个RTT开始时降为1开始(慢开始)或从阈值开始(快恢复)。