网络和操作系统基础篇
网络和操作系统基础篇
TCP三次握手
- 客户端——发送带有SYN标志的数据包——服务端一次握手Client进入syn_sent状态;
- 服务端——发送带有SYN/ACK标志的数据包——客户端二次握手服务端进入syn_rcvd;
- 客户端——发送带有ACK标志的数据包——服务端三次握手连接就进入Established状态;
为什么三次:
主要是为了建立可靠的通信信道,保证客户端与服务端同时具备发送、接收数据的能力。
为什么两次不行?
- 防止已失效的请求报文又传送到了服务端,建立了多余的链接,浪费资源。
- 两次握手只能保证单向连接是畅通的。(为了实现可靠数据传输,TCP协议的通信双方,都必须维护一个序列号,以标识发送出去的数据包中,哪些是已经被对方收到的。三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤;如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认)。
TCP四次挥手过程
- 客户端——发送带有FIN标志的数据包——服务端,关闭与服务端的连接,客户端进入FIN-WAIT-1状态。
- 服务端收到这个FIN,它发回⼀个ACK,确认序号为收到的序号加1,服务端就进入了CLOSE-WAIT状态。
- 服务端——发送⼀个FIN数据包——客户端,关闭与客户端的连接,客户端就进入FIN-WAIT-2状态。
- 客户端收到这个FIN,发回ACK报⽂确认,并将确认序号设置为收到序号加1,TIME-WAIT状态。
为什么四次:
因为需要确保客户端与服务端的数据能够完成传输。
**CLOSE-WAIT:**这种状态的含义其实是表示在等待关闭。
**TIME-WAIT:**为了解决网络的丢包和网络不稳定所带来的其他问题,确保连接方能在时间范围内,关闭自己的连接。
常见网络服务分层
- 应用层:HTTP、SMTP、DNS、FTP
- 传输层:TCP、UDP
- 网络层:ICMP、IP、路由器、防火墙
- 数据链路层:网卡、网桥、交换机
- 物理层:中继器、集线器
TCP与UDP区别及场景
类型 | 特点 | 性能 | 应用场景 | 首部字节 |
---|---|---|---|---|
TCP | 面向连接、可靠、字节流 | 传输效率慢、所需资源多 | 文件、邮件传输 | 20-60 |
UDP | 无连接、不可靠、数据报文段 | 传输效率快、所需资源少 | 语音、视频、直播 | 8个字节 |
基于UDP的协议:RIP、DNS、SNMP
基于TCP的协议:HTTP、FTP、SMTP
HTTP与HTTPS之间的区别
HTTP | HTTPS | |
---|---|---|
默认端口 | 80 | 443 |
传输方式 | 明文传输、数据未加密、安全性差 | 传输过程ssl加密、安全性较好 |
性能 | 响应速度快、消耗资源少 | 响应速度较慢、消耗资源多、需要用到CA证书 |
HTTPS链接建立的过程:
- 首先客户端先给服务器发送一个请求;
- 服务器发送一个SSL证书给客户端,内容包括:证书的发布机构、有效期、所有者、签名以及公钥;
- 客户端对发来的公钥进行真伪校验,校验为真则使用公钥对对称加密算法以及对称密钥进行加密;
- 服务器端使用私钥进行解密并使用对称密钥加密确认信息发送给客户端;
- 随后客户端和服务端就使用对称密钥进行信息传输;
**对称加密算法:**双方持有相同的密钥,且加密速度快,典型对称加密算法:DES、AES
**非对称加密算法:**密钥成对出现(私钥、公钥),私钥只有自己知道,不在网络中传输;而公钥可以公开。相比对称加密速度较慢,典型的非对称加密算法有:RSA、DSA
HTTP请求、Get和Post请求区别
HTTP请求
方法 | 描述 |
---|---|
GET | 向特定资源发送请求,查询数据,并返回实体 |
POST | 向指定资源提交数据进行处理请求,可能会导致新的资源建立、已有资源修改 |
PUT | 向服务器上传新的内容 |
HEAD | 类似GET请求,返回的响应中没有具体的内容,用于获取报头响应中没有具体的内容,用于获取报头 |
DELETE | 请求服务器删除指定标识的资源 |
OPTIONS | 可以用来向服务器发送请求来测试服务器的功能性 |
TRACE | 回显服务器收到的请求,用于测试或诊断 |
CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
get和Post区别:
特性 | GET | POST |
---|---|---|
可见性 | 数据在URL中对所有人可见 | 数据不会显示在URL中 |
安全性 | 与POST相比,GET的安全性较差,因为所发送的数据是URL的一部分 | 安全,因为参数不会被保存在浏览器历史或web服务器日志中 |
数据长度 | 受限制,最长2kb | 无限制 |
编码类型 | application/x-www-form-urlencoded | multipart/form-data |
缓存 | 能被缓存 | 不能被缓存 |
HTTP常见响应状态码
- 100:Continue—继续。客户端应继续其请求。
- 200:OK—请求成功。一般用于GET与POST请求。
- 301:Moved Permanently—永久重定向。
- 302:Found—暂时重定向。
- 400:Bad Request—客户端请求的语法错误,服务器无法理解。
- 403:Forbideen—服务器理解请求客户端的请求,但是拒绝执行此请求。
- 404:Not Found—服务器无法根据客户端的请求找到资源(网页)。
- 500:Internal Server Error—服务器内部错误,无法完成请求。
- 502:Bad Gateway—作为网关或者代理服务器尝试执行请求时,从远程服务器接收到了无效的响应。
重定向和转发区别
重定向:redirect:
地址栏发生变化
重定向可以访问其他站点(服务器)的资源
重定向是两次请求。不能使用request对象来共享数据
转发:forward:
转发地址栏路径不变
转发只能访问当前服务器下的资源
转发是一次请求,可以使用request对象共享数据
Cookie和Session区别
Cookie和Session都是用来跟踪浏览器用户身份的会话方式,但两者有所区别:
- Cookie数据保存在客户端(浏览器端),Session数据保存在服务器端。
- cookie不是很安全,别人可以分析存放在本地的COOKIE并进行欺骗,考虑到安全应当使用session。
- Cookie⼀般⽤来保存⽤户信息,Session的主要作⽤就是通过服务端记录⽤户的状态
相关文章:
网络和操作系统基础篇
网络和操作系统基础篇 TCP三次握手 客户端——发送带有SYN标志的数据包——服务端一次握手Client进入syn_sent状态;服务端——发送带有SYN/ACK标志的数据包——客户端二次握手服务端进入syn_rcvd;客户端——发送带有ACK标志的数据包——服务端三次握手…...

Oracle 连接报错:“ORA-12541:TNS:no listener ”,服务组件中找不到监听服务
一、 报错: navicat连接数据库报错:ORA-12541:TNS:no listener 二、排查问题 三、 解决问题 删除Oracle安装目录下选中的配置:listener.ora 及 listener*.bak相关的 cmd,用管理员打开 执行:netca 命…...

内外网文件传输 安全、可控、便捷的跨网数据传输方案
一、背景与痛点 在内外网隔离的企业网络环境中,员工与外部协作伙伴(如钉钉用户)的文件传输面临以下挑战: 安全性风险:内外网直连可能导致病毒传播、数据泄露。 操作繁琐:传统方式需频繁切换网络环境&…...

基于Flask的租房信息可视化系统的设计与实现
【Flask】基于Flask的租房信息可视化系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着互联网的快速发展,租房市场日益繁荣,信息量急剧增加ÿ…...
《Keras 2 :使用 RetinaNet 进行对象检测》:此文为AI自动翻译
《Keras 2 :使用 RetinaNet 进行对象检测》 作者:Srihari Humbarwadi 创建日期:2020/05/17 最后修改日期:2023/07/10 描述:实施 RetinaNet:用于密集对象检测的焦点损失。 (i) 此示例使用 Keras 2 在 Colab 中查看 • 介绍 目标检测是计算机中非常重要的问题 视觉。在…...

【Erdas实验教程】010:监督分类及后处理、精度评价
文章目录 一、监督分类介绍二、监督分类流程1. 定义分类模板2. 评价分类模板3. 执行监督分类4. 评价分类结果4.1 叠加显示4.2 动态窗口链接4.3 阈值处理4.4 分类精度评价5. 分类后处理5.1 集聚处理5.2 滤网分析5.3 去除分析5.4 重编码一、监督分类介绍 遥感图像计算机分类的依…...

Moonshot AI 新突破:MoBA 为大语言模型长文本处理提效论文速读
前言 在自然语言处理领域,随着大语言模型(LLMs)不断拓展其阅读、理解和生成文本的能力,如何高效处理长文本成为一项关键挑战。近日,Moonshot AI Research 联合清华大学、浙江大学的研究人员提出了一种创新方法 —— 混…...

【Python量化金融实战】-第1章:Python量化金融概述:1.2 Python在量化金融中的优势与生态
本小节学习建议:Python在量化金融领域的统治地位不仅体现在当前的技术栈中,更在于其持续进化的能力。随着AI、区块链等新技术的融合,Python开发者将始终处于金融创新的最前沿。建议学习者从构建完整的策略生产线开始,逐步深入高频…...

react路由总结
目录 一、脚手架基础语法(16~17) 1.1、hello react 1.2、组件样式隔离(样式模块化) 1.3、react插件 二、React Router v5 2.1、react-router-dom相关API 2.1.1、内置组件 2.1.1.1、BrowserRouter 2.1.1.2、HashRouter 2.1.1.3、Route 2.1.1.4、Redirect 2.1.1.5、L…...

edge浏览器将书签栏顶部显示
追求效果,感觉有点丑,但总归方便多了 操作路径:设置-外观-显示收藏夹栏-始终...
AIGC-Stable Diffusion模型介绍
Stable Diffusion模型介绍 Stable Diffusion模型介绍模型架构Stable Diffusion模型特点 模型原理扩散过程 代码示例 Stable Diffusion模型介绍 Stable Diffusion是一种基于深度学习的图像生成模型,特别适用于生成高质量的图像。它利用扩散模型(diffusio…...

【算法】游艇租贷
问题 ⻓江游艇俱乐部在⻓江上设置了 n 个游艇租聘站,游客可以在这些租聘站租 ⽤游艇,然后在下游的任何⼀个租聘站归还。游艇出租站 i 到 j 的租⾦为 r(i, j),1 ≤i< j≤n,设计⼀个算法,计算从出租站 i 到 j 所需的…...

科普:Docker run的相关事项
一、镜像名(含标签)太长 如,通过如下命令行: docker pull designthru2019/dify:56c6d1af0944dbdb5e0115cb623ff0e118a4ac62拉取的镜像名(及标签)太长,可以通过改名的方法变短。 在 Docker 中&…...

Ryu:轻量开源,开启 SDN 新程
1. Ryu 控制器概述 定位:轻量级、开源的SDN控制器,专为开发者和研究人员设计,基于Python实现。开发者:由日本NTT实验室主导开发,遵循Apache 2.0开源协议。核心理念:简化SDN应用开发,提供友好的…...

Python游戏编程之赛车游戏6-2
3.2 move()方法的定义 Player类的move()方法用于玩家控制汽车左右移动,当玩家点击键盘上的左右按键时,汽车会相应地进行左右移动。 move()方法的代码如图7所示。 图7 move()方法的代码 其中,第20行代码通过pygame.key.get_pressed()函数获…...

IDEA + 通义灵码AI程序员:快速构建DDD后端工程模板
作者:陈荣健 IDEA 通义灵码AI程序员:快速构建DDD后端工程模板 在软件开发过程中,一个清晰、可维护、可扩展的架构至关重要。领域驱动设计 (DDD) 是一种软件开发方法,它强调将软件模型与业务领域紧密结合,从而构建更…...

libwebsockets交叉编译全流程
libwebsocket中的webscoket加密功能需要依赖于Openssl库因此需要提前准备好openssl开源库。 交叉编译openssl 下面演示源码方式交叉编译OpenSSL为动态库。 创建个Websocket文件夹,把后续的成果物均放在这个文件中,文件夹中创建子文件夹OpenSSL和libWeb…...

蓝思科技赋能灵伴科技:AI眼镜产能与供应链双升级
2月22日,蓝思科技宣布与AI交互领军企业杭州灵伴科技(Rokid)达成深度战略合作,通过整机组装与全产业链整合,为2025年全球AI眼镜出货量爆发式增长(预计达400万-1200万台)提供核心支撑。 双方合作通…...

谷歌浏览器更新后导致的刷新数据无法显示
这几天突然出现的问题,就是我做了一个网站,一直用Google展示,前两天突然就是刷新会丢失数据,然后再刷新几次吧又有了,之前一直好好的,后端也做了一些配置添加了CrossOrigin注解,然而换了edge浏览…...
Nginx学习笔记:常用命令端口占用报错解决Nginx核心配置文件解读
Nginx 1. 基础命令1.1 重新加载systemd配置1.2 停止Nginx服务1.3 启动Nginx服务1.4 重启Nginx服务1.5 查看Nginx服务状态1.6 测试配置和重载Nginx 2. 额外命令2.1 启用开机自启2.2 禁用开机自启2.3 强制关闭所有Nginx进程 3. Nginx端口占用解决方案3.1 查找占用端口8090的进程3…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...