Http
1.1 什么是HTTP
HTTP(超文本传输协议):是一个简单的请求响应协议,它通常运行在TCP上。
-
文本:html,字符串......
-
超文本:音乐、图片、视频、定位、地图......
-
默认端口号:80
HTTPS(security):安全的
1.2 两个时代
-
http1.0
-
HTTP/1.0:客户端与web服务器连接后,一次请求只能获得一个web资源,想要获得多个web资源,需要多次请求。
-
-
http2.0
-
HTTP/1.1:客户端与web服务器连接后,一次请求可以获得多个web资源。减少请求的次数。
-
1.3 网站请求响应
General:
Request URL: https://www.baidu.com/ #网站域名
Request Method: GET #请求方式
Status Code: 200 OK #状态码
Remote Address: 14.215.177.39:443 #远程地址
Referrer Policy: strict-origin-when-cross-origin #协议
Request Headers:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Cookie: BAIDUID=653E8EDB284CCCFF51781E108BB738AE:FG=1; BIDUPSID=653E8EDB284CCCFF51781E108BB738AE; PSTM=1600873555; BDUSS=9GenhXR0RsMkRxd0MxZjdxWVZjM0l6VUJpWXZFTkJmbGxlWXFERDRNMHB0amhnRVFBQUFBJCQAAAAAAAAAAAEAAADqHgi4c3VwZXLEvrezAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkpEWApKRFgTE; BDUSS_BFESS=9GenhXR0RsMkRxd0MxZjdxWVZjM0l6VUJpWXZFTkJmbGxlWXFERDRNMHB0amhnRVFBQUFBJCQAAAAAAAAAAAEAAADqHgi4c3VwZXLEvrezAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkpEWApKRFgTE; BD_UPN=12314753; __yjs_duid=1_96b510c32700437405677586841a1e961619365097704; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=; BAIDUID_BFESS=653E8EDB284CCCFF51781E108BB738AE:FG=1; COOKIE_SESSION=86298_1_1_0_8_1_0_0_1_1_0_0_86375_0_77_0_1621683831_1621482886_1621683754%7C9%23352446_13_1621482876%7C8; delPer=0; BD_CK_SAM=1; PSINO=6; BD_HOME=1; H_PS_645EC=6f16EEfzE%2BmvEYHQjLCcTPJqfCh%2BzAZVEzBO0s%2FAxYKzGYUnEH3BqKvBd6Y; BA_HECTOR=a505ak81258g0g0gc11gajgfd0q
Host: www.baidu.com
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"
sec-ch-ua-mobile: ?0
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Response Headers:
Bdpagetype: 2
Bdqid: 0x8fd00336000308d7
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Sun, 23 May 2021 02:46:44 GMT
Expires: Sun, 23 May 2021 02:46:44 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=360; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1621738004045655297010362786273042827479
Transfer-Encoding: chunked
X-Ua-Compatible: IE=Edge,chrome=1
请求中的请求方式:GET POST ......
-
GET: 请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据的内容,不安全,但高效。
-
POST:请求能够携带的参数没有限制,大小没有限制,不会再浏览器的URL地址栏显示数据的内容,安全,不高效。
响应状态码:
-
200:请求成功。
-
3xx:请求重定向,到新的位置去。
-
4xx:路由错误,找不到资源。
-
5xx:服务器代码错误, 502:网关错误。
面试题:
当你的浏览器地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
作为客户端,浏览器接收到地址之后,首先会到windows系统文件hosts中查找是否有需要劫持的ip地址,若没有则需要询问DNS域名解析服务器该域名对应的ip地址。(DNS缓存) 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存
获取到正确的ip地址后,客户端会与服务器建立TCP连接(三次握手),(网络层、数据链路层、物理层)
客户端向服务端发送请求,包含请求行、请求头、请求正文。多种请求方式(GET,POST、PUT等)
服务端处理请求,并返回响应,包含状态码、响应头、响应体
浏览器收到响应,解析渲染页面,展示出来
断开连接(http1.0短连接,http1.1长连接)