计算机网络压缩版

计算机网络到现在零零散散也算过了三遍,一些协议大概了解,但总是模模糊糊的印象,现在把自己的整体认识总结一下,(本来想去起名叫《看这一篇就够了》,但是发现网上好的文章太多了,还是看这篇吧),作为非通信或对网络有特殊要求的专业,理解到这应该也基本足够了。

整体结构

目前主流的分类模型是五层体系结构,分别为
1,应用层,负责主机内报文对应应用的分发,如邮件SMTP,文件共享服务FTP和浏览器的超文本传输协议HTTP;
2,网络层,负责网络内路由器到主机应用的报文寻址,通过端口实现,可靠交付TCP和无连接的UDP;
3,传输层,负责网络内报文在路由间的寻址跳转,实现协议有IP、RIP、OSPF等;
4,数据链路层,正式传输前的最后一次封装,用于对接网卡等设备,与IP地址的映射转换通过ARP实现;
5,物理层,光纤或网线中实实在在的光电信号传输。

整个网络运行图如下:
计算机网络整体结构
但从这个角度看会有割裂,报文传到互联网后数据链路层又对其进行封装,难道报文在网络上的传输是通过MAC地址实现的吗?
是,也不是,再结合设备层面的层级图就更加清晰了:
设备五层结构图
A到B的报文其实要经过多个路由器转发,而这些设备间的直接寻址是通过数据链路层实现,即网卡对网卡的通信,中间需要很多路由设备帮我们不断进行寻址和转发,最终才能实现通信,只是这一步对用户大多是透明的。

详细说明

从上一张整体结构图从上往下解释:

ARP-地址解析协议:实现IP地址和MAC地址的转换,通过在网络中广播报文,发送ARP请求,相当于大喊一声,我要找的IP在哪里,对应IP位置的主机就把自己的MAC地址发给他,以后发报就用该地址即可,详细介绍可见文章,以及MAC地址相关文章。

IP协议:我们常说的192.168.1.1就是一个IP地址,该地址帮我们标记网络中的主机,从而解决网络寻址的问题。具体分为网络号和主机号,IP地址后跟着\24就是划分网络的掩码长度,代表前24位为网络号,这24位指的是二进制下的IP地址,255.255.255.255共32位,更详细的说法可见该文章。

NAT地址转换:IP地址二进制共32位,一共只有2的32次方个地址,大概43亿,平均一个人还分不上一个,现在全世界的手机、电脑、平板、甚至智能家电等远远不止43亿个,为什么还能继续通信呢?这就是用到了地址转换。
RFC1918将10.0.0.0-10.255.255.255172.16.0.0-172.31.255.255192.168.0.0-192.168.255.255这三个范围的地址设置位私有地址,仅能在内部使用不对外分配,逻辑上构成一个局域网,我们在cmd中使用ipcofig查到的IP也就是这些范围内的私有地址,局域网内的用户可以直接通信,NAT通过端口号映射私有地址实现公私网地址的转换,但该过程只能由私有地址发起,目标为公网地址,所以局域网外的私有地址用户无法通信,需要借助公网IP跳转。详细内容可见该文章。

TCP/UDP:该方式通过IP、端口号确定主机上的特定应用进行通信,其中0-1023端口为知名服务端口,如FTP、HTTP等不可随便更改,1024-65535可由用户指定,详细内容可见该文章。
TCP传输控制协议是有连接的,发送后需要主机确认,否则需要重传,确保数据报一定到达且有序,但因为上述原因效率较低;
UDP用户数据报协议是无连接的,用最少的协议机制向目的端口发送信息,发送后什么也不管,可能丢包,一般用于视频和游戏等要求延迟的应用。

HTTP:应用级别的协议就只介绍这一个,超文本传输协议,属于TCP/IP协议族。它的主要作用是允许客户端(如浏览器)通过网络向服务器请求资源,服务器再将资源返回给客户端。浏览器通过URL发起访问请求,比如我们网址中的域名本质就是IP地址(该过程需要了解DNS域名解析服务,这里不作赘述。),后面跟的参数是访问资源在目标主机中的位置和参数等信息,服务器收到请求后进行响应,把对应资源发送给客户端,此外还有安全的超文本传输协议https,详细介绍可见该文章。

总结

本文章大致介绍了计算机网络的整体结构,以及部分实现方法的原理,前期学习作为简单了解暂时够了,以后有需求可以再顺着方向继续研究。

笔者认为计算机网络作为计算机四大原理之一基本算是最简单的了,这门学科让我不得不转换思路看待世界上的一些超前建设,因为计算机网络建立之初就已经算是做了充分准备,但网络世界发展到如今规模还是没预料到的,前瞻性的确很重要,但人又很难跳出时代的局限性,底子没打好想在基础上重构或者整个推翻重来都是很难的,IP v6推到现在也没完全普及,而IP v4早就说要用完了也没见谁现在连不上网,能上路就是好的,别管什么优雅了。

最后贴一个华为总结的各层报文大全,以后抓包可以对比着看,华为IP报文格式大全。

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

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

相关文章

C++-----线性结构

C线性结构模板 概念:线性结构是一种数据元素之间存在一对一线性关系的数据结构,如数组、链表、栈、队列等。C中的模板可以让我们编写通用的代码,适用于不同的数据类型,而不必为每种数据类型都重复编写相同的代码结构。作用&#…

探究音频丢字位置和丢字时间对pesq分数的影响

丢字的本质 丢字的本质是在一段音频中一小段数据变为0 丢字对主观感受的影响 1. 丢字位置 丢字的位置对感知效果有很大影响。如果丢字发生在音频信号的静音部分或低能量部分,感知可能不明显;而如果丢字发生在高能量部分或关键音素上,感知…

支持向量机入门指南:从原理到实践

目录 1 支持向量机的基本概念 1.2 数学表达 2 间隔与支持向量 2.1 几何间隔 2.2 支持向量的概念 2.3 规范化超平面 2.4 支持向量的深入分析 2.4.1 支持向量的特征 2.4.2 支持向量的作用 2.4.3 支持向量的代数表示 2.5 KKT条件 3 最优化问题 3.1 问题的形成 3.2 规…

使用Webpack构建微前端应用

英文社区对 Webpack Module Federation 的响应非常热烈,甚至被誉为“A game-changer in JavaScript architecture”,相对而言国内对此热度并不高,这一方面是因为 MF 强依赖于 Webpack5,升级成本有点高;另一方面是国内已…

SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明

前言:现在项目普遍使用的数据库都是MySQL,而有些项目实际上使用SQLite既足矣。在一些特定的项目中,要比MySQL更适用。 这一篇文章简单的介绍一下SQLite,对比MySQL的优缺点、以及适用的项目类型和集成SpringBoot。 1. SQLite 简介 …

游戏引擎学习第62天

回顾 我们目前正在开发一把虚拟剑,目的是让角色可以用这把剑进行攻击。最初的工作中,我们使用了一个摇滚位图作为虚拟剑的模型,并且实现了一个基本的功能:角色可以丢下剑。但这个功能并没有达到预期的效果,因为我们想…

spring专题笔记(六):bean的自动装配(自动化注入)-根据名字进行自动装配、根据类型进行自动装配。代码演示,通俗易懂。

目录 一、根据名字进行自动装配--byName 二、根据类型进行自动装配 byType 本文章主要是介绍spring的自动装配机制, 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示,通俗易懂。 一、根据名字进行自动装配--byName Us…

petalinux 中 cmake 需要用到的环境变量

自定义修改部分环境变量, 实测可用

深入解析MySQL索引结构:从数组到B+树的演变与优化

前言: 在数据库查询中,索引是一种关键的性能优化工具。然而,索引的失效可能导致查询效率大幅下降。为了更好地理解索引的工作原理及规避其失效,深入了解索引结构的演变过程尤为重要。 MySQL 的索引数据结构从简单到复杂&#xff0…

43. Three.js案例-绘制100个立方体

43. Three.js案例-绘制100个立方体 实现效果 知识点 WebGLRenderer(WebGL渲染器) WebGLRenderer是Three.js中最常用的渲染器之一,用于将3D场景渲染到网页上。 构造器 WebGLRenderer(parameters : Object) 参数类型描述parametersObject…

Python vs PHP:哪种语言更适合网页抓取

本文将比较 Python 和 PHP,以帮助读者确定哪种语言更适合他们的需求。文章将探讨两种语言的优点和缺点,并根据读者的经验水平分析哪种语言可能更容易上手。接下来,文章将深入探讨哪种语言在抓取网页数据方面更胜一筹。 简而言之,…

python+reportlab创建PDF文件

目录 字体导入 画布写入 创建画布对象 写入文本内容 写入图片内容 新增页 画线 表格 保存 模板写入 创建模板对象 段落及样式 表格及样式 画框 图片 页眉页脚 添加图形 构建pdf文件 reportlab库支持创建包含文本、图像、图形和表格的复杂PDF文档。 安装&…

打造两轮差速机器人fishbot:从零开始构建移动机器人

大家好,我是梦笔生花,我们一起来动手创建一个两轮差速的移动机器人fishbot。 机器人除了雷达之外,还需要IMU加速度传感器以及可以驱动的轮子,我们曾介绍过机器人学部分,曾对两差速模型进行过介绍,所以我们…

Python函数(十二):函数的创建和调用、参数传递、返回值

前言:在编程的世界里,函数是一种基本的构建块,它允许我们将代码封装成可重复使用的单元。在Python中,函数的使用尤为重要,因为它不仅有助于代码的模块化,还提高了代码的可读性和可维护性。本章节&#xff0…

UE5 崩溃问题汇总!!!

Using bundled DotNet SDK version: 6.0.302 ERROR: UnrealBuildTool.dll not found in "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" 在你遇到这种极奇崩溃的BUG ,难以解决的时候。 尝试了N种方法,都不行的解决方法。…

nginx Rewrite 相关功能

一、Nginx Rewrite 概述 定义 Nginx 的 Rewrite 模块允许对请求的 URI 进行重写操作。它可以基于一定的规则修改请求的 URL 路径,然后将请求定向到新的 URL 地址,这在很多场景下都非常有用,比如实现 URL 美化、网站重构后的 URL 跳转等。主要…

GA-Kmeans-Transformer时序聚类+状态识别组合模型

创新研究亮点!GA-Kmeans-Transformer时序聚类状态识别组合模型 目录 创新研究亮点!GA-Kmeans-Transformer时序聚类状态识别组合模型效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.创新研究亮点!GA-Kmeans-Transformer时序聚类状态识…

最新的强大的文生视频模型Pyramid Flow 论文阅读及复现

《PYRAMIDAL FLOW MATCHING FOR EFFICIENT VIDEO GENERATIVE MODELING》 论文地址:2410.05954https://arxiv.org/pdf/2410.05954 项目地址: jy0205/Pyramid-Flow: 用于高效视频生成建模的金字塔流匹配代码https://github.com/jy0205/Pyram…

阻塞队列BlockingQueue实战及其原理分析

1. 阻塞队列介绍 1.1 队列 是限定在一端进行插入,另一端进行删除的特殊线性表。先进先出(FIFO)线性表。允许出队的一端称为队头,允许入队的一端称为队尾。 数据结构演示网站:https://www.cs.usfca.edu/~galles/visualization/Algorithms.ht…

hadoop搭建

前言 一般企业中不会使用master slave01 slave02来命名 vmware创建虚拟机 打开vmware软件,新建虚拟机 典型 稍后安装系统 选择centos7 虚拟机名称和安放位置自行选择(最小化安装消耗空间较少) 默认磁盘大小即可 自定义硬件 选择centos7的i…