- SYN(建立联机)
- ACK(确认)
- PSH(传送)
- FIN(结束)
- RST(重置)
- URG(紧急)
- 第一次握手
客户端向服务器发出请求连接的报文 这时同部位SYN=1 同时生成随机初始序列号 seq =x
客户端进去同步已经发送的状态 SYN = 1 不能携带数据的 但是需要消耗掉一个序列号
表示的意思是 客户端想要和服务器建立连接
- 第二次握手
收到请求后 如果同意连接的话 会发出确认的报文
需要初始化一个序列号
确认号 ack = x+1
进入了一个同步收到状态 也是不能携带数据的 询问你是都准备好
- 第三次握手
客户端收到确认后 还要向服务器给出确认 确认的报文 进入已经连接的状态 如果不携带数据是不需要消耗序号的
我已经准备好了
* 原因?
网络不好 请求没有及时到达这个服务端 直到摸个时间点才到达
失效的报文
一直的等待客户端发来消息
* 建立连接传输数据
Ack = Seq + 传递的字节数 + 1
- 第一次挥手
客户端发出连接释放的报文 停止发送数据 也要消耗一个序号
- 第二次挥手
收到连接释放的报文 发出确认的报文 ACk = 1 ack = u + 1 seq = u 服务端进去 close-wait (关闭等待的状态)
服务端发送数据的话 客户端依然要接受
- 第三次挥手
服务端发送一个FIN结束到客户端 服务端关闭客户端的连接
服务器将最后的数据发送完毕之后 就向客户端发送连接释放的报文
服务端可能又发送了一些数据 进入一个最终确认的状态
- 第四次挥手
* 原因???
握手是可以直接发送 syn ack ack 是用来应答的 syn 是用来同步的
server端收到 fin 结束的报文的时候 不会立即关闭 先回复一个ack 报文 你的分手请求我收到了 但是我还是有点不能接受 你容我伤心一会
(要把数据传输完毕)(只有等我server的所有报文斗殴传输完毕 )
* SYN 洪水攻击
利用服务端超时处理 时间内 不断发送 syn的包
检测??
服务端看到大量的办连接的状态 ip是随机的 Linux系统有自带的命令去检测
防御??
缩短超时
cookies
过滤网关防护SYN
白天求生存 晚上求发展
不走弯路
目标明确