当前位置:网站首页>【网络原理的概念】
【网络原理的概念】
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)有多长,上层协议是什么等信息。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中 的 “上层协议字段” 将数据交给对应的上层协议处理。
各层可以根据各层自己添加的控制信息进行必要的操作
对应层次之间,是完全透明的,完全可以忽略这个过程
要是对大家有所帮助的话,请帮我点个赞吧。
边栏推荐
- EasyGBS级联时,上级平台重启导致推流失败、画面卡住该如何解决?
- 有用的win11小技巧
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part2[通俗易懂]
- Open source heavy ware! Chapter 9 the open source project of ylarn causal learning of Yunji datacanvas company will be released soon!
- 【mysql篇-基础篇】事务
- pom. XML configuration file label: differences between dependencies and dependencymanagement
- How to cooperate among multiple threads
- LeetCode_ 7_ five
- Data island is the first danger encountered by enterprises in their digital transformation
- CIS芯片测试到底怎么测?
猜你喜欢
【STL】vector
Jenkins 用户权限管理
整型int的拼接和拆分
The state cyberspace Office released the measures for data exit security assessment: 100000 information provided overseas needs to be declared
CIS芯片测试到底怎么测?
How to cooperate among multiple threads
Force buckle 2319 Judge whether the matrix is an X matrix
Leetcode force buckle (Sword finger offer 36-39) 36 Binary search tree and bidirectional linked list 37 Serialize binary tree 38 Arrangement of strings 39 Numbers that appear more than half of the tim
[MySQL - Basic] transactions
Open source heavy ware! Chapter 9 the open source project of ylarn causal learning of Yunji datacanvas company will be released soon!
随机推荐
Read PG in data warehouse in one article_ stat
kubernetes之创建mysql8
Chapter 20 using work queue manager (3)
pom. XML configuration file label: differences between dependencies and dependencymanagement
Opencv学习笔记 高动态范围 (HDR) 成像
[auto.js] automatic script
ASP.NET学习& asp‘s one word
机器学习笔记 - 使用Streamlit探索对象检测数据集
Get webkitformboundary post login
第二十章 使用工作队列管理器(三)
Implement secondary index with Gaussian redis
Cloud component development and upgrading
Force buckle 1790 Can two strings be equal by performing string exchange only once
[solution] package 'XXXX' is not in goroot
sql 常用优化
【Auto.js】自动化脚本
How C language determines whether it is a 32-bit system or a 64 bit system
Yolov6:yolov6+win10--- train your own dataset
JVM 类加载机制
VMWare中虚拟机网络配置