✧(≖ ◡ ≖✿
目录
浏览器服务器模式(B/S模式)
URL
https://news.qq.com/rain/a/20260829A0D52600?adChannelId=news分析其构成
从IP到域名的历程
幕后机制:DNS(域名系统)自动转换
URL实例
状态码
状态码速查表
HTTP常见的响应报头
Cookie
cookie的性质
HTTPS加密
基本概念
1.运营商劫持
2.常见加密算法
2.1对称加密
2.2非对称加密
2.2.1公钥、私钥
3.数据摘要(数据指纹)
4.签名认识
4.1CA机构
签名与验证逻辑
非对称加密+数字签名+对称加密
☆总结
浏览器服务器模式(B/S模式)
URL
浏览网页的路径索引。
常见的索引(以腾讯新闻为例)
https://news.qq.com/rain/a/20260829A0D52600?adChannelId=news分析其构成
注意:“?”作为分隔符。
| 组成部分 | 内容 | 作用说明 |
|---|---|---|
| 协议 | https:// | 使用HTTP over SSL/TLS加密协议,保证浏览器与服务器之间数据传输的安全。 |
| 域名 | news.qq.com | 腾讯新闻的二级域名,指向提供新闻服务的特定服务器集群。 |
| 路径 (Path) | /rain/a/20260829A0D52600 | 资源在服务器上的存放或路由路径。结合腾讯新闻的常见模式,这很可能用于定位一篇具体的文章: - /rain/:可能代表一个特定的频道、业务线或技术架构标识(如“睿思”或某内容分发系统)。- /a/:可能代表“article”(文章)类型。- 20260829A0D52600:这是一串文章唯一标识ID。其中20260829可能是发布日期(2026年8月29日),后面的字母数字组合用于精确区分每篇文章。 |
| 查询参数 (Query String) | ?adChannelId=news | 以键值对key=value形式提供附加参数,用于追踪、统计或个性化内容。- adChannelId:很可能代表“广告渠道ID”或“内容分发渠道ID”。- news:值表明这篇文章是通过“新闻”这个默认或主要渠道被访问的。这个参数常用于数据分析,统计流量来源。 |
从IP到域名的历程
幕后机制:DNS(域名系统)自动转换
虽然你看到的是域名,但浏览器实际通信时必须使用IP地址。这个转换过程由DNS(Domain Name System,域名系统)自动完成,用户完全无感知:
你在浏览器输入
news.qq.com。浏览器向DNS服务器发起查询请求。
DNS服务器返回该域名对应的IP地址(例如
123.45.67.89)。浏览器使用这个IP地址(并默认使用端口443用于HTTPS)去连接腾讯新闻的服务器。
注意:服务端与客户端协议版本可能存在差异。这是为了适配大众化需求。(服务端、客户端是两款软件)
URL实例
显示图片
else if(reqUri == "/1.png") //在路径框中输入的"CSDN头像.png"浏览器解析出此信息发送 { rep_str.repTlgHeadSet ("Content-type", "png"); clientfd->Send(SetPage (rep_str, 200, "./wwwroot/CSDN.png"));//文件名绝对不能有中文!!! }注意:
1.路径是中文(CSDN头像.png),浏览器传递给服务端是“CSDN%E5%A4%B4%E5%83%8F.png”
2.服务端中图片不可以是中文名称无法识别路径。
clientfd->Send(SetPage (rep_str, 200, "./wwwroot/CSDN.png"));//路径内不可中文3.一定是二进制读取方法(SetPage内)。
GET /CSDN%E5%A4%B4%E5%83%8F.png HTTP/1.1 Host: 122.152.208.179:8080 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7 [空行]else if(reqUri == "/CSDN%E5%A4%B4%E5%83%8F.png") //在路径框中输入的"CSDN头像.png"浏览器解析出此信息发送 { rep_str.repTlgHeadSet ("Content-type", "png"); clientfd->Send(SetPage (rep_str, 200, "./wwwroot/CSDN.png"));//文件名绝对不能有中文!!! }状态码
| 类别 | 处理 | |
| 1XX | Informational(信息性状态码) | 接收的请求正在处理 |
| 2XX | Success(成功状态码) | 请求正常处理完毕 |
| 3XX | Redirection(重定向状态码) | 需要进行附加操作 |
| 4XX | Client Error(客户端状态码) | 服务器无法处理请求 |
| 5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
状态码速查表
| 分类 | 状态码 | 含义 | 应用样例(你的示例) |
|---|---|---|---|
| 信息响应 | 100 Continue | 服务器已收到请求头,客户端应继续发送请求体。 | 上传大文件时,服务器先返回100,告知客户端可以继续传输数据。 |
| 成功响应 | 200 OK | 请求成功,服务器返回所请求的资源。 | 访问网站首页,服务器成功返回网页HTML内容。 |
| 201 Created | 请求成功,并创建了新资源。 | 发布一篇新文章,服务器处理成功并返回文章创建成功的确认信息。 | |
| 204 No Content | 请求成功,但服务器无需返回任何实体内容。 | 删除一篇文章后,服务器返回204状态码,表示操作成功且无需刷新页面内容。 | |
| 重定向 | 301 Moved Permanently | 请求的资源已被永久移动到新URL。 | 网站更换域名后,将旧域名所有请求永久重定向到新域名,同时通知搜索引擎更新索引。 |
| 302 Found | 请求的资源临时位于另一个URL(常被用于临时重定向)。 | 用户登录成功后,服务器将浏览器重定向到用户个人中心首页。 | |
| 304 Not Modified | 资源未被修改,可使用客户端缓存的版本。 | 浏览器发起条件请求(如If-Modified-Since),若资源未变化,服务器返回304以节省带宽。 | |
| 客户端错误 | 400 Bad Request | 服务器无法理解请求,通常因请求语法或参数错误。 | 用户提交表单时,日期格式填写错误(如2026-13-32),服务器返回400错误。 |
| 401 Unauthorized | 请求需要用户身份验证。 | 访问需要登录的页面时,未携带有效的认证凭据(如Token),服务器返回401要求登录。 | |
| 403 Forbidden | 服务器理解请求,但拒绝执行(权限不足)。 | 普通用户尝试访问管理员后台页面,服务器明确拒绝访问。 | |
| 404 Not Found | 服务器无法找到请求的资源。 | 用户在浏览器输入了一个不存在的文章链接,服务器返回经典的404页面。 | |
| 服务器错误 | 500 Internal Server Error | 服务器内部遇到意外情况,无法完成请求。 | 后端代码出现未捕获的异常(如数据库连接失败),导致服务器无法正常处理请求。 |
| 502 Bad Gateway | 作为网关或代理的服务器从上游服务器收到无效响应。 | 部署了Nginx反向代理,但后端的应用服务器(如Tomcat)崩溃,Nginx会返回502错误。 | |
| 503 Service Unavailable | 服务器当前无法处理请求(过载或维护中)。 | 网站流量瞬间激增,或服务器正在进行停机维护,此时会返回503状态码。 |
HTTP常见的响应报头
- Content-Type:数据类型(text/html等)
- Conten-Length:正文有效长度
- Host:客户端告知服务器,所请求资源在哪个端口上
- User-Agent:声明当前用户的操作系统和浏览器版本信息
- Refer:当前页面是从哪个页面跳转过来的
- Location:搭配3XX使用告诉客户接下来区哪里访问
- Cookie:由于在客户端存储少量信息,常用于实现会话功能。
Cookie
由于HTTP的传输是“无状态,无链接”的,因此每次访问都需要验证身份(需要登录访问的内容),cookie正是为了解决这个问题而生的,本质是“暂存”。
cookie的性质
cookie具有“延时性”,分作“内存级”(浏览器关闭及丧失)和“文件级”(存储在特定文件中)。
注意:现实中我们常常需要每隔一定时间重登一下信息,这是cookie重置的原因(存在有效期控制)。
HTTPS加密
HTTPS = HTTP + TLS/SSL(一种安全协议)。它本质上是给HTTP协议穿上了一层盔甲,确保数据在传输中是完整的、加密的,并且实现了正规服务端、客户端之间的身份验证。
基本概念
1.运营商劫持
指在数据传输中,如果数据不进行加密导致常见问题——访问被中间人(运营商)中途劫持,导致访问偏差。(是一种很低劣的手段)
2.常见加密算法
2.1对称加密
密钥数:一个(整体)
加密/解密速度:快
加密/解密限制:使用一个密钥进行加/解密。
2.2非对称加密
密钥数:2个(通信间成对2/4/6等)分作公钥、私钥。
加/解密速度:慢
加/解密限制:A方加密必定A'解密。A A' 公钥及与之对应的私钥
2.2.1公钥、私钥
公钥:甚至可以传播。
私钥:决定不能有第二人知道。
3.数据摘要(数据指纹)
作用:判断数据是否被篡改。
原理:单向散列函数(Hash函数),生成一段固定长度(16/32/64)的数字摘要。(并非一种加密算法)
特性:常用于区分多份数据是否具有完全一致性。
4.签名认识
数据摘要(指纹)被签名者私钥加密后的数据。
数字签名:作为网络传输的直接数据。(简单拼接了原始数据+签名的数据)
4.1CA机构
管理加/解密的权威机构,提供公钥私钥。证书等。
签名与验证逻辑
加密数据。
验证数据在传输过程中是否被篡改过。
非对称加密+数字签名+对称加密
☆总结
HTTPS工作过程中涉及到三组密钥。其中一组是通信的核心:(第三组-对称密钥)
第一组(非对称加密):用于校验证书是否被篡改。服务器持有私钥(私钥在形成CSR文件和申请证书时获得),客户端持有公钥(操作系统(浏览器)包含默认的可信任的CA机构,同时持有对应的公钥)。服务器在客户端请求时,返回携带签名的证书。客户端通过这个公钥来检查证书的验证,保证证书的合法性,进一步保证证书中携带公钥的权威性。
第二组(非对称加密):用于协商生成对称加密的密钥。客户端用收到的CA证书中的公钥(是可被信任的)给随机生成的对称加密的密钥加密,传输给服务器。服务器通过私钥(CA)解密获取到对称密钥。
第三组(对称加密):客户端、服务端自此均通过此对称密钥加/解密。
其实一切的关键都是围绕最后一组对称加密的密钥。其他机制均是辅助
第二组对称加密的密钥是为了让客户端吧这个对称密钥传递给服务器。
第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥。
| 组别 | 密钥类型 | 密钥对名称(正式/别名) | 持有方 | 核心用途 |
|---|---|---|---|---|
| 第一组 | 非对称加密 | CA根证书密钥对 (公钥: CA根证书公钥 / 私钥: CA根证书私钥) | 公钥:内置在浏览器/操作系统 私钥:由权威CA机构严格保管 | 身份验证:验证服务器证书的“数字签名”,确保你访问的网站是真实可信的,而非伪造。 |
| 第二组 | 非对称加密 | 服务器证书密钥对 (公钥: 服务器证书公钥 / 私钥: 服务器证书私钥) | 公钥:放在服务器证书中,公开 私钥:由网站服务器管理者严格保管 | 密钥交换:客户端使用此公钥加密“预主密钥”,服务器使用配对的私钥解密,从而安全地交换双方后续通信的核心秘密。 |
| 第三组 | 对称加密 | 会话密钥 (临时密钥,无固定密钥对) | 客户端和服务器在握手完成后各自独立计算得出,并共同持有。 | 加密通信:用于加密和解密所有实际的HTTP应用数据(如网页内容、表单数据)。这是保证通信机密性的最终执行者。 |
感谢支持,长期连载
欢迎关注