一、TCP建立连接
说明:在此图中HostA充当客户端角色,HostB充当服务器角色。
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN,ACK。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。
第一次握手:建立连接时,HostA发送SYN包(SEQ=a)到HostB,并进入SYN_SEND状态,等待HostB确认。
第二次握手:HostB收到SYN包后,必须确认HostA的SYN(ACK=a+1),同时自己也送一个SYN包(SEQ=b),即SYN+ACK包,此时HostB进入SYN_RECV状态。
第三次握手:HostA收到HostB的SYN+ACK包,向HostB发送确认包ACK(ACK=b+1),此包发送完毕,HostA和HostB进入入Established状态,完成三次握手。
抓包验证:
第一次握手:
第二次握手:
第三次握手:
二、TCP断开连接
当数据传输完毕后,需要经过四次握手来断开TCP连接,其步骤如下:
- HostA要终止连接,发送序列号为p的段,FIN置位,同时确认此前收到的段;
- HostB收到HostA发送的段后,发送ACK段,确认号为p+1,同时关闭连接。
- 同时HostB发送序列号为q的段,FIN置位,通知连接关闭;
- HostA收到HostB发送的段后,发送ACK段,确认号为q+1,同时关闭连接。
抓包验证:
第一次握手:
第二、三次握手:
第四次握手:
实验完毕!