HTTP 协议简介

宁睿  论坛元老 | 2025-3-10 17:33:12 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1068|帖子 1068|积分 3214



           HTTP,即超文本传输协议(HyperText Transfer Protocol),是一种用于分布式、协作式和超媒体信息体系的应用层协议。简单来说,它是客户端(如浏览器)和服务器之间进行通信的规则。通过 HTTP 协议,客户端可以向服务器发送请求,获取各种资源,如网页、图片、视频等,而服务器则根据请求返回相应的响应。
  一、同一资源定位符         

        我们是通过某个网址像后端发送请求的,例如我们平常搜刮百度(www.baidu.com),这个网址叫做url,也叫同一资源定位符,由协议、主机、端口号和路径构成

答疑——资源定位符是怎么定位到某一台主机上的
我们知道要想发送信息,首先得有网络,也就是要连接路由器,一个路由器连接着几台主机,就会形成一个小型的局域网,路由器能给这几台主机分别不同的ip地址,这就能实现这几台主机之间的相互通讯,但显然局域网不能支持更大范围的通讯,以是需要一个更大的路由器对下边的小路由器进行子网分别,大抵可以明确为下图:

答疑——互联网的消息是如何通报的:在路由器之间不断进行跳转
向其他主机发送消息时,数据帧会携带目的ip和源ip一起发送,IP起到寻址的作用,同时数据帧中还会有源mac地址和目的mac地址

每个路由器都会有一个网卡,数据在网卡上不断进行跳转,而网卡上有目的mac地址和源mac地址,数据帧上的源mac地址是现在所处的网卡的mac地址,而目的mac地址是要跳转的目的路由器的mac地址,跳转乐成后,数据帧的源mac地址和目的mac地址也会发生该变,这就是数据的通报过程。
        我们看的的url上一样平常都是域名,没有直接拿地址去访问的风俗,以是当客户端(如浏览器)拿到一个 URL 时,会先对域名进行解析。
        域名体系(DNS,Domain Name System)发挥着核心作用。DNS 就像是互联网的电话簿,它将人们易于影象的域名(如www.example.com)解析为对应的 IP 地址(例如192.168.1.1)。客户端首先会查抄本地 DNS 缓存,看是否已经存在该域名对应的 IP 地址记录,如果有则直接使用;若没有,客户端会向本地 DNS 服务器发送查询请求。本地 DNS 服务器若在自己的缓存或区域文件中找到记录,就返回给客户端;若未找到,它会按照肯定的递归或迭代查询方式,向根 DNS 服务器、顶级域名(TLD)服务器、权势巨子 DNS 服务器等依次查询,直到获取到精确的 IP 地址,然后将其返回给客户端。
通过 DNS 解析得到 IP 地址后,客户端就能使用这个 IP 地址,结合 URL 中的端口号,通过 TCP 协议与对应的主机建立连接,进而向服务器发送 HTTP 请求,获取目的资源。
二、HTTP 协议的特点


  • 简单快速:客户端只需发送请求方法和路径等少量信息,服务器就能快速明确并处理请求。例如,常见的 GET 请求用于获取资源,格式简单明了,如GET /index.html HTTP/1.1。
  • 机动:HTTP 协议答应传输各种类型的数据,只要客户端和服务器可以或许辨认数据的类型。通过设置Content-Type头部字段,就可以指定数据的格式,如text/html表示 HTML 文档,image/jpeg表示 JPEG 图片等。
  • 无状态:HTTP 协议自己不会记着客户端的请求汗青。每一次请求都是独立的,服务器无法区分这是来自同一个客户端的连续请求照旧不同客户端的请求。这种特性固然简化了服务器的筹划,但在某些需要保持用户状态的场景下,就需要借助其他技术,如 Cookie、Session 来实现。
三、HTTP 协议的工作流程


  • 建立连接:客户端(如浏览器)通过 TCP 协议与服务器建立连接。这一过程通常需要经过三次握手,确保双方都能正常通信。
  • 发送请求:连接建立后,客户端向服务器发送 HTTP 请求。请求包罗请求行、头部字段和请求体(并非全部请求都有请求体,如 GET 请求)。例如:
  1. GET /news/article1.html HTTP/1.1
  2. Host: www.example.com
  3. User - Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
复制代码
这里的GET是请求方法,/news/article1.html是请求路径,HTTP/1.1是协议版本,Host头部字段指定了请求的目的服务器,User - Agent头部字段则标识了客户端的类型和版本等信息。

3. 服务器处理请求并返回响应:服务器接收到请求后,根据请求的内容进行处理。如果请求的资源存在,服务器会将资源打包成 HTTP 响应返回给客户端。响应同样包罗状态行、头部字段和响应体。例如:
  1. HTTP/1.1 200 OK
  2. Content - Type: text/html
  3. Content - Length: 1234
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <title>文章标题</title>
  8. </head>
  9. <body>
  10. <p>文章内容...</p>
  11. </body>
  12. </html>
复制代码
其中,HTTP/1.1是协议版本,200 OK是状态码和原因短语,表示请求乐成。Content - Type头部字段指定了响应体的类型为 HTML,Content - Length头部字段表示响应体的长度。后面的 HTML 代码就是响应体的内容。
4. 关闭连接:数据传输完成后,客户端和服务器可以选择关闭连接。在 HTTP/1.0 中,默认情况下每次请求完成后都会关闭连接;而在 HTTP/1.1 中,默认接纳长期连接,即一次连接可以处理多个请求,减少了连接建立和关闭的开销。
四、HTTP 协议的请求方法


  • GET:用于获取指定资源。通常用于向服务器查询数据,如获取网页、图片等。GET 请求的参数会附加在 URL 后面,以?分隔,多个参数之间用&连接。例如:https://www.example.com/search?keyword=apple&page=1。

  • POST:用于向服务器提交数据,通常用于表单提交、文件上传等场景。POST 请求的数据会放在请求体中,不会表现在 URL 中,相对 GET 请求更安全。​​​​​(​​但没有做到绝对安全)

五、HTTP 协议的状态码

状态码是服务器对客户端请求处理效果的标识,它由三位数字构成。常见的状态码有:

  • 1xx(信息性状态码):表示请求已被担当,正在处理中。例如,100 Continue表示客户端可以继续发送请求的剩余部分。

  • 2xx(乐成状态码):表示请求已乐成被服务器处理。其中,200 OK是最常见的乐成状态码,表示请求乐成;201 Created表示请求乐成而且服务器创建了新的资源。

  • 3xx(重定向状态码):表示需要客户端接纳进一步的操纵才能完成请求。例如,301 Moved Permanently表示资源已永久移动,客户端应使用新的 URL 再次请求;302 Found表示资源临时移动,客户端应使用原 URL 再次请求。

  • 4xx(客户端错误状态码):表示客户端发送的请求有错误。例如,400 Bad Request表示客户端请求的语法错误;401 Unauthorized表示客户端未授权,需要进行身份验证;404 Not Found表示服务器无法找到请求的资源。

  • 5xx(服务器错误状态码):表示服务器在处理请求时发生了错误。例如,500 Internal Server Error表示服务器内部发生了未知错误;503 Service Unavailable表示服务器当前不可用,可能是由于维护或过载等原因。
六、https协议

https协议
http协议自己并不安全,因为数据是用明码进行传输的,而https协议在http的底子上加入了安全套接字s:TSL/SSL(安全套接字)
加密模式有两种:
对称加密—>产生的是秘钥(加密解密用的是同一个秘钥)

秘钥不能在网上进行传输
非对称加密—>产生的是公钥和私钥
公钥加密的数据需要私钥解密
私钥加密的数据需要公钥解密
https的加密模式是对称加密和非对称加密 共同作用的方式。

数字证书:一个网站的身份证

我们上面介绍http的特点时提到过http自己是无状态的,也就是说我们这次提交的请求和下次提交的请求自己没有接洽,那么对于一些需要多次提交信息才能完成的操纵就会有题目
cookie(浏览器的解决方案)


七、总结

        通过相识 HTTP 协议的基本概念、特点、工作流程、请求方法、状态码以及发展进程,我们可以或许更好地明确互联网的运行机制,为开发高效、稳固的网络应用提供坚固的底子。随着互联网技术的不断发展,HTTP 协议也在连续演进,未来它将继续为我们带来更优质的网络体验。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表