【计算机网络】HTTP协议

一、网址

1.URL

URL就是我们平时说的网址

2.urlencode/urldecode

像 / ? : 等这样的字符,已经被url当做特殊意义理解了。因此这些字符不能随意出现

如果某个参数中需要带有这些特殊字符,就必须先对特殊字符进行转义 -> urlencode

服务器收到url请求后,在对特殊数据进行解码 -> urldecode

如何编码 && 如何解码?可以在网上搜索:urlencode在线编码

二、HTTP协议格式

HTTP协议功能:就是通过http协议从服务器上拿下来对应的"资源" -> 需要Linux系统的路径结构

因为HTTP能搞定的文件资源种类特别多,所以:HTTP是超文本传输协议!

1.请求响应格式

(1)请求和相应的读取

① 首先可以读取完整的一行 -> 请求行

② while(读取完整的一行) -> 所有的请求行+请求报头全部读完 -> 直到空行!

③ 我们能保证把报头读完,报头有一个属性:Content-Length:正文长度

④ 根据解析出来内容长度,读取正文即可!

(2)序列化/反序列化

Http自己实现的,不需要我们自己实现

2.常见Header

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

(2)Content-Length: 正文(Body)的长度

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

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

(5)referer: 当前页面是从哪个页面跳转过来的

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

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

3.HTTP的方法

Http有很多方法(服务器根据方法得知自己要做什么事),其中最重要的就是GET和POST

(1)GET

从服务器上检索数据,不会对数据产生其他影响

(2)POST

将数据发送到服务器并且新建资源,数据被包含在请求的正文中

(3)GET和POST的区别

① GET通过url传递参数,POST通过请求的正文提交参数

② POST方法通过正文提交参数,所以一般用户看不到,私密性更好;GET方法不私密

③ GET和POST方法都不安全!要谈安全,必须加密 -> Https

④ GET方法通过URL传递参数,参数不能太大;POST方法通过正文传递参数,参数可以很大

4.HTTP的状态码

最常见的状态码:200(OK), 404(Not Found), 403(Forbidden), 302(Redirect), 504(Bad Gateway)

特别介绍 3XX状态码:重定向(分为临时重定向和永久重定向)

三、长链接

我们看到的一张网页,实际上可能由多种元素构成 -> 一张完整的网页需要多次http请求

如果频繁发起http请求,就会发生频繁创建tcp连接的问题,从而导致效率低

引入长连接 :建立长连接,获取一大份资源的时候,重复利用这一条连接、不在创建多个连接

四、会话保持

会话保持不是http天然具备的,是后期经过使用之后才发现需要这个功能

http协议是无状态的,但是用户需要。http会话保持:最开始登陆一次之后就不用在登陆了

1.实现会话保持的老方法

这种方法会出现两个问题:①账号密码泄露 ②服务器认为非法用户是你

2.实现会话保持的新方法

引入session文件(Client -> cookie;Server -> session)

相关推荐
wuminyu15 分钟前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
longlongzihan20 分钟前
链表找环:Floyd 判圈算法(LeetCode 141 & 142 )
c++·算法·leetcode·链表
Sarvartha24 分钟前
内部类知识
java·开发语言
liulilittle32 分钟前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
夜雪一千32 分钟前
Python 生成模拟地址数据:Faker之外的备选库
网络·windows·python
Logic10140 分钟前
C语言/数据结构欧几里得算法题解:长方形切割最大正方形——贪心划分计数
c语言·数据结构·算法·贪心算法·时间复杂度·空间复杂度·欧几里得算法
DongQiShanRen44 分钟前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust
小此方1 小时前
Linux网络(二十一):深入理解 TCP 异常处理:网线断开、Keepalive 保活机制与 Linux 内核传输层协议源码剖析
linux·网络·tcp/ip
pride.li1 小时前
Python 安装
linux·python·ubuntu
FPGA小徐1 小时前
【一生一芯 / PA】异常响应机制:RISC-V 中 ecall → mtvec → mret 的完整代
开发语言·数据库·c#