应用层协议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 报头,但是不会缓存重定向,一般用于临时从一个页面跳转到另一个页面。

相关推荐
Flying_Fish_roe1 小时前
linux-网络管理-网络抓包
linux·网络·php
小技与小术3 小时前
lvs-nat模式实验详解
linux·运维·服务器·网络·lvs
喵不拉几3 小时前
WebSocket 协议
网络·websocket·网络协议
晓生谈跨境3 小时前
网络丢包现象使用什么协议可以缓解
网络
大嘴巴子4 小时前
华为ensp中vlan与静态路由技术的实现
网络·智能路由器
加油,旭杏4 小时前
【Linux】NAT
linux·网络·智能路由器·nat·nart
胡俊杰5395 小时前
9月18日
服务器·网络
小堃学编程5 小时前
计算机网络(六) —— http协议详解
网络协议·计算机网络·http
月临水6 小时前
JavaEE:网络编程(套接字)
java·网络·java-ee