Http 简单介绍
Http
是无状态(无法记录用户操作、状态、信息记录,只能通过 cookie、session
这些会话机制)。
http常用端口:80,8080
,https(s=TLS)常用端口:443
。
一. http 版本
http2.0:
建立 tcp
后,并行发送多次请求,并行返回多次响应。
http1.1:
长连接 (keep-alive)
:仅一次 tcp
连接,可以发起多次 http
请求。
http1.0:
短连接:一次 tcp
连接,一次 http
请求(相当于每次和你说话,都要打招呼,你好)。
二. Http 工作原理
浏览器请求-->浏览器缓存-->dns-->tcp连接-->http请求-->http响应-->tcp断
请求/响应交互模型
用户点击 url
的链接之后,浏览器和 web
服务执行以下动作:
(1). 浏览器分析链接中的 url
(2). 浏览器向 dns请求
解析域名为 ip地址
(3). dns解析ip
返回给浏览器
(4). 流量器和服务器建立 tcp连接
(默认 80端口
,三次握手)
(5). 浏览器发送请求:GET /index.html
(6). 服务器响应,将 index.html
发送给浏览器
(7). 关闭连接,释放tcp
连接(四次挥手)
(8). 浏览器显示 index.html
的内容
三. Http 报文分析
General
(基本):
Request URL: https://www.baidu.com/
Request Method: GET
Status Code: 200 OK
状态码
Remote Address: 180.101.49.12:44
3.1. 请求
GET / HTTP/1.1
request header
(请求头)
Accpet:text/html:
请求类型Accpet-Encoding:gzip,deflate:
压缩Accept-Language: zh-CN,zh:
语言Cache-Control: no-cache:
缓存控制Connection: keep-alive:
长连接Host: www.baidu.com:
请求域名Pragma: no-cache:
没有缓存User-Agent: Mozilla/5.0 :
用户信息,浏览器、设备
3.2. 响应
HTTP/1.1 200 OK
response header
(响应头)
status: 200:
状态码
- 200:成功
- 301:永久重定向,跳转(浏览器会记住跳转的地址,下次直接跳转)
- 302:临时跳转
- 307:内部跳转
- 304:走本地缓存
- 400:客户端错误
- 401:认证错误
- 403:找不主页,默认返回 index.html,权限不足
- 404:找不到页面,路径不对
- 500:服务端错误
- 502:找不到后端主机
- 503:服务器过载
- 504:超时
Accept-Ranges: bytes:
类型大小
Cache-Control: private:
缓存控制,受保护
Connection: keep-alive:
长连接
Content-Encoding: gzip:
压缩
Content-Type: text/html;charset=utf-8:
返回内容类型
Date: Fri, 06 Nov 2020 06:09:28 GMT:
服务器时间,东八区
Expires: Fri, 06 Nov 2020 06:08:48 GMT:
浏览器缓存有效性持续时间
Last-modified: Mon, 26 Oct 2020 15:53:28 GMT:
上次修改时间,做缓存
Server: BWS/1.1:
使用 web 软件版本
Referer:
记录上一次过来的页面域名,我是从那个过来的。
Location:
重定向到那
内容主体 ......
四. 补充内容(get/post 区别)、(转发/重定向区别)
4.1. get/post 区别
(1). 请求的内容和作用不一样
get
用于请求指定的页面信息,并返回实体主体。
post
用于提交表单、上传文件,数据是包含在请求体中的。
(2). 请求的参数直接在浏览器地址栏中显示?
get
会,参数是通过 url
传递。
post
不会,参数是通过 Request body
。
(3). 发送次数不一样
get
会产生一个数据包:浏览器会先 http header
和 data
一起发送出去,服务器响应 200
(返回数据)。
post
会产生两个数据包(2 次):两次发包的优点,可以保证数据的完整性;
浏览器会先发送 header
,服务器响应 100
(临时请求) continue
,在发送 data
,服务器响应 200
(返回数据)。
(4). 存储的容量不一样
get
存储的参数不能超过 2k
post
没有限制
4.2. 转发/重定向区别
(1). dispatcher
转发:能进入 WEB-INF
目录下,能共享数据,不能跳转外网,浏览器地址栏不会发生改变。
(2). redirect
重定向:不能进入 WEB-INF
目录下,不能共享数据,能跳转外网,浏览器地址会发生改变。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于