7.TCP/IP协议地11种状态:netstat -nap|grep 8001

[重点]为什么出现半连接状态F_WAIT_2?

主动关闭方,进入FIN_WAIT_2(半连接状态),一直不进入CLOSED状态,这是为什么呢?
答案:
	被动关闭方,在read返回0后,没有[显示]的调用close函数关闭套接字。
解决方案:
	查看被动关闭方的代码!
编程时,注意事项:
	当read返回0时,说明对方的socket已经主动关闭===>手动关闭连接的套接字

面试题

1.TCP/IP为什么要三次握手?
	
2.TCP/IP为什么要四次挥手?
	全双工通信管道的断开,需要断开两个方向

3.MSL最大分节声明周期
	一个IP数据包能在互联网上生存的最长时间,超过这个时间,IP数据包将在
网络种消失。

4.为什么使用setsockopt进行地址复用?
	防止重启服务器后,重启失败:此时服务器处于TIME_WAIT状
态,TCP/IP协议栈不允许处于TIME_WAIT状态的地址被bind。

5.主动关闭的一方,会进入TIME_WAIT状态(等待2MSL:最大生命时间)
[1]可靠的实现TCP全双工连接的终止
    在进行关闭连接四路握手协议时,最后的ACK是由主动关闭端发出的,如果这个
最终的ACK丢失,被动服务器将重发最终的FIN,[因此客户端必须维护状态信息允
许它重发最终的ACK]。如果不维持这个状态信息,那么客户端将响应RST分节,服
务器将此分节解释成一个错误。因而,要实现TCP全双工连接的正常终止,必须处
理终止序列四个分节中任何一个分节的丢失情况,主动关闭 的客户端必须维持状态
信息进入TIME_WAIT状态。
[2]允许老的重复分节在网络中消逝
	在关闭一个TCP连接后,马上又重新建立起一个相同的IP地址和端口之间的TCP连
接,后一个连接被称为前一个连接的化身,那么有可能出现这种情况,前一个连接的
迷途重复分组在前一个连接终止后出现,从而被误解成从属于新的化身。为了避免这
个情 况,TCP不允许处于TIME_WAIT状态的连接启动一个新的化身,因为TIME_WAIT状
态持续2MSL,就可以保证当成功建立一个TCP连接的时 候,来自连接先前化身的重复分
组已经在网络中消逝。

6.

猜你喜欢

转载自blog.csdn.net/weixin_36750623/article/details/83214647