0
点赞
收藏
分享

微信扫一扫

【前端学习 - 浏览器(3)TCP 三次握手】

北冥有一鲲 2022-01-20 阅读 55
http

1、TCP 三次握手

接下来介绍向服务器发送 HTTP 请求阶段,HTTP 请求分为三个部分:TCP 三次握手http 请求响应信息关闭 TCP 连接

在客户端发送数据之前,会发起 TCP 三次握手用以同步客户端和服务端的序列号确认号,并交换 TCP 窗口大小信息

1-1.TCP 三次握手的过程如下:

  • 客户端发送一个带 SYN=1,Seq=X 的数据包到服务器端口(第一次握手,由浏览器发起,告诉服务器我要发送请求了)
  • 服务器发回一个带 SYN=1, ACK=X+1, Seq=Y 的响应包以示传达确认信息(第二次握手,由服务器发起,告诉浏览器我准备接受了,你赶紧发送吧)
  • 客户端再回传一个带 ACK=Y+1, Seq=Z 的数据包,代表“握手结束”(第三次握手,由浏览器发送,告诉服务器,我马上就发了,准备接受吧)

各个字段的说明:

  • SYN表示建立连接
  • Seq是序列号,这是为了连接以后传送数据用的
  • ACK表示响应,是对收到的数据包的确认,值期望对方继续发送的那个数据包的序列号,因为已经接收了X,期望接收下一个X+1

1-2.为什么要三次握手

这是为了防止无效的连接请求报文到达服务器

因为有可能A先发了一个连接请求报文,但是由于网络的 问题,迟迟没有到达B主机,这时候,A主机就超时重传了该报文,然后B主机响应了该请求报文,但是不妙了,第一个报文居然又到了B主机,那么B主机就会把它作为新的连接请求,如果只有两次握手,那么B主机对于该连接请求也会建立连接,但是如果是三次握手,B主机发出确认报文后,A主机不予理睬,这样就不会建立TCP连接了。

举报

相关推荐

0 条评论