网络编程基础知识02

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxt_1/article/details/85269558

1.TCP首部

在这里插入图片描述

2.TCP三次握手、四次挥手

在这里插入图片描述

3.TCP状态转换

在这里插入图片描述

  • 当前状态可以通过netsta命令查看
  • FIN_WAIT_1 ——> TIME_WAIT:处于FIN_WAIT_1状态时直接收到带确认信息的结束报文段(而不是先收到确认报文段,再收到结束报文段)
  • TIME_WAIT:
 存在原因:
 	1.可靠地终止TCP连接
 	
 	【看下图:若报文段7丢失,那么服务器将重新发 snog结束报文段,因此处于TIME_WAIT状态下的客户端可以处理收到重复结束报文段这个情形。否则,客户端将发送RST报文段回应服务器,服务器则认为这是一个错误,因为它预期收到报文段7】
 	
 	2. 保证让迟来的TCP报文段有足够时间被识别并丢弃
 	
 	【Linux下端口默认无法复用,就是因为连接处于TIME_WAIT状态。如果不存在TIME_WAIT状态,则应用程序能够立即建立一个和刚关闭的相同端口的新连接,这个新连接可能接受到属于原来的连接的数据。】

2MSL:
	TCP报文段最大生存时间是MSL,保持2MSL确保网络上两个传输方向上尚未被接受到的、迟到的TCP报文段都已经消失(被中转路由器丢弃)。
FIN_WAIT_2: 半关闭状态,主动关闭链接的一方,发出FIN收到ACK以后进入该状态。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zxt_1/article/details/85269558