应用层协议HTTP

目录

一、认识URL

二、HTTP协议的请求/响应格式

三、HTTP协议中的详细属性

1.请求/响应报头

2.请求方法

3.状态码

(1)基本状态码

(2)重定向状态码


一、认识URL

平时俗称的网址就是URL,也叫统一资源定位符

例如QQ官网Windows版本的下载网址:https://im.qq.com/pcqq/index.shtm

现在使用的协议都是https,但是不影响我们以它为例讲解URL:

  • https是使用的应用层协议
  • im.qq.com是域名,会通过DNS自动转换为IP地址
  • /pcqq/index.shtm是文件路径,所有的资源都存放在服务器中,根据文件路径就可以确认所查找的文件资源在服务器的具体位置
  • 端口号,协议与端口号是强关联的,使用http协议的服务器默认端口号为80,使用https协议的服务器默认端口号为443

有了IP地址和端口号,以及文件路径,就可以在互联网中找到指定服务器中的指定资源了

二、HTTP协议的请求/响应格式

请求格式:

  • 请求行:
  1. 请求方法:GET、POST、HEAD、DELETE......
  2. URI:一般是URL中所访问资源的路径,也可能是完整的URL
  3. HTTP版本:http/1.0、http/1.1、http/2.0
  • 请求报头:Key: Value,一般是本次请求的一些属性,或者发起请求方的一些属性
  • 空行:区分报头和正文(空行之前的都是报头、空行之后的是正文)
  • 请求正文:可有可无

响应格式:

  • 状态行:
  1. HTTP版本:必须与请求格式中的版本对应(http/1.0、http/1.1、http/2.0)
  2. 状态码:如、100,200,301,304,404,500等
  3. 状态码描述:对于状态码的解释
  • 响应报头:包含内容控制头、连接控制头、缓存控制头、安全相关头、重定向头
  • 空行:区分响应报头和响应正文
  • 响应正文:请求方所请求的资源内容,例如HTML网页、图片、音频等

三、HTTP协议中的详细属性

1.请求/响应报头
  • Content-Type:请求/响应资源的类型,如text/html(HTML文档),video/mp4(MP4视频),image/gif(GIF图片),text/plain(纯文本)......
  • Content-Length:正文的长度
  • Connection:控制连接状态,即持久连接和非持久连接。持久连接允许客户端和服务器在请求/响应完成后不立即关闭 TCP 连接,以便在同一个连接上发送多个请求和接收多个响应。在 HTTP/1.1 协议中,默认使用持久连接。在 HTTP/1.0 协议中,默认连接是非持久的。Connection: keep-alive:表示希望保持连接以复用 TCP 连接。 Connection: close:表示请求/响应完成后,应该关闭 TCP 连接。
  • Host:客户端告知服务端请求的资源在哪个主机的哪个端口上(客户端访问的服务端可能会将资源存放在其他服务器上,当前服务器再做二次请求)
  • User-Agent:声明用户所使用的操作系统以及浏览器版本信息
  • Referer:表明当前页面是从哪个页面跳转过来的(服务器中存在多个HTML页面,可以相互跳转)
  • Location:存放的是新的URL,配合状态码3xx和201使用,当服务器返回3xx状态码(如301、302、307等)时,Location头部指定客户端应跳转的新URL;当服务器返回201状态码时,表明服务器正在创建新资源,Location可提供新资源的访问路径
  • Cookie:服务器通过Set-Cookie头部向客户端(浏览器)写入数据,客户端后续请求通过Cookie头部携带该数据。通常用于实现会话(session)的功能
2.请求方法

最常用的是GET和POST方法

  • GET:用于请求URL中的指定资源;或者通过URL向服务器传递参数
  • POST:用于向服务器提交数据,适用于表单提交、文件上传、触发服务端操作等场景;或者通过应答的正文向服务器传递参数
3.状态码
(1)基本状态码

|-----|------------------|---------------------------------|
| 状态码 | 含义 | 应用样例 |
| 100 | Continue | 上传大文件时, 服务器告诉客户端可以继续上传 |
| 200 | OK | 访问网站首页, 服务器返回网页内容 |
| 201 | Created | 发布新文章, 服务器返回文章创建成功的信息 |
| 204 | No Content | 删除文章后, 服务器返回"无内容"表示操作成功 |
| 301 | MovedPermanently | 网站换域名后, 自动跳转到新域名; 搜索引擎更新网站链接时使用 |

|-----|----------------------|-------------------------------|
| 302 | Found 或 See Other | 用户登录成功后, 重定向到用户首页 |
| 304 | Not Modified | 浏览器缓存机制, 对未修改的资源返回304 状态码 |
| 400 | Bad Request | 填写表单时, 格式不正确导致提交失败 |
| 401 | Unauthorized | 访问需要登录的页面时, 未登录或认证失败 |
| 403 | Forbidden | 尝试访问你没有权限查看的页面 |
| 404 | Not Found | 访问不存在的网页链接 |
| 500 | Internal ServerError | 服务器崩溃或数据库错误导致页面无法加载 |
| 502 | Bad Gateway | 使用代理服务器时, 代理服务器无法从上游服务器获取有效响应 |
| 503 | Service Unavailable | 服务器维护或过载, 暂时无法处理请求 |

(2)重定向状态码

|-----|-------------------|-----------|--------------------------------|
| 状态码 | 含义 | 是否为临时重定向 | 应用样例 |
| 301 | MovedPermanently | 否(永久重定向) | 网站换域名后, 自动跳转到新域名;搜索引擎更新网站链接时使用 |
| 302 | Found 或 See Other | 是(临时重定向) | 用户登录成功后,重定向到用户首页 |
| 307 | TemporaryRedirect | 是(临时重定向) | 临时重定向资源到新的位置(较少使用) |
| 308 | PermanentRedirect | 否(永久重定 向) | 永久重定向资源到新的位置(较少使用) |

HTTP状态码301和302都要依赖报头属性Location:

  • 301(永久重定向):当服务器返回 HTTP 301 状态码时, 表示请求的资源已经被永久移动到新的位置。服务器会在响应中添加一个 Location 头部, 用于指定资源的新位置。 这个 Location 头部包含了新的 URL 地址, 浏览器会自动重定向到该地址。
  • 302(临时重定向):当服务器返回 HTTP 302 状态码时, 表示请求的资源临时被移动到新的位置。服务器也会在响应中添加一个 Location 头部来指定资源的新位置。 浏览器会暂时使用新的 URL 进行后续的请求, 但不会缓存这个重定向。
相关推荐
小安运维日记3 小时前
CKS认证 | Day3 K8s容器运行环境安全加固
运维·网络·安全·云原生·kubernetes·云计算
iOS技术狂热者3 小时前
多图超详细安装flutter&Android Studio开发环境,并配置插件
websocket·网络协议·tcp/ip·http·网络安全·https·udp
IEVEl4 小时前
Centos7 开放端口号
linux·网络·centos
今夜有雨.4 小时前
HTTP---基础知识
服务器·网络·后端·网络协议·学习·tcp/ip·http
Synfuture阳途4 小时前
关于终端安全管理系统的超全解析
网络·安全·web安全
echoHaha034 小时前
域渗透(web安全)
网络·安全
盛满暮色 风止何安6 小时前
VLAN的高级特性
运维·服务器·开发语言·网络·网络协议·网络安全·php
yangpipi-7 小时前
6. 王道_网络协议
网络·网络协议
洁白的郁金香7 小时前
HCIP-6 DHCP
网络·学习
是程序喵呀7 小时前
软考《信息系统运行管理员》- 6.2 信息系统硬件的安全运维
网络·安全·软考