图一:wireshark抓取的数据包
第一次握手:192.168.1.105发送位码syn=1数据包到119.75.219.45,119.75.219.45由SYN=1知道192.168.1.105要求建立联机;
第二次握手:119.75.219.45收到请求后要确认联机信息,向192.168.1.105发送ack , v发送syn=1,ack=1的确认包;
第三次握手:192.168.1.105收到后检查位码ack是否为1,若正确,192.168.1.105会再发ack=1,119.75.219.45收到后确认seq=seq+1,ack=1则连接建立成功。
图二、三次握手
小明的床经过很多次快递后,终于把所有的零部件都送出去了。这时小MM说:“都发过去了,可以跟那边不联系了。”于是把之前的小弟叫来说:“跟那边说一下,该发的包都发送完了。”过了一会,小弟回来说:“他们知道了,有事情会跟我们联系的。”过了一会,又有一个小弟过来说:“我们那边已经没有事情了,今天的事情结束了,我们会等待半小时,如果你们没有事情了,半个小时后,就不联系了。”小MM很开心说:“那你带个结束确认信过去,我们也等半小时,如果他们没有事情,今天就结束了。”小明说:“你们这结束连接也还挺麻烦的。”小MM说:“那是自然,万一有什么临时事情发生呢,这叫四次分手。” TCP结束连接需要进行四次对话,双方确保没有数据要发送了,才能断开连接。图三:wireshark抓取四次挥手的数据包
第一次挥手:客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
第二次挥手:服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号。
第三次挥手:服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
第四次挥手:客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。
图四、TCP数据传输的过程