Description
-
客户端
user-agent
是什么?
user-agent
就是任何能够为用户发起行为的工具。这个角色通常都是由浏览器来扮演。一些例外情况,比如是开发者使用的程序,以及Web
开发者调试应用程序。 -
http
是什么?
超文本传输协议(HTTP
),它通常被用于Web
浏览器和Web
服务器之间的通信 -
服务器资源是什么?
网络上的一切内容都是资源,无论是静态的文件,还是动态生成的文件 -
媒体类型是什么?
就是一种数据类型的标记,用来表示传输的数据是什么类型的,好让接收端知道,接收到的是什么类型的数据,这样接收端好处理该数据。
常见的标记方式是[MIME
][0_0],MIME
描述了文件的主要类型以及特定子类型,如Content-Type: text/html
,text
描述文件的主要类型是文本,而子类型是html
文档。
浏览器通常使用MIME
类型(而不是文件扩展名)来确定如何处理文档;因此服务器设置正确的MIME
类型附加到响应对象的头部是非常重要的。 -
URI
是什么?
首先URI
从其概念来说是统一资源标识符,它的作用就是在网络上唯一确定一个资源,就好比,在中国,身份证能唯一确定一个人一样!知道身份证号,就一定能确定一个人姓甚名谁一样!它有两个子集:URL
(统一资源定位符)和URN
(统一资源名),首先不特别声明,我们所说的URI
就是指URL
,URL
是跟资源其在网络上的位置有关!而URN
是指资源跟其名字有关。 -
请求方法指什么?
客户端向服务器发起请求的方式。常见的方法有:get、post、delete、put
-
状态码是什么??
HTTP
响应状态码指示HTTP
请求是否已成功完成。响应分为五类:信息响应,成功响应,重定向,客户端错误和服务器错误。 -
报文是什么?
HTTP
报文分为:请求报文、响应报文。两种报文都具有类似的结构,分别由三个部分构成:起始行、首部、主体,起始行描述报文干了什么。首部描述报文传输的具体细节。主体描述传输的实际内容。 -
从
URL
输入到页面显示,经历了什么过程?-
浏览器地址栏输入时联想提示
-
URL
解析,URL
为了在不同协议不同传输机制都可以安全的运送信息,采用的字符都是符合ASCII
集的。若有非ASCII
的字符(中文等),就会先通过转义处理。 -
DNS (Domain Name System)
解析- 为什么要
DNS
解析
因为 http 是基于 tcp 连接的,而 tcp 则是通过 ip 地址去识别的。DNS 解析就是域名转化成 ip 地址的过程 - 浏览器
DNS
解析优先级
查看浏览器内部缓存 ---> 系统缓存(host
文件) ---> 路由器缓存、ISP
缓存 ---> 本地DNS
服务器(可无) --->DNS
服务器 ---> 找不到服务器地址
- 为什么要
-
浏览器建立一条与web服务器的
TCP
连接(TCP
三次握手) -
浏览器向服务器发送一条
http
请求报文 -
服务器向浏览器回送一条
http
响应报文 -
浏览器解析渲染文档
-
关闭连(
TCP
四次握手)
-
二、HTTP
报文
HTTP/1.1
以及更早的 HTTP
协议报文都是语义可读的。在 HTTP/2
中,这些报文被嵌入到了一个新的二进制结构,帧。报文分请求报文、响应报文。都由三个部分组成,起始行、首部、主体。
# 请求报文
<method> <request-URL> <protocol/version>
<headers>
<entity-body>
注:
<method> 请求方法
<request-URL> 请求 URL
<protocol/version> http 协议版本号
<headers> 请求头(首部)
<entity-body> 请求参数
# 响应报文
<protocol/version> <status> <reason-phrase>
<headers>
<entity-body>
注:
<protocol/version> http 协议版本号
<status> 状态码
<reason-phrase> 状态信息(这个信息是非权威的状态码描述信息,可以由服务端自行设定)
<headers> 响应头(首部)
<entity-body> 响应数据