计算机网络——客户端/服务端,URI与URL的区别,以及TCP/IP核心机制全解析
文章目录
- 客户端/服务端,URI与URL的区别,以及TCP/IP核心机制全解析
- 一、客户端/服务端通信模型概述
- 二、URI 与 URL 的概念与区别
- 1. URL(统一资源定位符)
- 2. URI(统一资源标识符)
- 3. URI 与 URL 的关系
- 三、SYN-Flood 攻击详解
- 防护措施:
- 四、为什么客户端关闭后要等待 2MSL?
- 五、TCP 保活机制
- 六、数字证书详解
- 1. 定义
- 2. 颁发过程
- 3. 证书内容(基于 X.509 标准)
- 七、GET 与 POST 的区别详解
客户端/服务端,URI与URL的区别,以及TCP/IP核心机制全解析
一、客户端/服务端通信模型概述
在网络通信中,**客户端(Client)**发起请求,**服务端(Server)**接收请求并响应。服务端一般会监听某个端口,等待连接请求。一旦建立连接,客户端发送请求,服务端返回结果。
例如:
浏览器(客户端)请求访问www.baidu.com
,服务器接收到请求后将网页数据返回给浏览器展示。
当服务端监听端口,但还未有客户端连接时,若采用阻塞IO模型,进程处于阻塞状态;若使用epoll
或select
等IO多路复用机制,则处于运行状态,等待事件触发。
二、URI 与 URL 的概念与区别
1. URL(统一资源定位符)
URL 是我们访问网页时输入的“地址”,例如:
https://www.google.com
URL 的完整结构如下:
协议类型://登录信息@服务器地址:端口号/路径?查询字符串#片段标识符
示例:
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch
2. URI(统一资源标识符)
URI 是对资源的唯一标识,可以是一个 URL,也可以是 URN(统一资源名称),例如:
https://www.google.com 是一个 URI
urn:isbn:0451450523 也是一个 URI
3. URI 与 URL 的关系
- URI 是一个抽象的概念,URL 是 URI 的一个子集;
- URL 表示“资源的位置”,URI 可以是“名称、位置或两者兼有”。
总结:所有 URL 都是 URI,但不是所有 URI 都是 URL。
三、SYN-Flood 攻击详解
SYN-Flood 是一种利用 TCP 协议漏洞的拒绝服务攻击(DDoS),原理如下:
- 攻击者向服务端发送大量伪造 IP 的 SYN 报文;
- 服务端响应 SYN+ACK,但真实 IP 不会回应;
- 服务端等待 ACK,长时间占用资源,合法连接无法建立;
防护措施:
- 连接监视释放:定期清除无效连接,不停的监视系统中半开连接和不活动连接,当达到一定阈值时拆除这些连接,释放系统资源。这种绝对公平的方法往往也会将正常的连接的请求也会被释放掉,”伤敌一千,自损八百“。
- 延缓 TCB 分配:使用 Syn Cache / Syn Cookie 技术来延迟资源分配;Syn Cache技术,这种技术在收到SYN时不急着去分配TCB,而是先回应一个ACK报文,并在一个专用的HASH表中(Cache)中保存这种半开连接,直到收到正确的ACK报文再去分配TCB。Syn Cookie技术,Syn Cookie技术则完全不使用任何存储资源,它使用一种特殊的算法生成Sequence Number,这种算法考虑到了对方的IP、端口、己方IP、端口的固定信息,以及对方无法知道而己方比较固定的一些信息,如MSS、时间等,在收到对方 的ACK报文后,重新计算一遍,看其是否与对方回应报文中的(Sequence Number-1)相同,从而决定是否分配TCB资源。
- SYN Proxy 防火墙:拦截并验证请求,过滤伪造连接。
四、为什么客户端关闭后要等待 2MSL?
MSL(Maximum Segment Lifetime)是 TCP 报文段在网络中的最大寿命。
客户端等待 2MSL 的目的:
- 保证 ACK 报文能被服务器收到;
- 清除失效的连接报文,防止后续连接误处理旧报文。
保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
注意: 关闭连接过程比建立连接多一步,是因为 ACK 和 FIN 分开发送。
五、TCP 保活机制
为了避免资源被长时间占用,TCP 引入保活机制:
- 默认 2 小时内无数据收发,则发送探测报文;
- 若连续 10 次探测无响应,判定连接失效,主动断开。
六、数字证书详解
1. 定义
数字证书是由**认证中心(CA)**签发的,绑定用户身份与其公钥的电子文件,提供身份验证和加密通信。
2. 颁发过程
用户生成密钥对 → 提交公钥与身份信息给认证中心 → CA验证 → 认证中心签发证书 → 用户使用该证书进行通信。
3. 证书内容(基于 X.509 标准)
- 证书版本
- 序列号
- 签名算法
- 颁发者名称
- 有效期
- 持有者名称
- 公钥
- CA签名
七、GET 与 POST 的区别详解
项目 | GET | POST |
---|---|---|
参数位置 | URL 中 | 请求体中 |
长度限制 | 有限制 | 无限制 |
安全性 | 暴露参数,较差 | 参数不暴露,较好 |
编码方式 | 仅支持 URL 编码 | 支持多种编码方式 |
是否缓存 | 浏览器可缓存 | 不缓存 |
历史记录 | 参数可见 | 不可见 |
TCP连接 | 一次 | 两次(先建再传) |
本质上 GET 和 POST 都是 TCP 协议,但在 HTTP 语义上区别明显。