【网络传输】关于TCP三次握手和四次挥手简单易懂的图解

三次握手

【网络传输】关于TCP三次握手和四次挥手简单易懂的图解

四次挥手

【网络传输】关于TCP三次握手和四次挥手简单易懂的图解

相关问题

  • 为什么非要四次挥手:因为可能它就是不调用newsocket.close(),或者延迟一下再发,所以,不能合起来,前一次回复只是告诉客户端我收到了,但是close的不能合并。
  • 为什么先让客户端先发close():tcp为了保证数据的可靠性,一般接收到一个数据会回复一个数据,最后一次客户端发消息,那客户端咋知道已经过来了,那咋保证可靠呢?:是这样,谁先调用close谁就会在close后等待一段时间(称为超时时间)假如4s,如果没收到那么就会再发close,那服务器要是没收到,那么久以为没传过去,就再发一次close,那要是再发一次之前客户端把资源已经释放了这合适吗?不合适。所以客户端发送之后还要等待一段时间,等待2ms(一个数据包再网络传输的最长时间,一般是两分钟左右)。所以谁先close谁就要等五分钟,所以资源要待着两分钟,两分钟之类资源不能重复使用。如果是服务器先调用close那么服务器就要在两分钟之内不能释放,也就是端口不能释放!而客户端一般不绑定端口,所以没关系啊,操作系统再安排个新端口,而服务器必须要固定的端口,所以只能客户端先close。