浅读 HTTP

简介: 浅读 HTTP

前言


HTTP,全称是 Hyper Text Transfer Protocol,译为“超文本传输协议”(超文本转移协议)。


正文


在很久很久以前,人们为了在世界范围内轻松知识共享,提出了 Web(World Wide Web)的概念。简单来说,就是在 Web 浏览器的地址栏输入 Web 页面对应的 URL,Web 浏览器从 Web 服务器端获取到文件资源等信息,从而显示出 Web 页面。它使用 HTTP 协议为规范,完成在客户端与服务端一系列的运作流程。

最初,HTTP 协议出现是为了解决文本传输的难题。但由于协议本身非常简单,现在 HTTP 协议已经超出了 Web 这个框架,被运用到各种场景里。

尽管我们常说,在 Web 中客户端与服务器端是通过 HTTP 协议进行通信的,但不代表这个通信的全过程都由 HTTP 就能完成的。

通常使用的的网络是在 TCP/IP 协议簇的基础上运作的,而 HTTP 属于它内部的一个子集。


概念


协议(Protocol)


在计算机与网络设备进行通信,双方需要基于相同的方法。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则,这种规则被称为“协议”。


TCP/IP 协议(簇)


TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇(Protocol Suite,也有译作“协议族”)。TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指由 FTP、SMTP、TCP、IP 等协议构成的协议簇。由于在 TCP/IP 协议中 TCP 协议和 IP 协议最具代表性,因此被称为 TCP/IP 协议。


计算机网络体系结构分层


OSI(Open System Interconnect)七层模型:

28.webp.jpg


OSI 七层模型与 TCP/IP 四层模型的区别:


27.webp.jpg


OSI 七层模型:

应用层(Application Layer)
    网络服务与最终用户的一个接口。
    协议有:HTTP、FTP、TFTP、SMTP、SNMP、DNS、TELNET、POP3、DHCP 等。
表示层(Presentation Layer)
    数据的表示、安全、压缩。
    格式有 JPEG、ASCII、EBCDIC、加密格式等。
会话层(Session Layer)
    建立、管理、终止会话。
    对应主机进程,指本地主机与远程主机正在进行的会话。
传输层(Transport Layer)
    定义传输数据的协议端口号,以及流控和差错校验。
    协议有:TCP、UDP,数据包一旦离开网卡即进入网络传输层。
网络层(Network Layer)
    进行逻辑地址寻址,实现不同网络之间的路径选择。
    协议有:ICMP、IGMP、IP(IPv4、IPv6)。
数据链路层(Data Link Layer)
    建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
    将比特组合层字节进而组合成帧,用 MAC 地址访问介质,错误发现但不能纠正。
物理层(Physical Layer)
    建立、维护、断开物理连接。(由底层网络定义协议)


TCP/IP 四层模型:


TCP/IP 协议簇按层次分别分为:应用层、传输层、网络层和数据链路层。

应用层:
    应用层决定了向用户提供应用服务时通信的活动。
    TCP/IP 协议簇内预设了各类通用的应用服务。比如:FTP、DNS 服务就是其中两类。
    HTTP 协议也处于该层。
传输层:
    传输层对应上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
    在传输层有两个性质不同的协议:TCP 和 UDP。
网络层(网络互连层):
    网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
    与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输线路。
链路层(数据链路层、网络接口层)
    用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(网络适配器,即网卡)、及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。


三、HTTP


HTTP 状态码

2XX(成功)
    200 OK:表示请求在服务端被正常处理了。
    204 No Content:表示请求已正常处理,但在返回的响应报文中不含实体的主体部分。
    206 Partial Content:表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。
3XX(重定向)
    301 Moved Permanently:表示永久重定向。它会按照响应报文的 Location 字段重新发起请求。
    302 Found:表示临时重定向。与 301 相似,但它只是临时性质的,换句话说,资源对应 URI 未来还有可能发生改变。
    303 See Other:表示请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。
    304 Not Modified:表示服务器端资源未发生改变,可直接使用客户端未过期的缓存。尽管 304 被划分在 3XX 类别中,但它和重定向没有关系。
    307 Temporary Redirect:临时重定向,与 302 Found 有着相同的含义。但它不会从 POST 变成 GET。
4XX(客户端错误)
    400 Bad Request:表示请求报文中存在语法错误。
    401 Unauthorized:表示用户认证失败,即请求需要有认证信息。
    403 Forbidden:表示对请求资源的访问被服务器拒绝了。
    404 Not Found:表示服务器上无法找到请求的资源。
5XX(服务器错误)
    500 Internal Server Error:表示服务器端在执行 请求时发生了错误。
    503 Service Unavailable:表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。


HTTP 报文

报文首部
空行
报文主体
报文首部分为:请求报文首部、响应报文首部
请求报文包括:请求行、首部字段(请求首部字段、通用首部字段、实体首部字段)、其他
响应报文包括:状态行、首部字段(响应首部字段、通用首部字段、实体首部字段)、其他
请求行:由方法、URI、HTTP 版本组成
状态行:由HTTP 版本、状态码(数字和原因短语)组成


未完待续...


目录
相关文章
|
7月前
|
网络协议 安全 网络安全
2.什么是HTTP
2.什么是HTTP
108 0
|
缓存 网络协议
01JavaWeb基础 - HTTP介绍
01JavaWeb基础 - HTTP介绍
48 0
|
7月前
|
算法 数据安全/隐私保护 UED
什么是HTTP2
【4月更文挑战第12天】HTTP/2是1999年后HTTP协议的首次重大更新,由IETF的httpbis小组开发。关键特性包括头部压缩(使用HPACK算法)、多路复用(提高效率,减少延迟)、二进制传输(更灵活高效)和支持服务器推送(优化用户体验)。虽然语义不变,但HTTP/2已广泛应用于gRPC等服务,并强制要求使用HTTPS。这一更新显著提升了Web性能和用户体验。
51 5
|
缓存 网络协议 C++
HTTP1.0 vs HTTP1.1 vs HTTP2.0
HTTP1.0 vs HTTP1.1 vs HTTP2.0
108 0
|
Web App开发 存储 网络协议
Http中你必须知道那点事
HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。 如果想知道具体的格式,可以打开浏览器,点击F12打开开发者工具,点击Network来查看某一次请求的请求数据和响应数据具体的格式内容,如下图所示:
101 0
Http中你必须知道那点事
|
存储 缓存 网络协议
💗HTTP/2.0及HTTP/3.0的那些事儿
💗HTTP/2.0及HTTP/3.0的那些事儿
403 1
💗HTTP/2.0及HTTP/3.0的那些事儿
|
存储 缓存 网络协议
HTTP/1.0 HTTP/1.1、HTTP/2、HTTP/3 都做了啥
简单的说是,超过普通文本。但具体一些,咋们说的普通文本一般是值文字组成的文章。但是在网页中,有这么一种文本,可以是文本、图片、音频、视频等组成。但是最关键的是里面还可以有超链接,从一个文本跳转到另外一个文本。
HTTP/1.0 HTTP/1.1、HTTP/2、HTTP/3 都做了啥
|
域名解析 缓存 网络协议
聊聊HTTP,越详细越好
http这道八股文在面试中屡见不鲜,也是屡战屡败,今天卷http也是让自己重新回顾http,虽然在实际项目中,你不需要像面试一样被刨根问底,来自灵魂的拷问,但是,高端岗位,高端面试总会让你欲罢不能,说下http的理解,这道看似简单的菜,但是当你吃的时候,总会耐人寻味。
189 0
聊聊HTTP,越详细越好
|
缓存 网络协议 算法
二、HTTP篇
二、HTTP篇
165 0
二、HTTP篇
|
存储 缓存 网络协议
HTTP几个简单问题哈
《基础》系列
158 0
HTTP几个简单问题哈