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

计算机网络——客户端/服务端,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模型,进程处于阻塞状态;若使用epollselect等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),原理如下:

  1. 攻击者向服务端发送大量伪造 IP 的 SYN 报文;
  2. 服务端响应 SYN+ACK,但真实 IP 不会回应;
  3. 服务端等待 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 的目的:

  1. 保证 ACK 报文能被服务器收到;
  2. 清除失效的连接报文,防止后续连接误处理旧报文。
    保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
    注意: 关闭连接过程比建立连接多一步,是因为 ACK 和 FIN 分开发送。

五、TCP 保活机制

为了避免资源被长时间占用,TCP 引入保活机制:

  • 默认 2 小时内无数据收发,则发送探测报文;
  • 若连续 10 次探测无响应,判定连接失效,主动断开。

六、数字证书详解

1. 定义

数字证书是由**认证中心(CA)**签发的,绑定用户身份与其公钥的电子文件,提供身份验证和加密通信。

2. 颁发过程

用户生成密钥对 → 提交公钥与身份信息给认证中心 → CA验证 → 认证中心签发证书 → 用户使用该证书进行通信。

3. 证书内容(基于 X.509 标准)

  • 证书版本
  • 序列号
  • 签名算法
  • 颁发者名称
  • 有效期
  • 持有者名称
  • 公钥
  • CA签名

七、GET 与 POST 的区别详解

项目GETPOST
参数位置URL 中请求体中
长度限制有限制无限制
安全性暴露参数,较差参数不暴露,较好
编码方式仅支持 URL 编码支持多种编码方式
是否缓存浏览器可缓存不缓存
历史记录参数可见不可见
TCP连接一次两次(先建再传)

本质上 GET 和 POST 都是 TCP 协议,但在 HTTP 语义上区别明显。

相关文章:

  • (36)VTK C++开发示例 ---纹理贴图四边形
  • 【大模型实战篇】对Qwen3提到的thinking和no thinking混合思考模式的讨论
  • Manus AI多语言手写识别技术解析
  • PostgreSQL 的 VACUUM 与 VACUUM FULL 详解
  • 【git】获取特定分支和所有分支
  • 【Linux深入浅出】之全连接队列及抓包介绍
  • 阿里云服务器防御是怎么做出来的?服务器攻击方式有几种?
  • Java文件上传
  • 【算法基础】选择排序算法 - JAVA
  • ARM 指令集(ubuntu环境学习)第六章:ARM 编程技巧与优化策略
  • 供应链算法整理(一)--- 销量预估
  • 如何掌握 Lustre/Scade 同步数据流语言
  • 基于建造者模式的信号量与理解建造者模式
  • 每日算法-250502
  • Python爬虫实战:获取好大夫在线各专业全国医院排行榜数据并分析,为患者就医做参考
  • 传统银行服务和 区块链支付无缝融合的一种解决方案
  • 【AI面试准备】数据治理与GDPR脱敏机制构建
  • 4.Java中的注释
  • VBA宏即根据第一列的内容和第二列的数字,按照数字数量生成对应内容并依次放在第三列、第四列等
  • c++环境和vscode常用的一些有用插件
  • 10家A股农商行一季报:净利均实现增长,常熟银行营收、净利增速领跑
  • 保持高位运行,今天全国铁路预计发送旅客1800万人次
  • 人民日报今日谈:为何重视这个“一体化”
  • 桥,在黄岩与上海之间|劳动者的书信③
  • 年轻人能为“老有意思”做点什么
  • 韩国代总统、国务总理韩德洙宣布辞职,将择期宣布参选总统