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