当前位置: 首页 > 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方案

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

http://www.lryc.cn/news/571611.html

相关文章:

  • C#实现图片文字识别
  • 【Pandas】pandas DataFrame unstack
  • LVS+Keepalived高可用群集
  • 【请关注】真实案例pg及kong安装部署
  • CppCon 2017 学习:C++ in Academia
  • GNU Octave 基础教程(2):变量与数据类型详解(一)
  • 技术与情感交织的一生 (八)
  • Git中新创建分支是否为空?这可得视情况而定!
  • JVM-类加载机制
  • 论文笔记 <交通灯><多智能体>MetaLight:基于价值的元强化学习用于交通信号控制
  • 20.jsBridge多页面交互与原生事件监听冲突问题
  • 锂电池充电管理芯片XSP30 适用于2-3节串联锂电池升降压快速充电
  • 新发布的一款使用ReactNative新架构加载Svga动画的开源插件[android/ios]
  • 【解决方案】Java 11 报错 <javax.net.ssl.SSLException: Tag mismatch!>,Java 8 却没问题?
  • 二分K-means:让聚类更高效、更精准!
  • Alpine Docker 容器中安装包缓存与 C/C++ 运行问题
  • 2025年暑期在线实习项目分享
  • 专业音乐播放器分享,Foobar2000多格式解码的技术实现,界面自定义的实用技巧
  • [计算机网络] 网络的诞生:协议的认知建立
  • AndroidView的简单使用
  • 【第二章:机器学习与神经网络概述】01.聚类算法理论与实践-(3)DBSCAN 聚类算法
  • python学智能算法(十二)|机器学习朴素贝叶斯方法初步-拉普拉斯平滑计算条件概率
  • Java安全-常规漏洞问题(SQL注入,XXE,SSRF,RCE)
  • Linux系统移植10:uboot移植
  • Prompt+Agent+LLM:半导体炉管设备健康评估的落地实战
  • 开源 Arkts 鸿蒙应用 开发(三)Arkts语言的介绍
  • 腾讯云TCCA认证考试报名 - TDSQL数据库交付运维工程师(PostgreSQL版)
  • 字节跳动 AI 视频生成模型 Seedance 1.0 悄然超越 Google Veo 3
  • 经典风格的免费wordpress模板
  • 【世纪龙科技】3D 赋能教育革新,解锁新能源汽车结构教学新范式