计算机网络原理简介

article/2025/9/29 0:34:48

物理层

电脑要联网,需要做什么,电脑需要电, 然后电脑与电脑之间相连,需要网,可以用光纤,双绞线,同轴电缆,无线波等

把电脑连接起来的物理手段,主要规定了网络的一些电气特性,作用是负责传送0和1的电信号.而机械特性,及时如何去与硬件相连了,比如说插座的尺寸

数据链路层

物理层传过来了0和1,但是单纯的0和1没有啥意义,所以就要规定解读方式,就像情报一样,怎么来解读. 这里我们了解到一组电信号构成一个数据块,这个数据块有了一个称呼:帧.每个帧两个部分,头和数据(head and data)

帧是有底线(长度)的,所以如果数据量特别大,就需要分割成多个帧来发送.如果在传输过程中,有出错的数据,那么就需要重新发送了,所以帧必须得这么做.能够识别出物理层发过来的比特流,还得能识别出起始和终止.

我们都知道,网络有时候很不稳定的,那你得怎么来区分,那个算是一帧呢.这里就有了这么几种方法来能够提高正确识别率.

 1.使用字符填充的是首尾定界符 2.使用比特填充的首尾标志法 3.违法编码法 4.字节计数法.

生活中, 常见的这么一种情况 : 我在今目标给你传送一份文件,怎么确保我给你的文件中,有没有遭到损坏. 我是发出了,  具体是你来收,那么你就得有这么一个能力,能够发现给你的文件中,有没有差错.如果有,你给我说一下啊,收到的不对啊,你再给我重新发一份.也可能因为网络的问题,你的网掉线了,这样你就不能给我回复收到情况了. 那么我这里就启用一个定时器,到点了,你还没回复,那我就认为你收到的有问题, 再次重新发送.那么这个就是差错控制功能了.也是数据链路层主要功能之一.

差错控制其实是有两种的,一种就是上面说的那种,我发现接收的文件异常,那么就让你重新给我发一份完整的. 这种方式叫:自动请求重复. 还有一种,它就是,我接收了一部分的文件,再次让你给我发的时候,是继续上一部分之后的内容发过来.这种方式对于我的要求就高了,不光能判断文件有差错,还得能判断发生错误的位置,方便你再次给我续传.叫:前向纠错FEC.

  

网络层

上面我们讲了,数据链路层,是两个相邻端点之间的数据帧的传送,现在需要从A传到Z,中间经过了BCD等等.那么这就需要网络层的支持了.

再来个例子: 把我工位上的零食拿到你的工位,可以有n种走法,但是为了方便处理零食的传输,咱俩之间可以先建立这么一个逻辑通路(逻辑上了,那就是虚的喽),然后经过若干人传递给你.不过最终是只有一个人把所有零食都给你.

还有一种方式就是: 把零食分成好几袋,若干袋零食构成了是我要送给你的.每个零食都带包装,我可以分开传送.然后你就会收到不定是谁给你的某一种.当然这也有种可能,中间零食被人吃了.你的零食就丢了部分.

上面两种就是通信子网对端系统提供的两种网络服务: 虚电路和数据报.

咱们继续讲上面的零食. 虚电路方式,从最开始我就确定了,先转给B,再转C,以此类推,直到转给你.

而数据报呢,就是每次某个人收到这包零食,再去做出选择. 咱们这个来回转,拿这么一个词来表达: 路由选择.

如果在传送的过程中, B 不光需要转我给你的零食,还要转其他人给好有的零食,那么B就可能因为需要转的东西太多.就给拥塞了.这个想想双十一,就完全就理解了.要么就是仓库太小,有些包就给丢了.有些就是因为分拣员少.来不及处理那么多的量.所以堵了很正常嘛.

当然这个拥塞不光光是网络层可能出现,其它层也可能会出现的.

为了解决这个堵塞,可以分组排队,按顺序来,也可以把一些包直接给丢了.减少压力.

 这里 有一个我们常说的ip

那么现在就来讲讲这个ip,互联网上的每一台计算机,都会分配到一个ip地址.地址分为两个部分,前一部分代表的是网络,后一部分代表的是主机.前一部分代表的是网络,后一部分代表主机,处于同一个子网络的电脑,其ip地址网络部分必定是相同的.但是不一定是同一个子网络. 因为不清楚其网络部分是前24位,还是16位. 怎么才能从ip地址,判断两台计算机是属于同一个子网络的.需要一个参数了: 子网掩码.

两个ip地址与子网掩码分别进行and运算(两个数位都为1,运算结果为1,否则为0),比较结果是否相同,是的话,就是在同一个子网络中了.否则就不是.

ip协议的作用是啥: 就是先给每个计算机分配一个ip地址,方便寻址.然后确定哪些地址是同一个子网络中.这样ip从源传输实体取得数据,如果源址和目标地址在一个网络中,ip就直接通过网络将数据传输给目的主机了,而若目的主机不在一个网络中,ip数据报就会一个模块传到另一个模块.直到目的地址为止.

 

传输层

经过上面物理层, 电脑有了电,首先是活了经脉开始复苏.,经过数据链路层,成功把物理层的内容进行了解析开始传输,经过网络层,利用其路由的选择,成功的从一台主机联系上了目标主机.联系上了目标主机,但是主机上有很多的应用程序,他们都用到了网络.当你用今目标接收一个文件, 但同时你还开着wechat和qq,那么电脑怎么就确定了, 是今目标传过来的这个文件, 这里就有一个新的名词出现了,就是我们常说的端口. 文件可以理解成一个数据包,这个包发送到今目标的文件传输端口,今目标就能取到这个包了.

我们都知道,基本没有什么东西,都是无限长的, 上面讲了帧有长度, 之前也有提过redis有固定槽数,端口也不例外. 介于0-63353,不过我们的系统启动, 会占用一定的端口,也就是0-1023,用户想用,只能用1024之后的.

这么区分网络层和传输层,也就相对好区分一点了. 网络主要是确定主机到主机,但是传输层就变成了端到端了.有了主机ip和端口,就可以唯一确定一值了. 程序之间的通信到目前就接通了.

上面我们说了,找到了组织了,就比如说: 找到了中国共产党的接头人. 但是情报不能乱给吧.这里就需要建立连接了. 数据包要传输,要传输到哪里,就需要在数据包中添加 一个端口,方便一一对应. 数据包加入端口信息,就得需要一个新的协议了.最简单的方式就是UDP协议了.格式很简单.就是标头和数据.标头中有源端口和目标端口,长度和校验和. 数据就是具体的内容了. 整个UDP数据包中是放在ip数据包中的数据部分了. 它是怎么来发送的呢,就是只要我手里有内容,管你能不能收,反正我是脱手了.也不对这个数据包进行检查和修改. 所以它快, 但是不可靠啊.所以就得完善它,那么就有了tcp协议. 

tcp与udp最大的区别就是, 它有确认机制.udp不管你能不能收,所以很有可能这个包就丢了. tcp就会确保数据不会遗失, 那它怎么做到的: 

三次握手: 我发送请求,你回应请求,我再次发送收到你回应请求的请求.

当然也可能你没有回应请求,我就来个计时器,到点了,还没给我应答, 我就重发,也会记录这个时间.存放当前的目的端的时间,以后就不乱估时间了, 多智能化.

请求连接有了,释放链接也不难理解: 

有时候,它想懒点,等你发过来几个之后,我再一次性回复你, 发送方呢,也想等到一定量之后,一次性发给你, 这就引申出来一个: 滑动窗口控制

 

应用层

 我们平时用到了各种的应用程序, 有网页,还有邮箱等等.

所以来的数据,就是五花八门的,必须得事先规定好格式,否则根本无法解读 . 简单理解应用层的作用,就是规定应用程序的数据格式

最高层,直接面对用户

应用层就包括了我们需要的应用程序.同时还有应用层协议, 有了这些协议,我们就可以通过不同的协议来使用网络. 比如上面说的发邮件,就用专门的协议:SMTP 和POP3.

这里简单讲几个常用的应用层协议

我们每次访问什么网站首页的时候,都是在浏览器中直接输入域名,比如baidu.com. 而不是输入网站的ip. 这个有了一个熟悉的DNS解析.

域名系统DNS

顶级域名有3类: 国家顶级域名(cn us hk tw),国际顶级域名(int),通用顶级域名(com).

可能你想知道,ip是怎么和域名连起来的.听我下面慢慢给你讲: 咱们天赋吉运,就是一个域名, 它有一个ip.域名到ip地址的映射

说完常常访问的网址之后, 我们也是离不开各种邮件,现在来大概讲讲邮件

邮件服务器协议有我们常见的smtp,最简单的邮件传输协议啦, 另外就是邮局协议pop 还有一个不熟悉的因特网邮件存取协议IMAP

pop得有一个邮件服务器.咱们现在也有这么一个邮件服务器了

先来简单的讲: smtp 25端口  邮件服务器之间的传输协议

pop3 用户计算机与邮件服务器之间的传输协议.端口110

imap有3种工作方式, 离线: 用户的计算机得和邮件服务器保持连接,然后把邮件都从服务器下载到本地

在线的: 邮件是一直存在邮件服务器中的,然后用户各种操作.删除啊回复啊等等. 但是得一直跟服务器连接着,不能断喽

断连接方式: 收邮件的时候,其实是先在本地来个缓存,当用户编辑的差不多了,要发送时,再去连接邮件服务器,同时把两方的邮件状态保持一致.我觉得是介于上面两个中间的.

后面还有我们平时输入域名, 最前面默认给加上的http 和 www .http是应用层的协议之一.资源标示是它的核心.url 这个咱们太常见了, 跳转页面啥的. 

还有之前我.net项目常用的ftp,可以临时性充当文件服务器.它可以直接匿名登录, anonymous 所以从某种程度上讲,不太安全.

 

小结

两个电脑如何通信呢, 就是A 给B 发一个数据包, B收到了,给A回一个数据包,就建立起来了.

A 想找B ,首先A 给通上点,插上网线, 然后能知道B的ip和mac A和B 可能不在一个子网络里,比如A在中国, B在美国.这样A 就不知道B的mac地址了, 就有这么一个网关,网关能知道B的mac地址的.  那B 的ip呢. 一般我们直接连网之后, 大家直接看ip属性,能看出来,给自动分配了. 所以B要连网,得有这么几个参数: 本机ip 子网掩码,网关ip dns的ip地址

现在B能连网了,想打开百度时,先输入的www.baidu.com 然后dns协议,把这个网址给转成了ip地址. dns服务告诉B 要访问的ip地址是多少. 所以B就知道了百度的ip了.  下面想判断,这个ip是不是在同一个子网络, 就得用到子网掩码了.

浏览器页面用的http协议.

http部分内容,是嵌入tcp数据包中的. tcp数据包再嵌入ip数据包, ip数据包需要设置双方的ip,上面双方的ip我们已经知道了. ip数据包是嵌入以太网数据包中的.以太网数据包需要知道双方的mac地址,上面咱们也知道啦.所以通信达成啦


http://chatgpt.dhexx.cn/article/7jZ34Edv.shtml

相关文章

快速了解网络原理

作者:~小明学编程 文章专栏:JavaEE 格言:热爱编程的,终将被编程所厚爱。 目录 局域网和广域网 局域网 局域网组建的方式 广域网 网络通信基础 IP地址 端口号 协议 什么是协议 协议分层 分层模型 OSI七层模型 TCP/IP…

网络原理 (1)

网络原理 文章目录 1. 前言: 2. 应用层2.1 XML2.2 json2.3 protobuffer 3. 传输层3.1 UDP3.1 TCP4. TCP 内部的工作机制 (重点)1. 确认应答 2.超时重传3. 连接管理3.1 建立联系 :三次握手3.2 断开连接 : 四次挥手 4. 滑动窗口5. 流…

网络原理初识(基础)

目录 一,网络的划分 1.局域网(LAN) 概念 局域网的组建(连接方式) 2.广域网(WAN) 概念 二,网络通信基础 1.IP地址 概念 格式 组成 分类 特殊IP 2.端口号(po…

网络基本原理

一、网络与网卡 网络:进程与进程间跨主机(Host)通信 网卡: 网卡发送数据:1.填充数据 2.触发发送 网卡接收数据:1.接收数据 2.通过中断把控制权交给OS 3.OS把数据搬给进程 数据经过不断的封装之后才能发…

安装vue-devtool

新买了台电脑,想要安装vue-devtool,发现安装不上,特此记录下。 一,下载 因为某种大家都知道的原因,外网上不了。 可以使用这里的下载地址: https://chrome.zzzmh.cn/info?tokenljjemllljcmogpfapbkkighb…

嵌入式linux之yocto(六)devtool往返开发

1. 参考 yocto官方文档-devtool 微信读书:嵌入式Linux系统开发:基于Yocot Project 书中对于devtool讲解较少,官方文档对devtool的工作流和使用方法较为详细。 传统开发内核是直接进入内核路径修改源码,这里简述使用devtool工具开发Linux内核…

Chrome Devtool 调试 Javascript

重现错误 单击打开演示。演示在新选项卡中打开。在 Number 1 中输入数字5在 Number 2 中输入数字2点击 Add Number 1 and Number 2 熟悉 Sources 面板 UI 点击Source get-started 是 get-started.html(不包括JS) get-started.js 就是 get-started 的…

devtool使用介绍(2)

devtool使用介绍2 2.4.2 使用devtool Modify修改现有组件的来源 2.4.2 使用devtool Modify修改现有组件的来源 devtool Modify命令为使用已有代码的现有代码作准备,该代码已具有用于构建软件的本地recipe。 该命令足够灵活,可让你从上游源提取代码&…

webpack——devtool配置及sourceMap的选择

官方手册传送门 官方对devtool配置的定义很简单:选择一种 source map 格式来增强调试过程,不同的值会明显影响到构建build和重新构建rebuild的速度。 不过,什么是source map,官方用提供了许多种的source map,其中的区…

webpack:devtool配置中的source map

webpack:devtool配置中的source map 一、功能作用二、配置文件三、source map格式(1)source-map(2)inline-source-map(3)hidden-source-map(4)eval-source-map&#xff0…

sourceMap: devtool 模式以及SourceMapDevToolPlugin的使用

1. 什么是sourceMap sourceMap 是一个信息文件, 维护着代码转换编译前后的映射关系; 2. devtool : 选项控制是否生成,以及如何生成 source map source Map对应的模式 1)inline 2) cheap 3)module 4) eval 5) source-map …

webpack之devtool

关于Devtool 该选项控制是否以及如何生成源映射。官网上给出的可选值有: 其中一些值适合开发,一些用于生产。对于开发,您通常需要快速的Source Maps,以bundle的大小为代价,但是对于生产,您需要独立的Sourc…

chrome devtool使用基础

保存js和css setting > workspace 工作区设置后,自动映射工作区 带绿色图标的文件,不需要请求 blackbox script 黑盒调试,调试不进入第三方代码,只调试项目代码 setting > blackbox 或者鼠标右键设置 network throttling profile 设置网络模式,网速限制,在ne…

Chrome Devtool 使用指南

Chrome Devtool Performance使用指南 运行时性能表现(runtime performance)指的是当你的页面在浏览器运行时的性能表现,而不是在下载页面的时候的表现。这篇指南将会告诉你怎么用Chrome DevToos Performance功能去分析运行时性能表现。在RAI…

devtool使用

记录点没用的东西 1. 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><version>2.3.2.RELEASE</version> </dependency> 2.pom中加入maven插件 <plugin…

webpack devtool详解

前言 devtool也是之前常用的一个配置&#xff0c;我们稍微了解下吧&#xff0c;不研究太深&#xff0c;毕竟现在都不怎配置他。 内容 devtool是配置sourceMap的。 sourceMap大家都知道&#xff0c;我们本地或者测试环境出了错误&#xff0c;可以在source中迅速定位错误&#x…

devtool配置

devtool配置 一、devtool配置1.source map 源码地图2.webpack中的source map3.对于开发环境 一、devtool配置 1.source map 源码地图 本小节的知识与 webpack 无关 前端发展到现阶段&#xff0c;很多时候都不会直接运行源代码&#xff0c;可能需要对源代码进行合并、压缩、转换…

dev-tool安装方法(手动安装版)

记录一下vue调试神器dev-tool的安装过程&#xff0c;由于是在公司内网&#xff0c;也不方便挂梯子&#xff0c;所以手动安装——下载源码在本地编译&#xff0c;再添加扩展程序的方式安装。过程如下&#xff1a; 一、dev-tool源码获取 git地址&#xff1a;https://github.com/…

一文彻底搞懂webpack devtool

为什么需要Source Map 首先根据谷歌开发者文档的介绍&#xff0c;Source Map一般与下列类型的预处理器搭配使用&#xff1a; 转译器&#xff08;Babel&#xff09;编译器&#xff08;TypeScript&#xff09;Minifiers&#xff08;UglifyJS&#xff09; 为什么呢&#xff1f;…

OpenBmc开发8:devtool简介与使用

1 简介 devtool是yocto中的一个工具&#xff0c;此命令行工具作为可扩展SDK&#xff08;eSDK&#xff09;的一部分&#xff0c;是基础组件。可以使用devtool来帮助构建&#xff0c;测试和打包eSDK中的软件。可以使用该工具有选择地将构建的内容集成到OpenEmbedded构建系统构建…