计算机网络 之 【HTTP协议】(域名、url、http协议格式与细节、协议学习通用框架)

张开发
2026/4/14 16:44:15 15 分钟阅读

分享文章

计算机网络 之 【HTTP协议】(域名、url、http协议格式与细节、协议学习通用框架)
目录1 域名1.1 域名的概念1.2 域名的核心作用1.3 域名的组成和分类1.4 域名的工作原理2.url统一资源定位符标准结构补充示例3.网络行为4.http协议格式请求报文响应报文关键机制1 域名1.1 域名的概念域名是互联网中用于标识和定位计算机或服务的易记的文本名称它替代了难以记忆的数字IP地址如192.168.1.1或2404:6800:4005:805::200e使人类能够更方便地访问网站、发送邮件或使用网络服务1.2 域名的核心作用1替代IP地址计算机通过IP地址如 93.184.216.34通信但数字难以记忆域名如 example.com通过DNS解析为IP地址实现“人类友好”的访问方式2分层结构域名采用层级结构从右到左依次表示范围从小到大与日常阅读方向相反www . sub . example . com │ │ │ │ │ │ │ └── 顶级域名TLD │ │ └── 二级域名SLD │ └── 三级域名Subdomain └── 主机名Hostname可选1.3 域名的组成和分类域名组成主机名.结构名.网络名.最高层域名主机名.三级域名.二级域名.顶级域名顶级域名位于域名最右侧分为两类通用顶级域名gTLD如 .com商业、.org组织、.net网络国家代码顶级域名ccTLD如 .cn中国、.us美国、.jp日本新通用顶级域名new gTLD如 .app、.blog、.online提供更多选择二级域名位于顶级域名左侧是域名的核心部分通常由注册者自定义如 example 在 example.com 中需通过域名注册商购买并注册具有唯一性三级域名及子域名位于二级域名左侧用于进一步细分服务或组织结构如 www、mail、blogmail.example.com邮件服务专用子域名shop.example.com电商子站点无需额外注册子域名可由域名所有者自由创建需配置DNS记录带点与不带点的区别www.example.com.带点这是一个绝对路径直接从根开始解析不会有歧义www.example.com不带点相对而言不够“绝对”浏览器和操作系统会自动补全日常交流中约定俗成省略完全限定域名FQDN是互联网上某一台计算机或主机唯一且绝对的名称FQDN 主机名 域名体系可含多级子域 TLD 根域末尾点mail.example.com. 注意末尾通常有一个点代表根域www.baidu.com.特点绝对路径它指明了从根域开始到具体主机的完整路径不依赖任何上下文末尾的点理论上 FQDN 末尾应有一个点表示根域。实践中很多系统允许省略非 FQDNserver1→ 不完整需要知道它在哪个域下1.4 域名的工作原理DNS解析使用UDP协议当用户在浏览器输入域名如 example.com时计算机会向DNS服务器发起查询。DNS服务器最终返回对应的IP地址用户输入 → example.com → DNS查询 → 返回IP 93.184.216.34 → 浏览器访问该IP域名解析顺序浏览器 DNS 缓存 → 操作系统 DNS 缓存 → hosts 文件 → DNS 服务器域名与IP的映射关系域名与IP地址是有对应关系的一对一、一对多、多对一浏览器最终通过该IP地址访问互联网中对应主机/etc/hosts 是一个本地静态的域名解析文件用于手动指定域名与IP地址的映射关系2.url统一资源定位符定义用于唯一标识互联网上资源的字符串遵循标准化格式便于客户端如浏览器定位和访问资源标准结构协议://域名:端口/路径?查询参数#片段标识组件格式/示例说明协议http://https://ftp://file://ws:///wss://- 定义访问资源的网络协议类型-常见协议及默认端口▸http://→ 端口 80▸https://→ 端口 443▸ftp://→ 端口 21▸file://→ 本地文件系统▸ws://非加密 WebSocket/wss://加密 WebSocket域名www.example.com192.168.1.1不推荐生产环境- 资源的服务器地址- 支持域名或 IP 地址IP 仅用于测试/内网环境端口:80可省略:8080非默认端口- 服务器监听的端口号-省略规则当端口为协议默认值时如http://的 80可省略- 示例▸http://example.com:80/≡http://example.com/▸https://example.com:443/≡https://example.com/路径/blog/posts/1api/users相对路径-资源在服务器上的虚拟路径不一定对应物理目录-路径规则▸ 层级用/分隔▸ 绝对路径以/开头如/blog/1▸ 相对路径省略/依赖当前 URL 解析如blog/1-示例/blog/posts/1可能由 Web 框架动态生成查询参数?qpythonpage1-?后跟键值对用于传递参数如搜索、分页-格式key1value1key2value2-示例/search?qpythonpage1表示搜索关键词为python第 1 页片段标识#installation-#后的部分指向页面内的锚点如章节标题-示例/docs#installation会滚动到页面中idinstallation的元素补充协议的加密性https:// 通过 SSL/TLS 加密数据传输推荐用于所有需要安全性的场景如登录、支付http:// 为明文传输易被窃听或篡改路径的虚拟性现代 Web 服务器如 Nginx、Apache可通过配置将 URL 路径映射到任意物理目录或动态路由如 REST API 的 /api/users/1相对路径的解析相对路径如 blog/1会基于当前 URL 的路径解析。例如当前页面为 https://example.com/articles/链接 blog/1 会解析为 https://example.com/articles/blog/1可能返回 404更安全的做法是使用绝对路径如 /blog/1或根相对路径如 //example.com/blog/1查询参数的编码特殊字符如空格、/、?需编码为 %XX 形式如空格 → %20示例/search?qhello world 应编码为 /search?qhello%20world编码规则将需要转码的字符转为16进制然后从右到左取4位(不足4位直接处理)每2位做一位前面加上%编码成%XY不用记忆网上有现成的编码解码工具示例URL协议域名端口路径查询参数片段标识https://www.example.com/blog/1httpswww.example.com默认 443/blog/1无无http://localhost:8080/api?id1httplocalhost8080/apiid1无file:///C:/docs/report.pdffile本地文件系统无/C:/docs/report.pdf无无3.网络行为网络行为主要分为两种下载获取资源和上传提交数据协议学习通用框架A. 如何解析协议 1. 报头和有效载荷如何分离 → 定长头 / 自描述如TLV 2. 载荷交给哪个上层协议 → 通过“协议类型字段”如IP头的protocolUDP/TCP的端口 B. 认识报头具体字段 每个字段含义、长度、作用 C. 协议周边 缓冲区、连接管理、可靠性机制、性能调优4.http协议格式请求报文结构请求行 请求报头 空行 请求正文请求报文至少包含请求行与空行请求报头与请求正文可选分隔符每一行由\r\n结尾整体是一个包含分隔符的大字符串请求行由方法如GET、URL、版本如HTTP/1.1组成请求行格式方法 URL HTTP版本空格分隔一般只间隔一个空格请求报头Key-Value形式包含 User-Agent客户端信息Content-Length正文长度等响应报文结构状态行 响应报头 空行 响应正文响应报文至少包含状态行与空行响应报头与响应正文可选状态行包含HTTP版本、状态码如200、状态码描述如OK状态行格式HTTP版本 状态码 状态描述空格分隔一般只间隔一个空格响应正文返回的资源内容如 HTML、JSON、图片等关键机制编码URL中的特殊字符会被转义为 % 加十六进制形式由浏览器和服务器自动编解码HTTP 通过版本协商机制如请求/响应行中的版本号声明和向后兼容设计如 HTTP/1.1 支持 1.0 特性、HTTP/2/3 通过升级或 ALPN 回退确保不同版本客户端与服务器能协同工作同时只要网络不断服务器会为所有请求包括错误请求返回响应如 4xx/5xx 状态码以维持协议的可靠性Telnet可通过直接连接服务器端口手动发送请求并查看原始响应适合基础协议调试Fiddler作为代理工具拦截并解析本地流量捕获所有经过的 HTTP/HTTPS 请求/响应提供可视化抓包和请求修改功能Postman则以图形化界面简化请求构造与调试专注于构造、发送和管理 HTTP 请求支持自动化测试和脚本扩展HTTP协议默认使用80端口HTTPS协议默认使用443端口

更多文章