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),保证了数据传输的安全性。
相关推荐
九英里路4 小时前
protobuf快速上手
网络·c++·中间件·json·谷歌·序列化·protobuf
女神下凡10 小时前
芯参谋(107):杰理AC_中科蓝讯_开发指南
linux·服务器·网络·单片机·嵌入式硬件
我不会插花弄玉12 小时前
5.应⽤层协议HTTP【由浅入深-网络】
http
爱和冰阔落14 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
say_fall16 小时前
【Linux网络编程】UDP套接字编程:系统编程组件、基础回显服务、InetAddr与地址转换、翻译服务与线程池聊天室
linux·服务器·网络·udp·vr
我不会插花弄玉1 天前
6.传输层协议UDP【由浅入深-网络】
网络·网络协议·udp
火云代理1 天前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
xbzb1 天前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
火云代理1 天前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖1 天前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习