传智扫地僧课程学习笔记。
很多操作,是在应用底层操作的,
为什么三次握手,
因此全双工通信,两端都要确认。
学socket编程,关键是理解tcp/ip内部的状态机理,
学指针使用,关键是理解内存布局使用,
执行主动关闭的那一端,进入TIME_WAIT状态,
之前服务器关闭后,再次启动,提示端口占用,
是因为仍然处于TIME_WAIT状态,
为什么要主动关闭close两次,
来做个实验先,
比如主动关闭服务器,则服务器会进入FIN_WAIT_2,
而客户端进入CLOSE_WAIT状态,
再次强调,全双工,即我们看来的一次互相通信,在内核建立中维护着两条链接,
那为什么,客户端,没有close掉呢?在我们的代码中,阻塞在了接收键盘输入的地方,
你没有搞清楚这里,
后面就会出错,
为什么发送不了信息,
为什么进程越启动越多,
因为全部卡在了半通信状态,
TIME_WAIT 时间是多长2MSL (2倍的最大生命期时间)
原因:(ACK y+1)如果发送失败可以重发。
服务器端处于closed状态,不等于客户端也处于closed状态,
这也同时在解释,为什么让先关闭的处于TIME_WAIT状态,
确保双方都真的进入CLOSED状态,