Linux网络--4、应用层协议Http

目录

一、引入

二、宏观格式

2.1格式

2.2数据传输过程

三、请求方法

四、状态码

五、http报头

六、http版本


一、引入

在浏览器上对于一个网站的访问我们可以看到

这样一个格式的网址请求URL(网址定位符),今天我们就了解其中的应用层协议http

二、宏观格式

2.1格式

http协议的宏观格式包括请求行、请求报头、空行和请求正文 ,其中各部分以\r\n作为分隔符,在具体传输中将形成一个以\r\n为分割的超长的文本(字节流),因此http协议又称为超文本传输协议,基于tcp形成,无连接

2.2数据传输过程

三、请求方法


其中较为常用的是GET和POST方法

复制代码
GET:
    用于请求指定的URL资源
    GET /index.html HTTP/1.1
    特性:指定资源经服务器端解析后返回响应内容

POST:
    ⽤于传输实体的主体,通常⽤于提交表单数据
    POST /submit.cgi HTTP/1.1
    特性:可以发送⼤量的数据给服务器,并且数据包含在请求体中。

四、状态码

在http响应中会给用户返回请求的结果,该结果以状态码的形式返回
最常⻅的状态码, ⽐如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)

复制代码
301状态码:
    为永久重定向,表示请求的资源已经永久移到了新的位置
    这种情况下,服务器会在响应中添加⼀个Location头部,⽤于指定资源的新位置。这个Location
头部包含了新的URL地址,浏览器会⾃动重定向到该地址。
    HTTP/1.1 301 Moved Permanently\r\n
    Location: https://www.new-url.com\r\n

302状态码:
    临时重定向,请求的资源临时移到了新的位置
    服务器也会在响应中添加⼀个Location头部来指定资源的新位置。浏览器会暂时使⽤新的
URL进⾏后续的请求,但不会缓存这个重定向。
    HTTP/1.1 302 Found\r\n
    Location: https://www.new-url.com\r\n

总结:
    ⽆论是HTTP 301还是HTTP 302重定向,都需要依赖Location选项来指定资源的新位置。这个
Location选项是⼀个标准的HTTP响应头部,⽤于告诉浏览器应该将请求重定向到哪个新的URL地址。

五、http报头

六、http版本

HTTP(Hypertext Transfer Protocol,超⽂本传输协议)作为互联⽹中浏览器和服务器间通信的基⽯,经历了从简单到复杂、从单⼀到多样的发展过程。以下将按照时间顺序,介绍HTTP的主要版本、核⼼技术及其对应的时代背景。

复制代码
HTTP/0.9
核⼼技术:
• 仅⽀持GET请求⽅法。
• 仅⽀持纯⽂本传输,主要是HTML格式。
• ⽆请求和响应头信息。

时代背景:
• 1991年,HTTP/0.9版本作为HTTP协议的最初版本,⽤于传输基本的超⽂本HTML内容。
• 当时的互联⽹还处于起步阶段,⽹⻚内容相对简单,主要以⽂本为主。


HTTP/1.0
核⼼技术:
• 引⼊POST和HEAD请求⽅法。
• 请求和响应头信息,⽀持多种数据格式(MIME)。
• ⽀持缓存(cache)。
• 状态码(status code)、多字符集⽀持等。

时代背景:
• 1996年,随着互联⽹的快速发展,⽹⻚内容逐渐丰富,HTTP/1.0版本应运⽽⽣。
• 为了满⾜⽇益增⻓的⽹络应⽤需求,HTTP/1.0增加了更多的功能和灵活性。
• 然⽽,HTTP/1.0的⼯作⽅式是每次TCP连接只能发送⼀个请求,性能上存在⼀定局限。


HTTP/1.1
核⼼技术:
• 引⼊持久连接(persistent connection),⽀持管道化(pipelining)。
• 允许在单个TCP连接上进⾏多个请求和响应,提⾼了性能。
• 引⼊分块传输编码(chunked transfer encoding)。
• ⽀持Host头,允许在⼀个IP地址上部署多个Web站点。

时代背景:
• 1999年,随着⽹⻚加载的外部资源越来越多,HTTP/1.0的性能问题愈发突出。
• HTTP/1.1通过引⼊持久连接和管道化等技术,有效提⾼了数据传输效率。
• 同时,互联⽹应⽤开始呈现出多元化、复杂化的趋势,HTTP/1.1的出现满⾜了这些需求。


HTTP/2.0
核⼼技术:
• 多路复⽤(multiplexing),⼀个TCP连接允许多个HTTP请求。
• ⼆进制帧格式(binary framing),优化数据传输。
• 头部压缩(header compression),减少传输开销。
• 服务器推送(server push),提前发送资源到客⼾端。

时代背景:
• 2015年,随着移动互联⽹的兴起和云计算技术的发展,⽹络应⽤对性能的要求越来越⾼。
• HTTP/2.0通过多路复⽤、⼆进制帧格式等技术,显著提⾼了数据传输效率和⽹络性能。
• 同时,HTTP/2.0还⽀持加密传输(HTTPS),提⾼了数据传输的安全性。


HTTP/3.0
核⼼技术:
• 使⽤QUIC协议替代TCP协议,基于UDP构建的多路复⽤传输协议。
• 减少了TCP三次握⼿及TLS握⼿时间,提⾼了连接建⽴速度。
• 解决了TCP中的线头阻塞问题,提⾼了数据传输效率。

时代背景:
• 2022年,随着5G、物联⽹等技术的快速发展,⽹络应⽤对实时性、可靠性的要求越来越⾼。
• HTTP/3.0通过使⽤QUIC协议,提⾼了连接建⽴速度和数据传输效率,满⾜了这些需求。
• 同时,HTTP/3.0还⽀持加密传输(HTTPS),保证了数据传输的安全性。
相关推荐
AI大模型应用之禅3 小时前
全球股市估值与可持续农业垂直种植技术的关系
网络·ai
掘根3 小时前
【仿Muduo库项目】HTTP模块2——HttpRequest子模块,HttpResponse子模块
网络·网络协议·http
MOON404☾5 小时前
006.Backdoor后门编写
网络·安全·网络安全·系统安全
ha20428941946 小时前
Linux操作系统学习记录之---TcpSocket
linux·网络·c++·学习
李白你好7 小时前
Burp Suite插件 | 高级HTTP头操作工具
网络·网络协议·http
石像鬼₧魂石7 小时前
22端口(OpenSSH 4.7p1)渗透测试完整复习流程(含实战排错)
大数据·网络·学习·安全·ubuntu
xwj_8655743328 小时前
HTTP协议、接口测试流程、接口测试流程&文档&用例
网络·网络协议·http
RisunJan9 小时前
Linux命令-iptables-restore命令(从文件批量恢复 iptables 防火墙规则)
linux·运维·网络
..过云雨9 小时前
网络计算器实现 - 自定义套接字+序列化+守护进程
网络·网络协议·tcp/ip
hugerat10 小时前
在AI的帮助下,用C++构造微型http server
linux·c++·人工智能·http·嵌入式·嵌入式linux