TCP 三次握手 四次挥手

- SYN(建立联机)

- ACK(确认)

- PSH(传送)

- FIN(结束)

- RST(重置)

- URG(紧急)

  1. 第一次握手

客户端向服务器发出请求连接的报文 这时同部位SYN=1 同时生成随机初始序列号 seq =x

客户端进去同步已经发送的状态 SYN = 1 不能携带数据的 但是需要消耗掉一个序列号

表示的意思是 客户端想要和服务器建立连接

  1. 第二次握手

收到请求后 如果同意连接的话 会发出确认的报文

需要初始化一个序列号

确认号 ack = x+1

进入了一个同步收到状态 也是不能携带数据的 询问你是都准备好

  1. 第三次握手

客户端收到确认后 还要向服务器给出确认 确认的报文 进入已经连接的状态 如果不携带数据是不需要消耗序号的

我已经准备好了

* 原因?

网络不好 请求没有及时到达这个服务端 直到摸个时间点才到达

失效的报文

一直的等待客户端发来消息

* 建立连接传输数据

Ack = Seq + 传递的字节数 + 1

  1. 第一次挥手

客户端发出连接释放的报文 停止发送数据 也要消耗一个序号

  1. 第二次挥手

收到连接释放的报文 发出确认的报文 ACk = 1 ack = u + 1 seq = u 服务端进去 close-wait (关闭等待的状态)

服务端发送数据的话 客户端依然要接受

  1. 第三次挥手

服务端发送一个FIN结束到客户端 服务端关闭客户端的连接

服务器将最后的数据发送完毕之后 就向客户端发送连接释放的报文

服务端可能又发送了一些数据 进入一个最终确认的状态

  1. 第四次挥手

* 原因???

握手是可以直接发送 syn ack ack 是用来应答的 syn 是用来同步的

server端收到 fin 结束的报文的时候 不会立即关闭 先回复一个ack 报文 你的分手请求我收到了 但是我还是有点不能接受 你容我伤心一会

(要把数据传输完毕)(只有等我server的所有报文斗殴传输完毕 )

* SYN 洪水攻击

利用服务端超时处理 时间内 不断发送 syn的包

检测??

服务端看到大量的办连接的状态 ip是随机的 Linux系统有自带的命令去检测

防御??

缩短超时

cookies

过滤网关防护SYN

白天求生存 晚上求发展

不走弯路

目标明确