HTTP 协议详解

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

HTTP 协议详解

在这里插入图片描述

文章目录


在这里插入图片描述


一、HTTP

HTTP(HpyerTextTransferProtocol),超文本传输协议是一种建立TCP上的状态连接整个基本的工作流程是客户端发送一个HTTP请求说明客户端想要访问的资源和请求的动作服务端收到请求之后服务端开始处理请求并根据请求做出相应的动作访问服务器资源最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务当一个事务结束后还会在服务端添加一条日志条目。

二、URI

官方文档地址https://developer.mozilla.org/zh-CN/docs/Glossary/URI

简介URI 即统一资源标识符Uniform Resource Identifier是一个指向资源的字符串。最通常用在 URL 上来指定 Web 上资源文件的具体位置。相比之下URN 是在给定的命名空间用名字指向具体的资源如书本的 ISBN。

HTTP 请求的内容统称为"资源"。"资源"这一概念非常宽泛它可以是你能够想到的格式。每个资源都由一个URI来进行标识。URL它是 URI 的一种。一份文档一张图片或者其他。URI 包含 URL、URN。

  • URL用于定位
    全称为统一资源定位符URL即 Uniform Resource Locator 的缩写也被称为网页地址

例如https://image.baidu.com/
URL 在浏览器的地址栏中输入上述任一地址浏览器就会加载相应的网页资源。

URL由多个必须或可选的组件构成。下面给出了一个复杂的URLhttps://image.baidu.com/search/albumslist?tn=albumslist&word=%E8%9B%8B%E7%B3%95&album_tab=%E4%BA%BA%E7%89%A9&rn=15&fr=albumsdetail_nav

统一资源定位标识符语法URL

https://image.baidu.com/search/albumslist?tn=albumslist&word=%E8%9B%8B%E7%B3%95&album_tab=%E4%BA%BA%E7%89%A9&rn=15&fr=albumsdetail_nav

  • 协议

https://告诉浏览器使用何种协议。对于大部分Web资源通常使用HTTP协议或者安全版本HTTPS协议。另外浏览器也知道如何处理其他协议。

例如mailto协议指示浏览器打开邮件客户端ftp协议指示浏览器处理文件传输。

  • 主机
    image.baidu.com既是一个域名也代表管理该域名的机构。它指示了需要想网络上的那一台主机发起请求。当然也可以直接向主机的IPaddress地址发起请求但是直接使用IP地址的场景并不常见。

  • 端口
    80 是端口。它表示用于访问Web服务器上资源的技术"门"。如果访问的该Web服务器使用HTTP协议的标准端口HTTP为80HTTPS为443授予对其资源的访问权限则通常省略此部分否则端口就是RUI必须的部分。

  • 路径
    /search/albumslist 是 Web 服务器上资源的路径。在Web 的早期类似这样的路径表示 Web 服务器上的物理文件位置。现在他主要是由没有任何物理实体的Web服务器抽象处理而成的。

  • 查询
    ?tn=albumslist&word=%E8%9B%8B%E7%B3%95&album_tab=%E4%BA%BA%E7%89%A9&rn=15&fr=albumsdetail_nav 是提供给Web 服务器的额外参数。这些参数使用&符号分隔的键/值对列表。Web 服务器可以在将资源返回给用户之前使用这些参数来执行额外的操作。每个Web服务器都可以都有自己的参数限制想要知道特定Web服务器如何处理参数的唯一可靠性方法是询问该Web服务器所有者。

  • 片段
    #SomewherInTheDocument 是资源本身的某一部分的一个锚点。锚点代表资源内的一种"书签"它给予浏览器显示器位于该"加书签"点的内容的指示。

例如在HTML文档上浏览器将滚动到定义锚点的那个点上在视频或音频文档上浏览器将转换到锚点代表的那个时间值得注意的是#号后面的部分也称为片段标识符永远不会与请求一起发送到服务器。

  • 示例

  • URN用于区分
    URN仅用于命名而不指定地址。用于标识唯一书目的ISBN系统是一个典型的URN使用范例。
    例如ISBN 0486275574(urn:isbn:0-486-27557-4)无二性地标识出莎士比亚的戏剧《罗密欧与朱丽叶》的某一特定版本。

三者之间的关系
在这里插入图片描述

URN是另一种形式的URI它通过特定命名空间中的唯一名称来表示资源。

urn:isbn:9780141036144
urn:ietf:rfc:7230
上面两个URN标识了下面的资源

  • 乔治奥威尔所著的《1984》
  • IETF规范7230超文本传输协议<HTTP/1.1:> Message Syntax and Routing.

2.读入数据

三、HTTP protocol

官网地址https://developer.mozilla.org/zh-CN/docs/Web/HTTP

1.概述
概览
HTTP是一种能够获取如HTML这样的网络资源的通讯协议。它是Web上数据交换的基础是一种client-server 协议也就是说请求通常是由像浏览器这样的接受方发起的。一个完整的web文档是由不同的子文档重新组建而成的像文本、布局描述、图片、视频、脚本等等。

HTTP 被设计于上20世纪90年代初期是一种可拓展性的协议。它是应用层的协议。虽然理论上它可以通过任何可靠的传输协议来发送但是它还是通过TCP或者TLS-加密的TCP连接来发送。因为它很好的拓展性时至今日它不仅被用来传输超文本文档还用来传输图片、视频或者向服务器发送HTML表单这样的信息HTTP还可用以根据网页需求来获取部分web文档的内容来更新网页。

request
客户端和服务器通过交换各自的消息来进行交互。通常由像浏览器这样的客户端发送出的消息叫做request那么被服务端回应的消息叫做response。

2.组件系统
3.报文

四、HTTP headers

案例分析HTTP报头信息

目的wget 下载一个源码包分析HTTP头部的信息

1.执行下载

[root@node3 ~]# wget -d  http://nginx.org/download/nginx-1.22.1.tar.gz
DEBUG output created by Wget 1.14 on linux-gnu.

URI encoding = “UTF-8”
Converted file name 'nginx-1.22.1.tar.gz' (UTF-8) -> 'nginx-1.22.1.tar.gz' (UTF-8)
Converted file name 'nginx-1.22.1.tar.gz' (UTF-8) -> 'nginx-1.22.1.tar.gz' (UTF-8)
--2023-02-08 17:31:56--  http://nginx.org/download/nginx-1.22.1.tar.gz
正在解析主机 nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5702::6, ...
Caching nginx.org => 3.125.197.172 52.58.199.22 2a05:d014:edb:5702::6 2a05:d014:edb:5704::6
正在连接 nginx.org (nginx.org)|3.125.197.172|:80... 已连接。
Created socket 3.
Releasing 0x0000000001c03aa0 (new refcount 1).

---request begin---  # 请求开始
GET /download/nginx-1.22.1.tar.gz HTTP/1.1   # 动作下载 页面地址 HTTP版本
User-Agent: Wget/1.14 (linux-gnu)  # 代理程序 wget
Accept: */*  # 接收的类型任何类型
Host: nginx.org  # 目标主机nginx.org
Connection: Keep-Alive  # 链接类型启动长连接

---request end---    # 请求结束
已发出 HTTP 请求正在等待回应...  # 发送请求中
---response begin---   # 响应开始
HTTP/1.1 200 OK  # 协议版本
Server: nginx/1.21.5  # 服务器版本
Date: Wed, 08 Feb 2023 09:32:01 GMT  # 对应的时间
Content-Type: application/octet-stream  # 接收应用的类型字节流软件类
Content-Length: 1073948  # 文档大小
Last-Modified: Wed, 19 Oct 2022 09:23:07 GMT  # 资源最后修改的时间stat文件即可查看
Connection: keep-alive # 长连接开启
Keep-Alive: timeout=15  # 长连接有效期
ETag: "634fc1fb-10631c"
Accept-Ranges: bytes

---response end---
200 OK
Registered socket 3 for persistent reuse.
长度1073948 (1.0M) [application/octet-stream]
正在保存至: “nginx-1.22.1.tar.gz”

100%[=============================================================>] 1,073,948   61.2KB/s 用时 15s    

2023-02-08 17:32:16 (70.6 KB/s) - 已保存 “nginx-1.22.1.tar.gz” [1073948/1073948])

[root@node3 ~]# 

2.分析Debug
3.相关资料
4.获取更多资料


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6