2.7.0 以太网 TCP协议(三次握手、四次挥手)
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的传输层通信协议。
面向连接:指使用TCP协议的程序在使用的时候,需要预先进行建立一个数据通信连接。
可靠:TCP协议在建立的时候需要先进行三次握手,保证对方的可连接性。
环境介绍:
1、客户端访问FTP服务器进行下载文件,由于FTP是基于TCP协议进行工作的,所以客户端在访问FTP服务器时必然会进行建立TCP连接。
2、通过在交换机上对任意端口进行抓包,来分析TCP的三次握手建立连接过程
,以及TCP连接断开时的四次挥手过程
。
一、三次握手过程
简单描述:
- 1、客户端主动向服务器》发起FTP访问,激活TCP建立。主动发送
SYN置位的TCP报文
,意为请求建立TCP连接。 - 2、服务器收到客户端》SYN置位的TCP报文。回复
SYN、ACK置位的TCP报文
,意为同意建立TCP连接。 - 3、客户端收到服务器》回复的SYN、ACK置位的TCP报文,知道服务器同意建立。将回复
ACK置位的TCP报文
,意为同意建立TCP连接。- 服务器收到客户端》ACK置位的TCP报文后,TCP连接建立成功,直接进行发送FTP数据。
报文交互描述:
注释:因为主机刚开机,且是第刚进行报文交互,所以Seq报文序号从0开始。
- 1、客户端主动向服务器》发送
Flags-SYN置位1、Seq报文序号0、ack确认序号0、窗口大小8192、源端口2051、目的端口21
的TCP报文 - 2、服务器收到客户端的SYN置位TCP报文》回复
Flags-SYN、ACK置位1、Seq序号0、ack确认序号1、窗口大小8192、源端口21、目的端口2051
的TCP报文 - 3、客户端收到服务器的SYN、ACK置位TCP报文》回复
Flags-ACK置位1、Seq序号1、ack确认序号1、窗口大小8192、源端口2051、目的端口21
的TCP报文- 此刻客户端与服务器之间的TCP链路成功建立,立即进行FTP认证交互。
华为官网教材截图(HCIA-02 网络参考模型):
二、四次挥手过程
TCP客户端主动向TCP服务器发送’QUIT’指令,通知FTP服务器需要断开连接。
- 1、服务器向客户端发送》
Goodbye信息
,表示请求与客户端进行断开TCP连接。 - 2、客户端收到服务器Goodbye信息》回复
Flags-ACK置位1的TCP报文
,表示收到断开信息,且FTP客户端也开始清除FTP进程。- 收到ACK后的时服务器,TCP连接将单向断开。
- 3、当FTP客户端清除FTP进程之后,向服务器发送
Flags-FIN、ACK置位1的TCP报文
通知服务器,自己准备好断开连接了,就差你的ACK回复了! - 4、服务器收到客户端FIN、ACK置位的TCP报文》回复
Flags-ACK置位1的TCP报文
,表示收到断开信息。- 客户端收到服务器回复的ACK置位报文》此刻双方才真正断开TCP连接。