Linux HTTP协议

目录

1.浏览器与服务器通信过程

浏览器与web服务器在应用层 通信使用的是HTTP协议(超文本传输协议),而HTTP协议在传输层使用的是TCP协议。那么浏览器需要和web服务器三次握手建立连接后,浏览器才可以向web服务器发送HTTP请求报文,服务器收到请求报文后,向浏览器回复HTTP应答报文。

浏览器向服务器发起连接前,需要得到服务器的IP及端口。用户在浏览器中通常只输入网址(网站域名),浏览器会通过DNS服务查询获取到服务器的IP地址。 对于端口来讲,使用HTTP协议的程序一般默认使用80端口。如下图所示:

2.HTTP请求报头

(1)HTTP的请求报头结构

连接方式有长连接和短链接:

浏览器服务器建立连接后,如果两次以上的请求复用同一个TCP连接,则称之为长连接 。如果浏览器发送一次请求报文,服务器回复一次应答就断开连接,下次交互再重新进行三次握手建立连接,那么就被称作短连接。使用长连接显然是更好一些,可以减少网络中的同步报文,也使得服务器的响应速度变快。

Keep-Alive是长连接,close是短链接。

(2)HTTP的请求方法

这些方法中,HEAD、GET、OPTIONS和TRACE被视为安全的方法,因为它们只是从服务器获取资源或信息,而不对服务器进行其他任何修改。而POST、PUT、DELETE和PATCH则影响服务器上的资源。

另一方面,HEAD、GET、OPTIONS、TRACE、PUT和DELETE是等幂的,,即多次连续的、重复的请求和只发送一次该请求具有完全相同的效果。而POST方法则不同,连续多次发送同样一个请求可能进一步影响服务器的资源。

HEAD、GET和POST也是Linux中提供的几种命令,其含义基本与HTTP协议中同名的请求方法相同,它们适合用来快速测试web服务器。

主要记住以下两个请求方法:

GET:表示客户端以只读的方式来申请资源,不对服务器产生任何其他影响。

POST:客户端向服务器提交数据的方法。这种方法会影响服务器:服务器可能根据收到的数据动态创建新的资源,也可能更新原有的资源 。

3.HTTP应答报头

(1)HTTP的应答报头结构

关于Cookie:

HTTP协议是一种无状态的协议,即每个HTTP请求之间没有任何上下文关系。如果服务器处理后续HTTP请求时需要用到前面的HTTP请求的相关信息,客户端必须重传这些信息。这样就导致HTTP请求必须传输更多的数据。

在交互式web应用程序兴起后,HTTP协议的这种无状态特性就显得不适应了,因为交互程序通常要承上启下。因此,我们要使用额外的手段来保持HTTP连接状态,常见的解决方法就是Cookie。Cookie是服务器发送给客户端的特殊信息 (通过HTTP应答的头部字段"Set-Cookie"),客户端每次向服务器发送请求的时候都需要带上这些信息(通过HTTP请求的头部字段"Set-Cookie")。这样服务器就可以区分不同的客户了。基于浏览器的自动登录就是用Cookie实现的。

(2) HTTP的应答状态

相关推荐
碳基沙盒13 分钟前
OpenClaw 多 Agent 配置实战指南
运维
不可能的是26 分钟前
前端 SSE 流式请求三种实现方案全解析
前端·http
深紫色的三北六号9 小时前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash13 小时前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI1 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux
蝎子莱莱爱打怪3 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀3 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应3 天前
vi编辑器使用
linux·后端·操作系统