- DNS查询
- 浏览器缓存,host,路由器缓存,本地DNS,根,*域,权威
- 建立TCP连接
- SYN置1 ,随机初始序号,发送SYN后进入SYN_SENT状态
-
- serviceSYN cookie防御系统
- 没有部署
- 为该连接分配 TCP缓存和相关变量(半开连接) ,随机初始序号,SYN置1,ACK(SYNACK报文段)
- 有部署
- 不生成半开连接 ,而是把初始序号设为hash(源IP,源port,目的IP,目的port),之后就还没有部署一样
- 再搜到客户的ACK后判断ACK的确认序号-1是否等于hash(源IP,源port,目的IP,目的port),是的话才分配 TCP缓存和相关变量,此时TCP连接才正式建立双向连接
-
- 客户收SYNACK后分配 TCP缓存和相关变量,进入ESABLISHED状态,SYN置0,ACK,可开始携带数据(HTTP请求)
-
- 服务端对请求进行相应,客户拿到相应数据后开始解析HTML文档,解析完成后渲染显示在屏幕上
-
- 在服务端发送完响应后,如果HTTP请求的首部行Connection
- 为close
- 服务器断开TCP连接
- 服务器FIN置1,发送后进入FIN_WAIT_1状态
- 客户发送ACK,服务器接到ACK后进入FIN_WAIT_2状态。
- 等客户确认数据发送完成后,FIN置1,发送给服务器
- 服务器收到FIN后发送ACK并进入TIME_WAIT状态,经过某个等待时间后连接正式关闭,释放资源,客户端收到这个ACK后也响应的关闭连接,释放资源
-
- 为 keep-alive