计算机网络——客户端/服务端,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 语义上区别明显。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

柔性PZT压电薄膜多维力传感器在微创手术机器人的应用

随着医疗技术的迅速发展,微创手术机器人正在成为外科手术的重要助手。与传统开放式手术相比,微创手术创伤小、恢复快、感染率低,对手术器械的精细操控性和感知能力提出了更高要求。多维力传感器作为机器人“触觉”的核心部件,对提…

SpringAI整合DeepSeek生成图表

利用Spring-ai-openai集成DeepSeek ①、在DeepSeek开放平台创建API KEY ②、创建springboot项目,引入spring-ai-openai依赖,创建配置文件,配置deepseek的url和api key ③、具体的实现业务应用 RestController public class ChatD…

xss-lab靶场基础详解第1~3关

第一关 我去&#xff0c;还是得多学基础啊 http://127.0.0.1/xss-labs/level1.php?name<u>a</u> 这个看他的网站源码&#xff0c;可以看到他没有过滤&#xff0c;没有被编码 然后在name<script>alert(1)</script>&#xff0c;就算过关了 第二关 …

【MySQL】聚合查询 和 分组查询

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 目录 &#x1f334; 一、聚合查询 &#x1f332;1.概念 &#x1f332;2.聚合查询函数 COUNT&#xff08;&#xff09; SUM&#xff08;&#xff09; AVG&#xff08;&…

计算机启动流程中,都干了啥事。比如文件挂在,操作系统加载,中断向量表加载,磁盘初始化在哪阶段。

建议在电脑上看&#xff0c;手机上格式有点问题&#xff0c;认真读&#xff0c;这方面没问题的&#xff0c;肝了一天。 目录.计算机启动详解 一.计算机启动直观图二.步骤详解前置准备磁盘初始化1.开机阶段2.执行BIOS阶段3.执行引导记录&#xff08;MBR&#xff09;阶段4.操作系…

后端开发技术之Log日志框架

第一章 日志原理 1.1 log发展历史 从JDK1.4开始提供java.until.logging&#xff0c;后来大佬发现JUL太难用了&#xff0c;就自己手撸了个log4j&#xff0c;后来log4j发现安全漏洞&#xff0c;加上代码结构问题难以维护&#xff0c;于是从1.2就停止更新log4j&#xff0c;并又重…

美丽天天秒链动2+1源码(新零售商城搭建)

什么是链动21模式&#xff1f; 链动21主要是建立团队模式&#xff0c;同时快速提升销量。是目前成员中速度最快的裂变模式。链动21模式合理合规&#xff0c;同时激励用户 公司的利润分享机制&#xff0c;让您在享受购物折扣的同时&#xff0c;也能促进并获得客观收益。 链动21模…

Python10天冲刺-设计模型之策略模式

策略模式是一种行为设计模式&#xff0c;它允许你在运行时动态地改变对象的行为。这种模式的核心思想是将一组相关的算法封装在一起&#xff0c;并让它们相互替换。 下面是使用 Python 实现策略模式的一个示例&#xff1a; 示例代码 假设我们有一个简单的购物车系统&#xf…

【CTFer成长之路】XSS的魔力

XSS闯关 level1 访问url&#xff1a; http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因为是xss&#xff0c;所以对传参进行测试&#xff0c;修改?username1&#xff0c;进行访问 会发现username参数传入什么&#xff0c;welcome之后就…

自主机器人模拟系统

一、系统概述 本代码实现了一个基于Pygame的2D自主机器人模拟系统&#xff0c;具备以下核心功能&#xff1a; 双模式控制&#xff1a;支持手动控制&#xff08;WASD键&#xff09;和自动导航模式&#xff08;鼠标左键设定目标&#xff09; 智能路径规划&#xff1a;采用改进型…

快速上手非关系型数据库-MongoDB

简介 MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;由 MongoDB Inc. 开发。 NoSQL&#xff0c;指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写&#xff0c;是对不同于传统的关系型数据库的数据库管理系统的统称。 MongoDB 的设计理念是为了应对大数据量、…

性能优化实践:启动优化方案

性能优化实践&#xff1a;启动优化方案 在Flutter应用开发中&#xff0c;启动性能是用户体验的第一印象&#xff0c;也是应用性能优化的重要环节。本文将从理论到实践&#xff0c;深入探讨Flutter应用的启动优化方案。 一、Flutter应用启动流程分析 1. 启动类型 冷启动&…

在文本废墟中打捞月光

在文本废墟中打捞月光 ----再读三三的《山顶上是海》之“暗室”所理 今天是2025年5月1日&#xff0c;传统的“五一”小长假。当我早饭后“坐”在卫生间的那几分钟里&#xff0c;闺女和儿子就骑着家中仅有的两辆电动车去了图书馆。我是该做些什么&#xff1f; 于是我左手拿着三…

C++之类和对象基础

⾯向对象三⼤特性&#xff1a;封装、继承、多态 类和对象 一.类的定义1. 类的定义格式2.类域 二.实例化1.对象2.对象的大小 三.this指针 在 C 的世界里&#xff0c;类和对象构成了面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;的核心框架&…

计算机网络——HTTP/IP 协议通俗入门详解

HTTP/IP 协议通俗入门详解 一、什么是 HTTP 协议&#xff1f;1. 基本定义2. HTTP 是怎么工作的&#xff1f; 二、HTTP 协议的特点三、HTTPS 是什么&#xff1f;它和 HTTP 有啥区别&#xff1f;1. HTTPS 概述2. HTTP vs HTTPS 四、HTTP 的通信过程步骤详解&#xff1a; 五、常见…

使用 Java 实现一个简单且高效的任务调度框架

目录 一、任务调度系统概述 &#xff08;一&#xff09;任务调度的目标 &#xff08;二&#xff09;任务调度框架的关键组成 二、任务状态设计 &#xff08;一&#xff09;任务状态流转设计 &#xff08;二&#xff09;任务表设计&#xff08;SQL&#xff09; 三、单机任…

基于GPT 模板开发智能写作辅助应用

目录 项目说明 1. 项目背景 2. 项目目标 3. 功能需求 4. 技术选型 项目结构 详细代码实现 前端代码(client) client/src/main.js client/src/App.vue client/src/components/HistoryList.vue 后端代码(server) server/app.js server/routes/api.js server/mo…

linux 使用nginx部署next.js项目,并使用pm2守护进程

前言 本文基于&#xff1a;操作系统 CentOS Stream 8 使用工具&#xff1a;Xshell8、Xftp8 服务器基础环境&#xff1a; node - 请查看 linux安装node并全局可用pm2 - 请查看 linux安装pm2并全局可用nginx - 请查看 linux 使用nginx部署vue、react项目 所需服务器基础环境&…

使用huggingface_hub需要注意的事项

在安装huggingface_hub的时候要注意如果你的python是放在c盘下时记得用管理员模式命令行来安装huggingface_hub&#xff0c;否则安装过程会报错&#xff0c;之后也不会有huggingface-cli命令。 如果安装时因为没有用管理员权限安装而报错了&#xff0c;可以先卸载huggingface-…

Spring MVC @RequestHeader 注解怎么用?

我们来详细解释一下 Spring MVC 中的 RequestHeader 注解。 RequestHeader 注解的作用 RequestHeader 注解用于将 HTTP 请求中的**请求头&#xff08;Request Headers&#xff09;**的值绑定到 Controller 方法的参数上。 请求头是 HTTP 请求的一部分&#xff0c;包含了关于…