我的计算机网络(总览篇)
总览--网络协议的角度
在一个庞大的网络中,该从哪里去了解呢?我先细细的讲一下我们访问一个网站的全部流程,当我们的电脑连上网络的时候,就会启动DHCP协议,来进行IP地址,MAC地址,DNS地址的分配,拿到我们的IP地址后,使用UDP协议进行DNS服务器的查询,DNS有什么?查询什么?可以将DNS服务器理解成一个域名和IP的映射集合,通过域名进行IP的查找,查找到我们所需要访问的网站的IP之后,再次通过UDP数据报返回给我们,然后我们就要面临选择了,如果我们需要实时性,就选择UDP协议,需要安全性就选择TCP协议,我先介绍TCP协议,因为UDP太简单了。首先我们知道了各自的IP,但是还不知道MAC地址,MAC地址在全球具有唯一标识,跟IP地址相比更类似于一个物理标识,而IP更偏向于软件。此时我们通过IP地址,在ARP协议中寻找对应的MAC地址,ARP协议包含了IP和MAC的映射集,然后我们就拥有了和我们目的服务器建立连接的基本条件--IP和MAC,然后就通过TCP三次握手建立连接,之后就可以通过HTTP协议进行数据的交换,但是为什么说TCP协议可以保证安全性呢?因为有HTTPS协议,那么HTTP和HTTPS有什么不同的呢?请记住一个等式:HTTPS=HTTP+SSL/TSL,HTTP协议中文就是超文本传输协议,而SSL/TSL协议就是一种非对称加密协议,经过加密之后别人就别想看了,然后就可以使用HTTP协议进行数据交换了,但是交换的前提就是使用IP协议,IP协议最重要的两个功能就是分组转发和路由选择,何为分组转发?我们将分组(上一层的PDU)转发到目的IP,何为路由选择?我们不能只知道IP目的地,还得知道怎么走,而路由选择就是告诉我们再去往目的IP的这个过程中怎么走,走哪些路由器。我们做完这些之后就可以进行数据交换了,但是数据交换的过程依旧提心吊胆,因为数据如果错误怎么办?数据如果丢失怎么办?数据如果超时怎么办?该怎么保证数据的可靠传输呢?别急!!!针对这三个问题,伟大的前人已经想好了各种协议去解决,我们一个一个来:
面对数据的错误-首先我们可以使用差错校验去进行数据错误的判断,具体的方法有奇偶校验和循环冗余校验,但是奇偶校验会发生漏码,就是特定情况下不能检测出误码,但是循环冗余校验则不会,如果发现误码,接收方就会丢掉。
面对数据的超时-首先进行数据交换的双方非常的有礼貌,当他们收到数据的时候都会回复一个收到,而正是因为这个收到发送方才能知晓对方收到,而这个收到在他们的语言里叫做ACK,如果在规定时间里发送方没有收到ACK,那么就会触发发送方的超时重传,所以无论是超时还是丢失,只要接收方没有发送ACK,那么发送方就会重传。
数据的可靠传输-我们之前所说的超时重传依赖的就是ACK,而这种方式又叫做停止-等待协议(SW),顾名思义如果没有接收到ACK,那就停止发送,等待至规定时间,然后触发重传,除此之外还有回退N帧协议(GBN)。
在进行完数据交换之后,就进行TCP四次挥手,至此连接断开。
总览--网络分层的角度
我们现在换一个角度去理解计算机网络,那就是分层协议,分层协议可以有两种,一种就是法律意义上的OSI协议,总共有七层,依次是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层,另一个就是在商业被广泛使用的TCP/IP四层模型:网络接口层,网络层,传输层,应用层。一个数据会经过这些层层包装,然后转发,转发,之后又会层层卸掉包装,那为什么OSI有七层,TCPIP只有四层呢?首先要说的是OSI协议已经不被使用了,因为过于复杂,而且运行效率很低,而且成本很高,缺乏实际经验,没有商业驱动力,所以能够占领市场的就是标准--TCP/IP协议,OSI的表示层,会话层被合并到了TCPIP的应用层,数据链路层和物理层被合并到了网络接口层。那每一层都是干嘛的呢?我们先从繁琐的OSI七层开始讲起。
OSI七层模型概述
物理层:我们熟知的光纤电缆,这种通过物理介质传输的就是物理层的作用
数据链路层:将比特流封装成帧,而且进行流量控制,差错检验,MAC寻址
网络层:通过IP协议进行路由选择,分组转发,实现主机之间的连接
传输层:建立端口到端口的通信,使用TCP/UDP协议
会话层:管理应用之间的对话,支持断点续传和同步
表示层:处理数据格式之间的转换
应用层:直接面向用户,提供网络服务接口,如:HTTP,HTTPS
TCP/IP四层模型概述
网络接口层:封装成帧,将帧转化为比特流,在物流层面进行传输
网络层:通过IP协议,进行路由选择和分组转发,实现主机之间的通信
传输层:通过TCP或者UDP协议实现端口之间的通信,也就是应用之间的通信
应用层:OSI的会话层,表示层,应用层
通过以上的介绍,我们不难发现OSI有两层没有和其他层整合在一起--传输层和网络层,这两层也是所有分层中最重要的。现在我们具体介绍一下,一个数据在每一层都会发生什么,又是通过什么协议发生改变的?
数据在各个分层的状态
首先在应用层,我们的要发送的数据位于应用层,这些数据被称为应用层的PDU,然后这些数据到了传输层,传输层建立端口之间的链接,将这些数据拆分成若干个报文段,将这些报文段进行改造,改造成本层的PDU,经过哪些改造呢?对原报文段增加头部,头部包含源端口和目的端口。然后来到了网络层,还是得在强调一下网络层的作用:分组转发和路由选择,以此实现主机之间的通信,这个分组就是指数据报,这实在是太重要了,网络层拿到了传输层的PDU,然后还要改造,也是要添加头部,头部里包含源IP地址和目的IP地址,这就构成了网络层的IP数据包,然后到了数据链路层,数据链路层给IP数据报添加帧首部和帧尾部,这就是数据链路层的分装成帧,帧首部包含了帧开始符,帧的源地址和目的地址,而帧尾部包含了帧结束符,到了物理层,如何识别比特流中的帧呢?就是靠帧的开始符和结束符,也就是帧定界。
从网络分层和网络协议两个角度去理解计算机网络的全过程就结束了,接下来就是逐个介绍一些很重要的协议了!!!
相关文章:
我的计算机网络(总览篇)
总览--网络协议的角度 在一个庞大的网络中,该从哪里去了解呢?我先细细的讲一下我们访问一个网站的全部流程,当我们的电脑连上网络的时候,就会启动DHCP协议,来进行IP地址,MAC地址,DNS地址的分配…...
文件IO6(开机动画的显示原理/触摸屏的原理与应用)
开机动画的显示原理 ⦁ 基本原理 一般电子产品在开机之后都会加深用户印象,一般开机之后都会播放一段开机动画(视频、GIF…),不管哪种采用形式,内部原理都是相同,都是利用人类的眼睛的视觉暂留效应实现的…...
低代码开发能否取代后端?深度剖析与展望-优雅草卓伊凡
低代码开发能否取代后端?深度剖析与展望-优雅草卓伊凡 在科技迅猛发展的当下,软件开发领域新思潮与新技术不断涌现,引发行业内外热烈探讨。近日,笔者收到这样一个颇具争议的问题:“低代码开发能取代后端吗?…...
反向代理断线重连优化
背景 1. 部分时候,反向代理因为路由重启,或者其他断网原因,等网络恢复后,无法对隧道重连。 2. 增加了心跳机制 在DEBUG调试过程中,发现禁用网卡后,在反向代理重连时候,服务器没有释放掉占用的…...
NLP中的“触发器”形式
在自然语言处理(NLP)中,触发器的设计更加依赖于文本特征,而非视觉特征。以下是NLP中常见的触发器类型及其实现方式: 1. 特定词汇或短语 定义:在文本中插入特定的单词、短语或符号。示例: 罕见…...
OJ 基础 | 输入处理
目录 一行输入一个整数: 一行输入2个整数 第一行有一个整数 m。接下来 m 行,每行两个整数 u,v : 一行输入一个整数: Nint(input()) #int类型 numinput() #字符串,一般用于需要去切片/遍历或者处理输入的数据 一行…...
array和list在sql中的foreach写法
在MyBatis中,<foreach>标签用于处理集合或数组类型的参数,以便在SQL语句中动态生成IN子句或其他需要遍历集合的场景。以下是array和list在SQL中的<foreach>写法总结。 <if test"taskIds ! null and taskIds.length > 0">…...
SDP(一)
SDP(Session Description Protocol)会话描述协议相关参数 Session Description Protocol Version (v): 0 --说明:SDP当前版本号 Owner/Creator, Session Id (o): - 20045 20045 IN IP4 192.168.0.0 --说明:发起者/创建者 会话ID,那么该I…...
STM32 模块化开发指南 · 第 2 篇 如何编写高复用的外设驱动模块(以 UART 为例)
本文是《STM32 模块化开发实战指南》的第 2 篇,聚焦于“串口驱动模块的设计与封装”。我们将从一个最基础的裸机 UART 初始化开始,逐步实现:中断支持、环形缓冲收发、模块接口抽象与测试策略,构建一个可移植、可扩展、可复用的 UART 驱动模块。 一、模块化 UART 的设计目标…...
【基于 Vue3 的原子化时间线组件实现与应用】
基于 Vue3 的原子化时间线组件实现与应用 在前端开发中,我们经常需要使用时间线组件来展示一系列按时间顺序排列的事件。许多项目常常重复开发类似功能,导致代码冗余且维护成本高。为解决这一问题,我们设计了一个高度可定制的原子化时间线组…...
小推桌面tv-小推电视桌面好用吗
想知道小推电视桌面是否好用?来一探究竟!小推电视桌面安全稳定,且支持自由定制。它有影视、壁纸、酒店等多种主题,适配不同场景。内置小推语音助手,还支持第三方语音助手,操作便捷。自带正版影视搜索功能&a…...
深入解析嵌入式Linux系统架构:从Bootloader到用户空间 - 结合B站视频教学
B站视频链接,请多多关注本人B站: 📌 Yocto项目实战教程:第二章 视频讲解 目录 第2章 Linux系统架构 2.1 GNU/Linux2.2 Bootloader2.3 内核空间2.4 用户空间 总结 第2章 Linux系统架构 {#linux系统架构} 嵌入式Linux系统是Linux内核的精简版…...
Asp.NET Core WebApi 配置文件
在 ASP.NET Core Web API 中,配置文件(如 appsettings.json)是管理应用程序设置的核心部分。ASP.NET Core 提供了一套灵活的配置系统,允许开发者从多种来源加载配置数据,并根据需要使用这些配置。 以下是关于如何在 A…...
pipe匿名管道实操(Linux)
管道相关函数 1 pipe 是 Unix/Linux 系统中的一个系统调用,用于创建一个匿名管道 #include <unistd.h> int pipe(int pipefd[2]); 参数说明: pipefd[2]:一个包含两个整数的数组,用于存储管道的文件描述符: pi…...
2025.04.10-拼多多春招笔试第三题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 数字重排最大化问题 问题描述 LYA是一位专业的数字设计师。她手中有两个数字序列 s 1 s_1...
Vue.js组件安全开发实战:从架构设计到攻防对抗
目录 开篇总述:安全视角下的Vue组件开发新范式 一、Vue.js组件开发现状全景扫描 二、安全驱动的Vue组件创新架构 三、工程化组件体系构建指南 四、深度攻防对抗实战解析 五、安全性能平衡策略 结语:安全基因注入前端开发的未来展望 下期预告&…...
质因数之和-蓝桥20249
题目: 代码:无脑直接根据题目,一步步操作就行 #include <iostream> using namespace std;int gcd(int a,int b){if(b0) return a;return gcd(b,a%b); }bool exist_gcd(int a,int b){if(gcd(a,b)1) return false;return true; }bool is…...
《栈区、堆区和静态区:内存管理的三大支柱》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、栈区(Stack)(一)栈区的定义(二)栈区的特点(三)栈区的使用…...
Rust Command无法执行*拓展解决办法
async fn run_cmd_async_out<I, S>(cmd: &str, args: I, timeout_s: u64, with_http_proxy: bool) -> Result<String> whereI: IntoIterator<Item S>,S: AsRef<OsStr>, {let mut cmd tokio::process::Command::new(cmd);// 让 sh 来运行命令&…...
AI 笔记 - 开源轻量级人脸检测项目
开源轻量级人脸检测项目 引言项目解析[libfacedetection 于仕琪](https://github.com/ShiqiYu/libfacedetection)[Ultra-Light-Fast-Generic-Face-Detector-1MB Linzaer](https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB)[A-Light-and-Fast-Face-Detec…...
AI Agent vs 大模型
一句话概述 大模型是“超级学霸”,负责理解、思考和生成内容; AI Agent是“行动派秘书”,会调用工具和知识库,自主完成任务。 角色定位对比 大模型 智能体 核心 任务 回答、创作、推理、分析 规划、决策、执行、协调多工具 …...
go游戏后端开发32:自摸杠处理逻辑
当我们在自摸杠时,实际上在杠完之后,我们还需要进行一个删除操作。因此,我们需要在上面拷贝一个删除操作。由于这是自摸杠,所以这个地方需要删除四次。在这里,我们需要注意的是,自摸杠时,传过来…...
今日行情明日机会——20250411
今天缩量,上方压力依然在,外围还在升级,企稳还需要时日。 2025年4月11日A股涨停主要行业方向分析 一、核心主线方向 芯片(半导体) • 涨停家数:24家(当日最强方向)。 • 驱动逻辑&…...
【Linux】TCP_Wrappers+iptables实现堡垒机功能
规划 显示jumpserver的简单功能,大致的网络拓扑图如下 功能规划 & 拓扑结构 JumpServer(堡垒机)主要功能: 对访问目标服务器进行统一入口控制(例如 nginx、mysql、redis)。使用 iptables 做 NAT 转…...
git仓库中.git文件夹过大的问题
由于git仓库中存放了较大的文件,之后即使在gitignore中添加,也不会导致.git文件夹变小。 参考1 2 通过 du -d 1 -h查看文件大小 使用 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail…...
ssh 登录报错集合(FQA)
1、使用root登录失败(远程主机不允许root登录) 问题:通过 ssh 连接远程主机( ubuntu )时报错,Permission denied 如下: 解决方法:确认root的登录密码没错,且可以正常与远…...
NO.89十六届蓝桥杯备战|动态规划-分组背包-混合背包-多维费用背包|通天之分组背包|排兵布阵|樱花|L国的战斗间谍(C++)
P1757 通天之分组背包 - 洛谷 因为⼀个组⾥⾯最多只能挑⼀个元素,所以我们就以⼀个组为单位。 状态表⽰: dp[i][j]表⽰从前i 组中挑选物品,总重量不超过j 的情况下,最⼤的价值。 那么dp[n][m]就是最终结果。状态转移⽅程&#x…...
NVIDIA H100 vs A100:新一代GPU架构性能对比分析
一、核心架构演进对比 Ampere架构(A100)采用台积电7nm工艺,集成540亿晶体管,配备6,912个CUDA核心和432个第三代Tensor Core,支持FP16、TF32和INT8精度计算。其显存子系统采用HBM2e技术,80GB版本带宽可…...
使用Mybatis时在XML中SQL高亮显示的方法
如图所示,上方的SQL代码很像是一个字符串,那么如何把上方的SQL改成和下方一样的SQL,使得IDEA可以识别SQL方言呢? 1.选中SQL中的一部分代码,此时左侧会出现一个黄色的灯泡图案,点击2.选择这个注入语言或者引用...
机场跑道异物检测数据集VOC+YOLO格式33793张31类别
数据集分辨率都是300x300,都是贴近地面拍摄,具体看图片 据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):33793 标注数量(xml文件…...
