当前位置: 首页 > news >正文

《HTTP权威指南》 第1-2章 HTTP和URL基础

HTTP请求基础

格式化数据块称为HTTP报文

请求报文:从客户端发往服务器的HTTP报文,只有请求起始行+请求首部,没有请求主体
响应报文:从服务器发往客户端的报文,包含响应起始行+响应首部+响应主体
在这里插入图片描述
在这里插入图片描述
HTTP报文通过传输控制协议(TCP)连接:

  • 无差错的数据传输
  • 按序传输
  • 未分段的数据流
    在这里插入图片描述

HTTP事务=请求命令(HTTP方法)+响应结果
在这里插入图片描述

从输入URL到浏览器显示全过程

简单描述:通过URL获取目标IP地址+TCP端口号 >> 建立TCP/IP连接 >> 传输HTTP报文

URL举例:(HTPP端口默认80,HTTPS端口默认443)
index.html表示web服务器的资源,资源名称为统一资源标识符(URI)
在这里插入图片描述
在这里插入图片描述
浏览器处理请求图解
在这里插入图片描述

  1. 输入URL
  2. 浏览器从URL解析服务器主机名
  3. IP解析:通过DNS服务获取服务器主机名对应的IP地址
  4. 从URL解析端口号
  5. 与IP对应的端口建立TCP连接
  6. 浏览器发送一条HTTP请求报文
  7. 服务器向浏览器回送一条HTTP响应报文
  8. 关闭连接,浏览器显示页面

URL语法、URL组件及含义

URL结构方案://服务器位置/路径
在这里插入图片描述
怎样的方案请求哪个地方什么资源,简称(我瞎定义的):How - Where - What

URL语法通用格式<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>(由多个组件段组成)

  1. <scheme>:方案名(协议)不区分大小写,也就是说HTTP://... = http://...

  2. <user>:<password>:FTP协议需要用户名和密码,比如:ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu(如没有提供,浏览器会给一个默认值)

  3. <host>:<port>:主机和端口号

  4. /将URL划分为一些路经段<path>;<params>),path和params为一组,用;隔开。比如:http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true

  5. <query>查询组件,用&连接多个键值对。
    在这里插入图片描述

  6. <frag>片段组件,前面跟一个#
    在这里插入图片描述

URL快捷方式

相对URL

URL有两种方式:绝对的相对的
在这里插入图片描述
解析相对URL的第一步:分解URL,即:将相对URL和基础URL划分成组件段

将相对URL转换成绝对URL如图:缺啥补啥(相对URL中缺的组件就用基础URL中的组件段补上)
在这里插入图片描述

自动扩展URL

浏览器主动进行主机名扩展(匹配自动补齐)、历史访问扩展(匹配URL前缀)

URL编码和字符规则

基于适配各种不同的协议 + 供人类阅读 + URL完整的需求,引入了转义机制,将不安全字符编码为安全字符再进行传输。

US-ASCII字符集集成转义序列对数据进行编码,实现可移植性和完整性。

%后跟着两个表示字符ASCII码16进制数,举例:
在这里插入图片描述

保留字符:
在这里插入图片描述

URL方案

在这里插入图片描述
在这里插入图片描述

相关文章:

  • ArkUI-X跨平台技术落地-华为运动健康(一)
  • python大学校园旧物捐赠系统
  • ROS2 笔记汇总(2) 通信接口
  • Android Retrofit 解析
  • 数学建模会议笔记
  • FFmpeg常见命令以及解析
  • 什么真正的云原生开发?如何区别本地开发后部署到云端?
  • vb逆向常用函数
  • 配置外设参数与时钟频率 (PCLK1, PCLK2) 的关系
  • 图书整理--LeetCode
  • Linux操作系统之进程(六):进程的控制(上)
  • 01初始uni-app+tabBar+首页
  • 第八节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 用户管理(下)
  • 【redis】安装与使用
  • Unity 在Scroll View内连续截图并保存本地(把滚动列表内的内容截成一个长图)
  • 自然语言处理【NLP】—— CBOW模型
  • JavaEE->多线程1
  • Vue + Spring Boot 前后端交互实践:正确使用 `Content-Type: application/json` 及参数传递方式
  • SonarQube 25.6 完整指南:部署、使用与 CI/CD 集成
  • 【深度学习】TensorFlow全面指南:从核心概念到工业级应用
  • wordpress主题pacify/seo方案
  • 购物类网站开发/市场推广计划怎么写
  • 专门做布料的网站/郑州seo外包公司哪家好
  • 合肥做网站排名/今日军事新闻头条
  • 网站显示后台登陆链接/行者seo
  • 开发网站找什么公司吗/成都网站快速开发