当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

URL请求发送之后发生的事情:

  1. URL解析:分析是否符合URL规则,不符合就当做查询内容,

  2. 域名解析DNS

    • 查询浏览器DNS缓存

    • 查询操作系统的DNS缓存

    • 查询host文件

    • 浏览器发送一个UDP协议向本地配置的ISP DNS服务器53端口进行请求

      • 本地DNS服务器会帮助我们进行递归查询(从本地域名服务器向根服务器进行查询,根服务器未能查询到就会向顶级域名服务器查询…直到查询到地址对应ip或者进行返回)
      • 迭代查询(由本地域名服务器进行后续查询,如果根服务器没有查询到就会接着向顶级域名服务器查询

img

  1. 查询到对应ip地址后就会对请求服务器发起TCP链接请求

    浏览器随机选择一个端口向服务器的WEB容器的80端口发送TCP链接请求。这个链接请求经过应用层(HTTP、HTTPS),传输层(TCP头部),网络层(IP首部),数据链路层(以太网首部)的封装后通过网卡进行传输

    1. 应用层:发送HTTP请求

    2. 传输层:建立连接和发送TCP报文数据段

      对数据进行分段并标号

    3. 网络层:将数据段打包发送,在路由中查询路由表从而选择下一跳地址

    4. 数据链路层:使用以太网协议根据MTU最大帧长度 将数据分为数据帧,

  2. 三次握手成功建立连接

image-20220107144443461

  1. 建立了TCP链接之后会发送http请求

    HTTP请求报文请求的方法为get方法,如果浏览器存储了这个域名的cookie信息在发送的时候就会携带Cookie在Http报文的请求报文头

  2. 请求在首先从本机网卡发出,到达本地路由器之后根据路由表和请求目的ip,在路由表进行检查(子网掩码和目的ip进行按位与&)如果在一个网段(网络号相同),就就行下一跳的转发或者直接到达.不弱路由表中不存在对应映射就会发送到默认网关

  3. 服务端接收到http请求

    服务端的web容器接收到的http请求,创建一个子进程进行处理,将http请求进行拆封解析,如果是请求的图片等静态资源将会直接返回,如果是Servlet方法,容器将会在执行对应方法,处理完成返回响应

  4. 经过和发送过程大致相同的流程,将响应信息传输给浏览器进行解析

    浏览器拿到的如果是一个html资源,就会对其中代码进行解析,如果有js/css/image等静态资源,就会触发再次向服务器发送请求,这个时候,如果浏览器支持长链接(http1.1后)

  5. 然后对资源进行解析渲染,缓存等工作

  6. 断开TCP连接

    • A端调用close函数主动关闭链接进入到FIN WAIT1状态 :向B端发送带有FIN标志位的分组,序列号为m
    • B端确认收到这个分组知道 A端 已经发送完毕,进入CLOSE_WAIT状态 :并自动返回ack给A端
    • 当A端接收到ACK进入到FIN WALT_2状态,等待B端发送数据结束
    • 当B端数据发送结束 进入到LAST ACK状态 : 主动发送FIN标志位的分组给A端
    • A端接收到FIN分组进入TOME WAIT 状态 : 自动响应一个ACK回复给B端
    • B端接受到回复的ACK后进入CLOSED状态,A端等待2个MSL最大报文生存时间后进入CLOSED状态

image-20220107152718644

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值