输入网址后,会经历哪些步骤

一.域名解析,DNS解析

  • 通过主机名,最终得到该主机对应的IP地址的过程,叫做域名解析

DNS的解析步骤?

参考文章:https://blog.csdn.net/Lammonpeter/article/details/81358387

  • 1、检查浏览器缓存是否缓存过该域名对应的IP地址
    • 用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的IP地址,当用户再次访问的时候,浏览器就会从缓存中查找该域名对应的IP地址,因为缓存不仅是有大小限制,而且还有时间限制(域名被缓存的时间通过TTL属性来设置),所以存在域名对应的IP找不到的情况。当浏览器从缓存中找到了该网站域名对应的IP地址,那么整个DNS解析过程结束,如果没有找到,将进行下一步骤。
  • 2、检查本机系统是否缓存过IP
    • 本机如果没有缓存过IP,则开始向远程DNS服务器发起解析域名请求
  • 3、向本地域名解析服务器发起域名解析请求
    • 本地域名服务器如校园网、本地区的运营商等,基本上LDNS(local DNS)负责了大部分解析工作
  • 4、向根域名解析服务器(root Server)发起域名解析请求,根域名服务器返回gTLD域名解析服务器地址
    • 根域名服务器全球只有13个左右常见的有.com、.cn、.org、.edu等
    • 返回的是所查域的通用顶级域地址
  • 5、向gTLD(主域名)服务器发起解析请求,返回Name Server服务器
    • 返回的是该域名的Name Server域名服务器,通常情况下是注册的域名服务器
  • 6、Name Server服务器查找域名对应的IP地址,将IP地址返回给本地域名服务器
  • 7、本地域名服务器缓存解析结果,并将解析结果给用户
    引用另一篇博文的举例
    在这里插入图片描述
    在这里插入图片描述

二.发起TCP连接的三次握手

TCP/IP协议簇的四个层

在这里插入图片描述

TCP的六个标志位

  • TCP共有6个标志位,分别是:
  • SYN(synchronous),建立联机
  • ACK(acknowledgement),确认
  • PSH(push),传输
  • FIN(finish),结束
  • RST(reset),重置
  • URG(urgent),紧急

三次握手的过程

在这里插入图片描述

  • 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机
  • 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;
  • 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

为什么需要三次握手?

  • 客户端发出去的第一个连接请求由于某些原因在网络节点中滞留了导致延迟,直到连接释放的某个时间点才到达服务端,这是一个早已失效的报文,但是此时服务端仍然认为这是客户端的建立连接请求第一次握手,于是服务端回应了客户端,第二次握手。
  • 因此,如果是两次握手的话,会导致一些延迟信息带来无效的连接

三.建立TCP连接(三次握手成功)后发起http/https请求

http(port:80)和https(port:443)的区别

  • https是以安全为目标的http通道,即SSL/TLS+HTTP的网络协议
  • https方式与服务器通信的步骤:
    • 1、客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接
    • 2、Web服务器收到客户端请求后,将网站的证书信息(包含公钥)传送一份给客户端
    • 3、客户端验证证书的有效性,无效中断连接,有效则建立会话密钥,然后利用网站的公钥将会话密钥加密,传送给网站
    • 4、Web服务器利用自己的私钥,解密出会话密钥
    • 5、Web服务器利用会话密钥加密与客户端之间的通信

四.服务端响应http请求,返回响应报文

五.浏览器页面渲染

六.断开TCP连接

四次挥手

转载自https://www.jianshu.com/p/cd801d1b3147
在这里插入图片描述

  • 第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。

  • 第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。

  • 第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。

  • 第四次挥手:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。

* 第四次挥手后,客户端为什么要等待2MSL?

  • 1、为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。

  • 2、他还可以防止已失效的报文段。客户端在发送最后一个ACK之后,再经过经过2MSL,就可以使本链接持续时间内所产生的所有报文段都从网络中消失。从保证在关闭连接后不会有还在网络中滞留的报文段去骚扰服务器。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值