4. HTTP
4.1 什么是HTTP
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。
- 文本:html,字符串,。。。
- 超文本:图片,音乐,视频,定位,地图。。。。
- 默认端口:80
HTTPS:安全的
- 默认端口:443
4.2 两个时代
- http1.0
- HTTP/1.0:客户端可以与web服务器连接,只能获得一个web资源,断开连接
- http2.0
- HTTP/1.1:客户端可以与web服务器连接,可以获得多个web资源
4.3 HTTP请求
- 客户端向服务器发送请求(Request)
百度:
请求 URL: https://www.baidu.com/ 请求地址
请求方法: GET get方法/post方法
状态代码: 200 OK 状态码:200
远程地址: 14.215.177.38:443
引用站点策略: origin-when-cross-origin
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 语言
Cache-Control: max-age=0
Connection: keep-alive
-
请求行
- 请求行中的请求方式:GET
- 请求方式:Get/Post
- get:一次请求能携带的参数比较小,有大小限制,会在浏览器的URL地址栏显示数据内容,不安全但高效
- post:一次请求能携带的参数没有限制,没有有大小限制,不会在浏览器的URL地址栏显示数据内容,安全但不高效
-
消息头
Accept: 告诉浏览器所支持的数据类型 Accept-Encoding: 支持那种编码格式 GBK UTF-8 GB2312 ISO8859-1 Accept-Language: 告诉浏览器语言环境 Cache-Control: 缓存控制 Connection: 告诉浏览器,请求完成是断开还是保持连接 HOST:主机
4.4 HTTP响应
- 服务器响应客户端
百度:
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 语言
Cache-Control: max-age=0
Connection: keep-alive
-
响应体
Accept: 告诉浏览器所支持的数据类型 Accept-Encoding: 支持那种编码格式 GBK UTF-8 GB2312 ISO8859-1 Accept-Language: 告诉浏览器语言环境 Cache-Control: 缓存控制 Connection: 告诉浏览器,请求完成是断开还是保持连接 HOST:主机 Refresh :告诉客户端,多久刷新一次 Location:让网页重新定位
-
响应状态码(重点)
2xx:
- 请求响应成功 200
3xx:请求重定向
- 重定向:重新到我给你的新位置
4xx:
-
404 找不到资源
-
资源不存在
5xx:
- 500:服务器代码错误
- 502:网关错误
常见面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
- 作为客户端,浏览器接收到地址之后,首先会到windows系统文件hosts中查找是否有需要劫持的ip地址,若没有则需要询问DNS域名解析服务器该域名对应的ip地址。(DNS缓存)
浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存 - 获取到正确的ip地址后,客户端会与服务器建立TCP连接(三次握手),(网络层、数据链路层、物理层)
- 客户端向服务端发送请求,包含请求行、请求头、请求正文。多种请求方式(GET,POST、PUT等)
- 服务端处理请求,并返回响应,包含状态码、响应头、响应体
- 浏览器收到响应,解析渲染页面,展示出来
- 断开连接(http1.0短连接,http1.1长连接)