浏览器输入网址之后发生了什么?------url全过程

浏览器输入网址之后发生了什么

一、DNS域名解析

域名系统(英文:Domain Name System,缩写:DNS

1、浏览器自己的DNS缓存中找,没有就下一步

2、在操作系统的DNS缓存中找

3、操作系统本地自己的host文件中找

4、操作系统就向本地域名服务器发起域名解析请求(通过的是UDP协议向DNS的53端口发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。如果找不到,运营商DNS服务器会代我们向根域名服务器发起迭代查询请求,得到顶级域名服务器的IP,根向顶级域名服务器得到权限域名服务器IP,顶级域名服务器向权限域名服务器发请求得到IP,得到了这个IP后,本地域名服务器返回IP给操作系统,同时将IP缓存下来,操作系统在还给浏览器,同时缓存IP

二、与服务器建立连接
TCP连接的建立

在这里插入图片描述
在这里插入图片描述

  1. Client首先发送一个连接试探,ACK=0 表示确认号无效,SYN = 1 表示这是一个连接请求或连接接受报文,同时表示这个数据报不能携带数据,seq = x 表示Client自己的初始序号(seq = 0 就代表这是第0号包),这时候Client进入syn_sent状态,表示客户端等待服务器的回复
  2. Server监听到连接请求报文后,如同意建立连接,则向Client发送确认。TCP报文首部中的SYN 和 ACK都置1 ,ack = x + 1表示期望收到对方下一个报文段的第一个数据字节序号是x+1,同时表明x为止的所有数据都已正确收到(ack=1其实是ack=0+1,也就是期望客户端的第1个包),seq = y 表示Server 自己的初始序号(seq=0就代表这是服务器这边发出的第0号包)。这时服务器进入syn_rcvd,表示服务器已经收到Client的连接请求,等待client的确认。
  3. Client收到确认后还需再次发送确认,同时携带要发送给Server的数据。ACK 置1 表示确认号ack= y + 1 有效(代表期望收到服务器的第1个包),Client自己的序号seq= x + 1(表示这就是我的第1个包,相对于第0个包来说的),一旦收到Client的确认之后,这个TCP连接就进入Established状态,就可以发起http请求了。
    (关于TCP连接详情可以看我另一篇文章)https://blog.csdn.net/weixin_41185826/article/details/108751871
三、发起HTTP连接

Http是什么?

http协议是超文本传输,通俗来讲,他就是计算机通过网络进行通信的规则,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。目前任何终端(手机,笔记本电脑。。)之间进行任何一种通信都必须按照Http协议进行,否则无法连接。

四个基于:

**请求与响应:**客户端发送请求,服务器端响应数据

**无状态的:**协议对于事务处理没有记忆能力,客户端第一次与服务器建立连接发送请求时需要进行一系列的安全认证匹配等,因此增加页面等待时间,当客户端向服务器端发送请求,服务器端响应完毕后,两者断开连接,也不保存连接状态,一刀两断!恩断义绝!从此路人!下一次客户端向同样的服务器发送请求时,由于他们之前已经遗忘了彼此,所以需要重新建立连接。

应用层: Http是属于应用层的协议,配合TCP/IP使用。

TCP/IP: Http使用TCP作为它的支撑运输协议。HTTP客户机发起一个与服务器的TCP连接,一旦连接建立,浏览器(客户机)和服务器进程就可以通过套接字接口访问TCP。

HTTP请求报文结构

在这里插入图片描述

1.请求行:

例如:POST /chapter17/user.html HTTP/1.1

格式:请求方式 资源路径 协议/版本

2.请求方法

HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。

最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

网络体系(OSI七层、TCP/IP四层、五层)

3.协议版本

协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

四、服务器响应HTTP请求,浏览器得到html代码
[状态码]()
1xx: 信息性状态码
  100, 101
2xx: 成功状态码
  200:OK
3xx: 重定向状态码
  301: 永久重定向, Location响应首部的值仍为当前URL,因此为隐藏重定向;
  302: 临时重定向,显式重定向, Location响应首部的值为新的URL
  304:Not Modified  未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,告诉浏览器,你不用请求该资源,直接使用本地的资源即可。
4xx: 客户端错误状态码
  404: Not Found  请求的URL资源并不存在
5xx: 服务器端错误状态码
  500: Internal Server Error  服务器内部错误
  502: Bad Gateway  前面代理服务器联系不到后端的服务器时出现
  504:Gateway Timeout  这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应
五、浏览器解析html代码,并请求html代码中的资源
六、 浏览器对页面进行渲染呈现给用户
七、TCP断开连接
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值