剖析网页从浏览器输入地址到加载完毕的全过程——建立连接

通过DNS解析得到了目标服务器的IP之后,接下来要做的肯定就是发起连接了。说到发起连接,最主要的是要搞清楚客户端和服务器建立的是怎样的连接。


这里不卖关子。我们都知道,HTTP并不是传输层的协议,它只是规范了客户端和服务器端的请求和应答,而数据的传输显然需要交给传输层的协议去处理,所以传输层中的TCP/IP协议族是不二之选。所以,在发送一个HTTP请求之前,客户端需要和服务器端建立一个TCP连接。因此本文介绍的“建立连接”其实就是指TCP连接。


著名的TCP连接的三次握手

SEQN = Sequence Number, ACKN = Acknowledge Number, SYN = synchronous, ACK = acknowledgement

第一次握手:

客户端向服务器端发送位码SYN=1,包含随机产生的SEQN的数据包到服务器端。

第二次握手:

服务器端收到客户端请求连接的信息后进行确认,于是产生ACKN=SEQN+1(返回给客户端校验),设置位码ACK=1,同时服务器自己还需要向客户端请求连接,固还要设置SYN=1并产生一个随机的SEQN。也就是说服务器端会返回给客户端一个包含SEQN、ACKN和位码ACK=1、SYN=1的数据包。

第三次握手:

客户端收到服务器端返回的数据包后,先校验ACKN是否正确,ACK是否为1。若没有问题,则处理服务器端提出的连接请求——即产生ACKN=SEQN+1,设置位码ACK=1发回给服务器端。等到服务器端收到了ACKN以及ACK=1的位码信息且校验无误后,客户端和服务器进入ESTABLISHED状态,并开始传输数据。

总结

其实DNS解析到发送HTTP请求之间发生的就是TCP连接的建立,而连接建立的核心就是“三次握手”。完成了TCP的三次握手后,浏览器就可以根据HTTP协议规定的那样向服务器端发送HTTP请求了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值