TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程。
一、服务器、客户端状态
- LISTEN:侦听来自客户端的TCP端口的连接请求
- SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
- SYN-RCVD:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
- ESTABLISHED:代表一个打开的连接
- FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
- FIN-WAIT-2:从远程TCP等待连接中断请求
- CLOSE-WAIT:等待从本地用户发来的连接中断请求
- LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
- TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
- CLOSED:没有任何连接状态,连接结束
二、连接重要字段
在开始讲解之前,先来讲几个重要字段的全称,方便记忆
- 标志位:
- SYN :(SYNchronization)同步
- ACK :(ACKnowlegment)确认
- FIN :(FINish)终止
- URG:紧急指针(urgent pointer)有效。
- PSH:接收方应该尽快将这个报文交给应用层。
- RST:重置连接。
- seq:(sequence number)序号
- ack:(acknowledgement number)确认号
三、三次握手
学习了上面的状态和字段后,下面的图就很好理解了。
客户端和服务端沟通时,使用请求和响应报文。报文的内容:标志位+seq/ack
四、四次挥手
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END