输入URL敲下回车发生了什么?

386 阅读4分钟

(图片来自网络,侵权请联系删除) OIP-C (1).jfif

一、步骤:

1、url解析
2、DNS协议查询(域名和对应的ip地址进行转换)
3、传输层(tcp协议,三次握手,四次挥手,建立链接)
4、应用层(http协议,发送请求)
5、响应请求(服务器对请求做出响应)
6、收到请求
7、解析请求(对收到的数据包逐层解析)
8、页面渲染

二、详细解析

1、URL解析

判断你输入的url是否合法,根据你输入的内容进行对应的url解析。下面是url的组成:(图片来自网络,侵权请联系删除)

27a0c690-bdf4-11eb-ab90-d9ae814b240d.png

2、DNS查询

解析过程如下:

1、首先搜索浏览器的DNS缓存,缓存中维护着一张域名与ip地址的对应表

2、如果没有命中,则继续搜索操作系统的缓存

3、如果仍然没有命中,那么操作系统将域名发送到本地域名服务器,本地域名服务器采用递归查询自己的DNS缓存,查找成功则返回。

4、如果本地域名服务器查询仍然不成功,则向上级域名服务器迭代查询

5、本地服务器将获得的IP地址返回给操作系统,然后自己将IP地址缓存起来

6、操作系统得到IP地址会返回给浏览器,然后将IP地址缓存起来

7、至此,浏览器得到了url对应得IP地址,并将IP地址缓存起来

3、tcp传输(tcp区别于udp的点:它是有连传输协议,一对一传输,稳定传输)

tcp传输要说得当然是三次握手了:三次握手可以让客户端和服务器都能够确定自己和对方得收发能力没有问题。

下面是三次握手得过程:(图片来自网络,侵权请联系删除)

4698491-8f2ded5fc9495bbd.webp

4、http请求

tcp协议对应着应用层的协议是http协议,tcp确定建立链接之后,发送http请求。

请求的内容包括:请求行、请求头、空行、请求体

5、响应请求

响应的内容包括:响应行、响应头、空行、响应体

小扩展:常见的请求头和响应头都有什么?

头信息是请求和响应消息的消息头部分,它定义了超文本传输协议事务中的操作参数。
常见的请求头:

Accpet能接受的回应内容类型
Accept-Charset能接受的字符集
Accept-Encoding能接受的编码方式列表
Accept-Language能接受的回应内容的自然语言列表
Authorization用于超文本传输协议的认证的认证信息
cache-control用来指定在这次请求中的所有缓存机制都必须遵守的指令(是否使用缓存机制)
Cookie服务器通过set-cookie发送的一个超文本传输协议
Content-length以八位字节组成,表示请求体的长度
Content-Type请求体的多媒体类型
Date发送该消息的日期和时间
Host服务器的域名以及服务器监听的传输协议端的端口号
if-Modified-since协商缓存last-modefied中使用,允许在对应的内容未被修改的情况下返回304(常在浏览器缓存中使用)
if-None-Match协商缓存etag中使用,允许在对应的内容未被修改的情况下返回304
range仅请求某个实体的一部分
Origin发起一个跨来源资源共享的请求

常见的响应头:

access-control-allow-origin指定哪些网站可以进行跨域资源共享
Accept-Ranges服务器所支持的内容范围
Age响应对象在代理缓存中存在的时间
Cache-control通知从服务器到客户端的所有缓存机制,他们是否可以缓存这个对象,已经缓存的有效时间
Content-Encoding资源响应所使用的编码类型
Content-language响应所使用的语言类型
Content-length响应体的长度
Content-Location所返回的数据的一个侯选位置
Content-Range如果是响应部分消息,表示是完整消息的哪个部分
Date表示此消息被发送的时间
etag对于某一资源的唯一的表示符(协商缓存时确定资源是否发生变化时用到)
Expires指定一个日期/时间,超过该事件则认为此回应已经过期
Last-Modified所请求的资源的最后的修改事件
Refresh用于重定向
Retry—After如果某个实体临时不可用,那么此协议头告诉用户稍后重试
Server服务器的名称
Set-Cookie设置http cookie