当前位置:网站首页>【网络原理的概念】
【网络原理的概念】
2022-07-07 18:15:00 【DJL_new_life】
(点击跳转即可哦)
网络原理
基础原理
用户态和内核态只是内存上的不同区域 用户态-> 内核态:内存上数据复制的过程
网卡:实现物理信号 <-> 数字信号的转换
两台主机之间的数据传输
用户态-> 内核态:内存上数据复制的过程
这里的内部复制 就是类似这样的代码(只是类似)
byte[] 用户态 = new byte[1024]; //待发送数据
byte[] 内核态 = new byte[1024]; //内核态缓冲区
os.write(用户态);
for(int i = 0; i < bytes.length; i++){
内核态[i] = 用户态[i];
}
让网卡发送数据怎么处理?
- 将数据装入网卡:数据的复制
- 进行发送数据:fire()
- 发送数据就要将数据信号变为物理信号
数据在传输介质(网线、光纤)上的传播(信号衰退、信号差错等问题)
当数据走到另一台主机上时,此时CPU停止当前执行循环,让CPU执行一段提前准备好的代码(这就是中断处理流程)。把数据从网卡对应的位置 复制到 内核态的内存
此时,两台主机之间只要能用一个网络介质连接,就可以从硬件角度实现数据交换
那多台主机的组网呢?
网络拓扑的基础构造:总线型、星形、环形、树形
协议/分层
要完成整个通信,中间要处理的问题还是非常复杂的。所以采用分工合作是非常有必要的
当有了分层之后,就需要针对每一层,都指定好一些规范,让大家都去遵守,进而更好的完成工作。
这些规范具有一定的权威性,在网络学科下,就将其称为 协议(protocal)
网络标准分层:
- 学院派:OSI (Open System Interconnect) 提供了一个 7层的解决方案
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
实践派:TCP / IP 5层协议(四层,在表述中 省略了物理层)
应用层 (Application Layer):实现应用自己的业务问题(业务不同,协议不同)
传输层(Transmission Layer): 实现主机上任意进程 到 另一台主机上任意进程通信的问题
网络层(NetWork Layer): 实现数据路由的功能基础上,最终实现跨 LAN 的主机 到 主机的通信的问题
数据链路层(Data Link Layer) : 局域网内部一台主机和另一台主机连接通信的问题(冲突域 / 广播域)
物理层 (Physical Layer) : 硬件角度保证数据转换 / 在网络介质中如何传播
物理层
LAN内部的通信问题:
- 最简单的局域网:就是两台主机直连
- 带有一定拓扑的局域网
这些主机在共同使用一个信道而信道一次只能走有限的信号,导致信号在信道上会出现冲突
冲突域:
比如在自习的场景下,人人都可以主动起来讲话,导致互相之间都听不到对方的说法
集线器可以有效的解决网络拓扑中数据传递的问题
集线器工作在 物理层 (1. 复制数据 2. 信号放大)
使用集线器进行组网,天生就处在同一个冲突域,这是集线器的工作原理导致的
数据链路层
已经在同一个冲突域下,怎么解决,通过一定的冲突避免算法,进行冲突避免。——数据链路层去解决
最常见的一种冲突避免算法:发现冲突之后,静默随机时间,再次发送
即便有冲突避免算法,使得同一个冲突域内的数据可以有效传输了,但信号传输效率还是会产生影响
- 冲突域内的主机不要太多
- 尽可能减少冲突域的出现
交换机(switch) 用来减少冲突域(划分冲突域)
集线器:只做复制,根本不知道数据是什么
交换机:需要理解数据链路层放入的目标地址(需要能解析数据链路层协议),格式数据的目标地址,决定数据给谁不给谁
交换机工作在数据链路层,实现根据数据中的目标地址,将数据只发送给对应的目标
所以,通过交换机也可以进行组建局域网。
地址:数据链路层的地址指的是 MAC 地址(物理地址)
MAC地址的长度为 48位(6个字节),通常表示为 12个 16进制数,如 00-16-EA-AE-3C-40 就是一个MAC地址
网卡在生产的时候已经写死了。全世界的网卡的MAC地址是不会冲突的
不同的路由器之间 分为了不同的广播域
数据链路层协议的职责: 一个LAN内部,无论哪种设备、哪种拓扑,主机和主机都可以正常的通信了
网络层
通过数据路由解决 跨LAN 的主机间通信问题。
路由器至少处在两个局域网(至少有两张网卡)
路由器工作在网络层。
数据只能在同一个LAN传输,路由器横跨 两个LAN,所以跨LAN 的传输是需要经过路由器传递的。
路由(route): 做寻路;
路由器(router): 用于完成寻路功能的一种设备
网络层的协议就是为了完成寻路,实现跨LAN主机到主机
网络层有自己的地址:IP地址
IP地址是一个32位的二进制数,通常被分割为4 个 ”8位二进制数“ (也就是 4 个字节)
通常用”点分十进制“ 的方式来表示,即 a.b.c.d 的形式 (a,b,c,d 都是 0~255 之间的十进制整数)
IP地址是软件地址:同一个网络内部的IP是不应该”重复“ 的。IP地址的随时变化的。
传输层
主机到主机已经全部连接起来。一个进程 要和 另一台主机上的进程进行通信。
端口(port):0~65525 两个字节的无符号数
进程 <-> 端口 :写明端口,对应到具体的进程
人 <-> 手机号 : 写快递:收件人电话
一个进程可以有多个端口(不冲突)
一个端口只能分配给一个人(不能重复)
三个重要的网络设备
集线器
工作在物理层
交换机
工作在数据链路层
路由器
工作在网络层
小结:
应用层 | 业务 | 用户态 | ||
---|---|---|---|---|
传输层 | 进程 到进程 | 端口 | 内 | |
网络层 | 跨LAN的 主机到主机 | IP地址/路由 | 路由器 | 核 |
数据链路层 | LAN内部 主机到主机 | MAC地址/广播域/冲突域 | 交换机 | 态 OS代码的完成 |
物理层 | 物理上保证线路畅通 | 集线器 | 硬件 |
重要协议:
HTTP/HTTPS/DNS 属于应用层
TCP/UDP 属于 传输层
IP 属于 网络层
发送:封装(必须携带分用和解包信息)
接受:解包/分用 (根据本层的控制信息)
封装和分用
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation)。
首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中 的 “上层协议字段” 将数据交给对应的上层协议处理。
各层可以根据各层自己添加的控制信息进行必要的操作
对应层次之间,是完全透明的,完全可以忽略这个过程
要是对大家有所帮助的话,请帮我点个赞吧。
边栏推荐
猜你喜欢
Mongodb由浅入深学习
Some important knowledge of MySQL
[MySQL - Basic] transactions
CSDN syntax description
mysql 的一些重要知识
About cv2 dnn. Readnetfromonnx (path) reports error during processing node with 3 inputs and 1 outputs [exclusive release]
mock. JS returns an array from the optional data in the object array
机械臂速成小指南(十二):逆运动学分析
VMWare中虚拟机网络配置
Machine learning notes - explore object detection datasets using streamlit
随机推荐
[MySQL - Basic] transactions
The state cyberspace Office released the measures for data exit security assessment: 100000 information provided overseas needs to be declared
TS快速入门-泛型
一文读懂数仓中的pg_stat
Force buckle 2319 Judge whether the matrix is an X matrix
Yolov6:yolov6+win10--- train your own dataset
力扣 459. 重复的子字符串
使用高斯Redis实现二级索引
Read PG in data warehouse in one article_ stat
ASP. Net learning & ASP's one word
Force buckle 599 Minimum index sum of two lists
How to implement safety practice in software development stage
SQL common optimization
POJ 1742 coins (monotone queue solution) [suggestions collection]
YoloV6:YoloV6+Win10---训练自己得数据集
BI的边界:BI不适合做什么?主数据、MarTech?该如何扩展?
I wrote a markdown command line gadget, hoping to improve the efficiency of sending documents by garden friends!
实战:sqlserver 2008 扩展事件-XML转换为标准的table格式[通俗易懂]
Prometheus remote_write InfluxDB,unable to parse authentication credentials,authorization failed
开发一个小程序商城需要多少钱?