Http 简单介绍

本贴最后更新于 1451 天前,其中的信息可能已经时移世易

Http 简单介绍

Http 是无状态(无法记录用户操作、状态、信息记录,只能通过 cookie、session 这些会话机制)。
http常用端口:80,8080https(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 headerdata 一起发送出去,服务器响应 200(返回数据)。
post 会产生两个数据包(2 次):两次发包的优点,可以保证数据的完整性;
浏览器会先发送 header,服务器响应 100(临时请求) continue,在发送 data,服务器响应 200(返回数据)。

(4). 存储的容量不一样
get 存储的参数不能超过 2k
post 没有限制

4.2. 转发/重定向区别

(1). dispatcher 转发:能进入 WEB-INF 目录下,能共享数据,不能跳转外网,浏览器地址栏不会发生改变。
(2). redirect 重定向:不能进入 WEB-INF 目录下,不能共享数据,能跳转外网,浏览器地址会发生改变。

  • HTTP
    75 引用 • 128 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...