理解TCP的握手与挥手

握手 As we know, TCP 相比于 UDP 而言, TCP 提供可靠的连接服务,而它建立一个链接的时候,采用三次握手(three-way handshake),那什么是三次握手呢? For example: 1. 漆黑的夜里,你在路上散步发现对面有个熟人,你想去聊会天,于是你先向对方打了声招呼. 2. 对方听到了你的招呼声,于是也向你回了一声. 3. 你听到了对方的回应,于是向对方挥挥手致意. 第一次握手,你(client)想和对方(server)说话(connect),于是先和对方打了声招呼(syn=j). 第二次握手,对方听到了你的回应,于是并回了一声,表示自己听到了(ack=j+1, syn=k). 第三次握手,你也听到了对方的回应,知道对方已经认出你了,于是挥手表示自己也听到了.(ack=k+1) 很浅显得道理,但非常有效的连接方式.为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手. 挥手 要知道,一个socket连接是双工的,两端都可以同时收发,相当于一个连接中存在两条管道.因此TCP在关闭连接的时候,需要将两条管道都关闭. 而如何能确保两条管道都安全的关闭呢? For example: 1. A 和 B已经建立了连接,此时 A 决定要关闭连接了,于是 … “理解TCP的握手与挥手”

Read More