应用层协议HTTP介绍

一、HTTP协议介绍

HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本。

超文本:视频,音频,图片...

HTTP 协议是一个无连接、无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息。

二、URL

就是我们平时说的网址。

我们会发现好像https协议里面没有端口号,真是这样的话就不能找到一个唯一的资源。

其实协议名称和端口号是强相关的,当浏览器发起请求时会自动拼接端口号80,也就是https对应80号端口,所以端口号被默认忽略。

注意:

URL里面有自己的特殊字符,://#=&,若用户访问资源时URL里面要拼接这些字符就会对URL产生干扰,所以要对特殊字符进程编码(urlencode:% + 特殊字符ASCII码的16进制)

三、HTTP协议请求格式

请求方法:GET,POST,HEAD,DELETE...

URI:要访问的资源路径,不区分URL

HTTP版本:http/1.0 http/1.1 http/2.0 ...

四、HTTP协议应答格式

应答正文一定有资源路径。

五、HTTP请求方法

1、GET

一般用来获取静态资源,也可以通过 url 向服务器发送参数。

如上图,?字符之后就是参数,username 是 .sgrh,还有一个参数 password 是 190420

2、POST

通过 http 请求正文发送参数

3、GET vs POST

(1)url 传递参数大小不大

(2)POST 比 GET 传参更私密,但两者都不安全,要对正文加密才安全。

4、如何实现请求方法

前端网页必须要有 form 表单,默认 method 是 GET

若 method 是 GET,用户名密码写入请求的 url 中。

若 method 是 POST,用户名密码写入请求的正文中。

action 是一种服务,一个写好的业务。

这里的 /s 就是百度的一个业务 search,参数有 wd=hello,是搜索关键字 hello

六、HTTP常见请求报头

Content-Type: 数据类型(text/html 等)

Content-Length: 正文的长度。

Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上。

User-Agent: 声明用户的操作系统和浏览器版本信息。

referer: 当前页面是从哪个页面跳转过来的。

Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问。

Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的。

connection报头

HTTP 中的 Connection 字段是 HTTP 报文头的一部分,它主要用于控制和管理客户 端与服务器之间的连接状态

核心作用

管理持久连接:Connection 字段还用于管理持久连接(也称为长连接)。持久连接允许客户端和服务器在请求/响应完成后不立即关闭 TCP 连接,以便在同一个连接 上发送多个请求和接收多个响应。

HTTP/1.1:在 HTTP/1.1 协议中,默认使用持久连接。当客户端和服务器都不明 确指定关闭连接时,连接将保持打开状态,以便后续的请求和响应可以复用同一个连 接。

HTTP/1.0:在 HTTP/1.0 协议中,默认连接是非持久的。如果希望在 HTTP/1.0 上实现持久连接,需要在请求头中显式设置 Connection: keep-alive。

语法格式

Connection: keep-alive:表示希望保持连接以复用 TCP 连接。

Connection: close:表示请求/响应完成后,应该关闭 TCP 连接。

Cookie 报头

用于在客户端存储少量信息,用于会话功能,方便随时验证用户身份。

例如,一开始你访问爱奇艺网站,你要先登录,如果你不是会员,你就要看广告,当你去看下一集时网站在此建立请求,如果没有 cookie 保存用户信息,你又要登录。

所以客户端发给服务器请求时会带上 cookie 信息,告诉服务器用户身份。

七、HTTP状态码和状态码描述

1、介绍状态码

|-----|-----------------------|--------------------------------------|
| 状态码 | 含义 | 举例 |
| 100 | Continue | 我接受了你的请求,请你继续。上传大文件时,服务器告诉客户端可以 继续上传 |
| 200 | OK | 请求处理完成,过程一切正确 |
| 201 | Created | 创建成功(文件,文章...) |
| 204 | No Content | 删除成功(文件,文章...) |
| 301 | Moved Permanently | 网站换域名后,自动跳转到新域名;搜 索引擎更新网站链接时使用 |
| 302 | Found | 用户登录成功后,重定向到用户首页 |
| 304 | Not Modified | 浏览器缓存机制,对未修改的资源返回 304 状态 |
| 400 | Bad Request | 填写表单时,格式不正确导致提交失败 |
| 401 | Unauthorized | 访问需要登录的页面时,未登录或认证 失败 |
| 403 | Forbidden | 尝试访问你没有权限查看的页面 |
| 404 | Not Found | 访问页面不存在 |
| 500 | Internal Server Error | 服务器崩溃或数据库错误导致页面无法 加载 |
| 502 | Bad Gateway | 使用代理服务器时,代理服务器无法从 上游服务器获取有效响应 |
| 503 | Service Unavailable | 服务器维护或过载,暂时无法处理请求 |

2、理解重定向

3、永久重定向 vs 临时重定向

(1)永久重定向

当服务器发生更改,老客户访问时会被添加包含新服务器 url 的 Location 请求报头,浏览器自动重定向。一般用于网站更换域名之后自动跳转到新域名,给搜索引擎更新连接使用(新替换旧)

(2)临时重定向

也会添加 Location 报头,但是不会缓存重定向,一般用于临时从一个页面跳转到另一个页面。

相关推荐
懒大王就是我13 分钟前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine20239126 分钟前
06 网络编程基础
java·网络
海绵波波1072 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川5 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面5 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程8 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
幺零九零零9 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
23zhgjx-NanKon9 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon9 小时前
华为eNSP:mux-vlan
网络·安全·华为
点点滴滴的记录9 小时前
RPC核心实现原理
网络·网络协议·rpc