网络原理笔记

news2026/4/30 16:31:39
目录1 网络中的五元组2 协议分层OSI七层模型TCP / IP五层或四层模型封装和分用3 网络编程套接字Socket套接字网络编程TCP/UDP协议的区别4 TCP/IP协议应用层JSON进程的两个问题UDP协议TCP协议TCP 可靠传输特别重要1 确认应答可靠性机制2 超时重传可靠性机制3 连接管理可靠性机制4 滑动窗口效率机制5 流量控制效率机制6 拥塞控制可靠机制7 延迟应答效率机制8 捎带应答9 面向字节流粘包问题10 异常情况用UDP实现可靠传输(经典面试题)网络层IP地址HTTP/HTTPS1 HTTPHTTP请求RequestURL方法methodHTTP请求报头HeaderHTTP响应解释2 HTTPS一、 HTTPS 的本质二、 为什么要引入 HTTPS背景与威胁三、 HTTPS 的“三把利刃”加密机制四、 核心工作流程HTTPS 握手 (Handshake)五、 数据完整性摘要算法 (Digest) 重点总结三组密钥的配合1 网络中的五元组源IP地址 ---发件人地址源端口号 ---发件人电话目的地址 ---收件人地址目的端口号 --- 收件人电话协议 ---约定那个快递公司买什么东西服务.......2 协议分层OSI七层模型物链网输会表用TCP / IP五层或四层模型四层模型不包括物理层应用层用户自定义的协议与用户打交道接收展示用户的数据只关注物品本身传输层典型的TCPUDP完成端到端的传输的准备确定收送主机的地址的端口号网络层IP协议规划端到端之间的网络路径数据链路层网络接口层以太网协议完成点到点之间的传输每个网络设备之间的传输物理层以太网协议每一层的封装格式封装和分用封装是在发送方进行的对数据的处理分用是在接收方进行的对数据的处理3 网络编程套接字Socket套接字流套接字使用传输层TCP协议一点一点的发送和之前的文件流一样数据报套接字使用传输层UDP协议把一个报文当做一个整体一次性发送网络编程TCP/UDP协议的区别TCPUDP有连接无连接可靠传输不可靠传输面型字节流面相数据宝有接受缓冲区也有发送缓冲区有接受缓冲区无发送缓冲区大小不限大小受限一次最多传输64K全双工全双工4 TCP/IP协议应用层JSON{}表示对象[]表示数组字符串用“”包裹对象的属性用字符串表示双引号包裹属性与属性之间用逗号隔开、最后一个元素没有逗号进程的两个问题一个进程可以绑定多个端口号一个端口号不能被多个进程绑定在操作系统层面一个端口号对应一个进程通过端口号找到对应的进程UDP协议TCP协议TCP 可靠传输特别重要1 确认应答可靠性机制应答在传输层接收对方给发送方的一个回复只是一个标记并没有真实的结果 响应针对请求计算出来的响应是真实数据2 超时重传可靠性机制发送超时接收方收到了数据返回应答的时候超时3 连接管理可靠性机制作用在发送方和接收方初次建立连接的时候确认双方的收发能力初次建立时三次握手断开连接时四次挥手三次握手主机A发送SYN请求生成一个随机数据填充在序号区域主机B接收到主机A发来的SYN请求后在序号的基本上1把结果填充成确认序号中并把ACK标志位置为一表示要进行应答同时生成一个随机数据填充在序号区域并把SYN标志位置为1表示自己发送一个SYN同步请求主机A接收到主机B发来的ACKSYN请求时首先判断ACK表示主机B有应答能力再去判断SYN在序号的基础上1把结果填充在 确认序号中把ACK标志位置为1主机B接收到主机A发来的ACK表示主机A有应答能力网络验证完成建立连接成功4 滑动窗口效率机制异常情况一数据包已经抵达了但是ACK丢了异常情况二数据包直接丢了数据包没有到达主机B滑动窗口与效率窗口越大网络吞吐量越高窗口越大效率越高窗口越小效率越低如果窗口无限大就和UDP一样了5 流量控制效率机制作用用来控制发送方的窗口大小通过接收方返回来的ACK进行反制6 拥塞控制可靠机制作用通过网络的畅通程序来控制窗口的大小7 延迟应答效率机制TCP在应答时并不是每收到一个请求应答一次而是每隔记得应答一次8 捎带应答ACK是系统内核做出的应答传输层发送响应是应用层面的应用层9 面向字节流粘包问题创建一个TCP的Socket同时在内核中创建一个发送缓冲区写和一个接收缓冲区读粘包问题就是每接收到一个报文就把他放入缓冲区在读取报文时不能有效的区分每个数据名称对于粘包问题解决为每个消息定义一个分隔符或者说用一个分隔符来界边一条消息在应用层协议中定义一个区域字段用来表示当前消息的长度10 异常情况程序崩溃正常关机主机掉电或断网用UDP实现可靠传输(经典面试题)网络层IP地址IP地址是指互联网协议地址又译为网际协议地址HTTP/HTTPS1 HTTP超文本传输协议是一种应用广泛的应用层协议Fiddle 抓包工具可以捕获本机发送的所有HTTP请求相当于客户端与服务器端的中间人HTTP请求RequestURL方法methodGET和POST是 HTTP 协议中最基础、最常用的两种请求方法。虽然它们在底层都是通过 TCP/IP 协议传输数据但在设计初衷和具体表现上有着本质的区别。简单来记其核心区别GET 通常用于“获取”数据而 POST 通常用于“提交”数据。以下是它们的详细对比核心区别速览表特性GET 请求POST 请求主要功能从服务器获取资源如请求一个网页、查询数据。向服务器提交数据如提交表单、上传文件。数据传递位置数据附加在URL的末尾Query String以?分割参数间用连接。数据存放在HTTP 报文的主体Body中。数据长度限制受限于浏览器和服务器对 URL 长度的限制通常在 2KB 到 8KB 左右。理论上没有限制实际受限于服务器配置可传输大量数据。安全性较低。数据直接暴露在 URL 中会被保存在浏览器历史记录、书签和服务器日志中。较高。数据不在 URL 中显示不会被保存在浏览器历史记录中。幂等性 (Idempotency)是幂等的。多次执行相同的 GET 请求服务器状态不变得到的结果应该是一样的。非幂等。多次执行相同的 POST 请求可能会在服务器上创建多个资源如重复提交订单。缓存机制请求可以被浏览器缓存也可以被加入书签。请求不会被缓存不能被加入书签。数据类型只允许 ASCII 字符。支持多种数据类型如文本、二进制、JSON、文件等。关键差异深度解析数据的可见性与“安全性”GET的参数就像写在明信片上任何人只要看到 URL 就能看到数据例如https://example.com/search?keywordapple。因此绝对不能用 GET 请求来传输密码或敏感信息。POST的参数放在了信封里Body 中普通用户在地址栏看不到。但这并不意味着绝对安全。如果不使用 HTTPS 协议网络抓包工具依然可以轻易看到 POST 请求体中的明文数据。真正的安全性依赖于 HTTPS 加密而不是 POST 方法本身。幂等性与副作用GET 是安全的、幂等的这意味着你仅仅是去“看”一眼数据无论你看一次还是看一万次服务器上的数据都不会因此改变。这也是为什么浏览器允许你随意刷新 GET 请求的页面。POST 会产生副作用比如在购物网站点击“付款”按钮通常是一个 POST 请求。如果你在付款成功后强行刷新页面浏览器通常会弹出一个警告框“确认重新提交表单”因为再次发送 POST 请求可能会导致你被扣费两次。底层数据包传输差异技术细节在部分浏览器如早期的 Firefox 等和底层机制中发送方式略有不同GET通常产生一个TCP 数据包浏览器将 HTTP Header 和 Data 一并发送出去服务器响应 200 OK 并返回数据。POST有时会产生两个TCP 数据包浏览器先发送 HTTP Header服务器响应 100 Continue浏览器再发送 Data最后服务器响应 200 OK。这种机制的作用是先探测服务器是否愿意接收数据避免在服务器拒绝时浪费带宽上传大量体积的数据包。总结什么时候用哪个使用 GET当你的操作只是为了查询、读取或过滤信息且不需要改变服务器状态时。例如搜索引擎查询、查看商品详情、获取新闻列表。使用 POST当你的操作会改变服务器状态或者需要传输敏感、大量的数据时。例如用户登录注册、发布一条评论、修改个人资料、上传图片文件。HTTP请求报头HeaderHeader的整体格式是“键值对”结构每个键值对占一行键和值之间使用分好分割Host表示服务器主机的地址和端口号Content-Length表示body中的数据长度Content-Type表示请求的body中的数据格式User-Agent (简称 UA)表示浏览器/操作系统的属性Refercookie理解登录过程HTTP响应解释HTTP 状态码Status Code是用来表示服务器对请求的处理结果的。它们被分为五大类每一类都有特定的含义。以下是常见的 HTTP 状态码及其含义的对照表HTTP 状态码分类概览状态码范围类别描述1xx信息性状态码接收的请求正在处理2xx成功状态码请求正常处理完毕3xx重定向状态码需要进行附加操作以完成请求4xx客户端错误状态码服务器无法处理请求客户端原因5xx服务器错误状态码服务器处理请求时出错常用状态码详细列表状态码状态描述语义及常见场景200OK请求成功。表示从客户端发来的请求在服务器端被正常处理了。204No Content请求成功但返回的响应报文中不含实体的主体部分无内容。301Moved Permanently永久性重定向。资源已被分配了新的 URL以后应使用资源现在的 URL。302Found临时性重定向。资源临时移动到了新的 URL希望用户本次能访问新的 URL。304Not Modified未修改。资源未改变可直接使用浏览器缓存。400Bad Request错误请求。请求报文中存在语法错误服务器无法理解。401Unauthorized未认证。当前请求需要用户身份认证常用于登录校验失败。403Forbidden禁止访问。服务器理解请求但拒绝执行如没有访问权限。404Not Found未找到资源。服务器上无法找到请求的资源或 URL 拼写错误。405Method Not Allowed方法不允许。使用了服务器不支持的请求方法如对只支持 GET 的接口发 POST。500Internal Server Error服务器内部错误。服务器端在执行请求时发生了错误常为代码异常。502Bad Gateway网关错误。作为网关或代理的服务器从上游服务器接收到了无效响应。504Gateway Timeout网关超时。服务器作为网关未能及时从上游服务器接收响应。重点说明200 vs 204200 会返回数据如 JSON、HTML204 仅告知成功而不返回任何内容。401 vs 403401 是“你是谁我不知道请登录”403 是“我知道你是谁但你没权力干这事”。404 vs 500404 通常是前端路径写错了或资源被删了500 则是后端代码写得有问题比如触发了空指针异常。2 HTTPS一、 HTTPS 的本质HTTPS (Hypertext Transfer Protocol Secure)并非独立协议而是在HTTP协议的基础上引入了一个加密层通常是SSL或TLS。公式HTTPS HTTP 加密 认证 完整性保护。端口默认使用443端口HTTP 默认使用 80 端口。二、 为什么要引入 HTTPS背景与威胁HTTP 采用明文传输数据在互联网中经过多个节点如路由器、运营商网关时极其不安全。运营商劫持中间节点篡改 HTML 代码。例如下载一个 A 软件由于中间人修改了下载链接最后下成了 B 软件。窃听风险用户的账号、密码、支付信息对中间人完全透明。冒充风险黑客可以伪造一个一模一样的银行网站诱导用户登录。三、 HTTPS 的“三把利刃”加密机制HTTPS 通过混合加密平衡了安全与性能对称加密 (Symmetric Encryption)特点加密和解密使用同一个密钥。优点计算速度非常快。缺点无法安全地将密钥传给对方。如果明文传密钥加密就失去了意义。非对称加密 (Asymmetric Encryption)特点有一对密钥——公钥 (Public Key)和私钥 (Private Key)。公钥加密的数据只能用私钥解。优点解决了密钥传输问题。缺点计算速度慢且存在“中间人伪造公钥”的风险。数字证书 (Digital Certificate) CA 机构解决问题为了证明“公钥确实是该网站的”引入了公正的第三方机构CA (Certificate Authority)。核心内容证书包含网站信息、公钥以及 CA 机构的数字签名。四、 核心工作流程HTTPS 握手 (Handshake)这是面试和理解中最关键的部分其精髓在于用非对称加密来安全地传输对称加密的密钥。客户端请求浏览器连接服务器并索要证书。服务器响应返回包含公钥 A的数字证书。客户端验证浏览器通过内置的 CA 公钥解密证书签名确保证书未被篡改。校验域名、有效期等。生成会话密钥浏览器本地生成一个随机对称密钥 R用于后续正式通信。加密密钥 R浏览器使用服务器证书里的公钥 A对密钥 R进行加密并发送。服务器解密服务器使用只有自己才知道的私钥 A解密拿到密钥 R。加密通信开始从此以后双方的所有数据传输都使用密钥 R进行对称加密。五、 数据完整性摘要算法 (Digest)HTTPS 还利用了哈希函数如MD5或SHA系列来确保内容未被修改。特点定长无论原文多长哈希值长度固定。分散原文改一个字哈希值天差地别。不可逆无法通过哈希值还原原文。逻辑在签名时先计算证书内容的哈希再加密。客户端收到后重新计算对比一致则代表内容完整。 重点总结三组密钥的配合密钥组角色作用CA 私钥/公钥验证官服务器证书的签名与验证防止证书被冒充。服务器 私钥/公钥快递员在握手阶段加密传输“会话密钥”。对称密钥 (R)守护者握手完成后负责海量通信数据的快速加解密。

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

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

相关文章

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…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…