当前位置:网站首页>网络原理(1)——基础原理概述
网络原理(1)——基础原理概述
2022-07-07 18:09:00 【瘦皮猴117】
目录
网络原理
应用开发者眼中的网络:跨主机的、两个进程之间的通信。
网络出现的背景及历史:通信学科
国家->机构/组织->家庭->个人
基础原理概述
从硬件角度简述网络通信
数据在传输介质(网线)上的传播(可能存在信号衰退、信号差错等问题),传入接收方。
至此,两台主机之间只要能用一个网络介质连接,就可以从硬件角度实现数据交换了。
多台主机组网问题
协议与分层
要完成整个通信,中间要处理的问题还是非常复杂的。所以有必要进行分工合作。
当有了分层之后,就需要针对每一层,都指定好一些规范,让大家都去遵守,进而更好地完成工作。这些规范具备一定的权威性,在网络学科下,将其称为协议(protocol)
协议分层
对于网络协议来说,往往分成几个层次进行定义。
什么是协议分层
协议分层类似于打电话时,定义不同的层次的协议:在这个例子中,协议只有两层;但是实际的网络通信会更加复杂,需要分更多的层次。
网络标准分层
分层
1. 学院派:OSI (Open System Interconnect)提供了一个共7层的解决方案.
2. 实践派:TCP/IP 5层协议(4层协议,表述中省略了物理层)。
网络设备
3个重要的网络设备(network deivce),注意:这些网络设备不是主机。
1.集线器(hub)
2.交换机(switch sw)3.路由器(router)
集线器(物理层)
LAN内部的通信问题
1. 最简单的局域网:两台主机直连。2. 带有一定拓扑的局域网:
使用集线器进行组网,天生就处于同一个冲突域。这是集线器的工作原理导致的。
冲突域
老师说:“张三,请回答一个问题”,这句话谁能听到?所有人都能听到。
但是,只有张三会做出回应。因为我们传送的数据中携带有目标地址(“张三”)。
自习场景下,人人都可以主动起来讲话。导致互相之间都听不到对方说法。——冲突域。已经在同一个冲突域下,怎么解决?
通过一定的冲突避免算法,进行冲突避免(数据链路层去解决)。
最常见的一种冲突避免算法:发现冲突之后,静默随机时间,再次发送。
即使有冲突避免算法,使得同一个冲突域内的数据可以有效传输了,但信号传输效率还是会产生影响。所以需要:
1.冲突域内的主机不要太多。
2.尽可能减少冲突域的出现。
交换机(数据链路层)
交换机(switch)出现,来减少冲突域、划分冲突域。
集线器:只做工具复制,根本不知道数据是什么。交换机:需要理解数据链路层放入的目标地址(需要能解析数据链路层协议),根据数据的目标地址,决定数据给谁、不给谁。
交换机工作在数据链路层。
根据数据中的目标地址,将数据只发给对应的目标。通过交换机也可以组局域网。
广播域
地址
地址:数据链路层的地址指的是MAC地址(物理地址)
MAC地址的长度为48位(6个字节),通常表示为12个16进制数。如:00-16-EA-AE-3C-40就是一个MAC地址
网卡生产的时候已经固定了,全世界的网卡的 MAC地址是不会冲突的。
一个LAN 内部,无论哪种设备,哪种拓扑,主机和主机都已经可以正常的通信了——数据链路层协议的职责。
以上为数据链路的职责+两个设备(hub、switch)工作在哪一层,基本工作原理。
域名(domain)
www.baidu.com -> 182.193.33.232
localhost -> 127.0.0.1:代表本机的一个域名
路由器(网络层)
网络层:通过数据路由,解决跨LAN的主机间通信问题。路由器工作在网络层。
路由器至少处于两个局域网(至少有两张网卡)。数据只能在同一个LAN传输路由器横跨两个LAN。所以,跨LAN的传输是需要经过路由器传递的
路由(route):又称寻路;路由器(router) :用于完成寻路功能的一种设备。
网络层有自己的地址:IP地址
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。
通常用“点分十进制”的方式来表示,即 a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6.
IP地址是软件地址:同一个网络内部的IP是不应该“重复”的。IP地址是随时变化的。
传输层
传输层:城市对比主机。主机到主机已经全部连接起来了。
例如:城市中的一个人(进程)要另一个城市中的另一个人(进程)进行通信。(进程间的通信)端口(port) 0-65525两个字节的无符号数。
进程<->端口,类比人<->手机号
写明端口,对应到具体的人,
寄快递,写收件人电话就可以对应到该人。一个进程可以有多个端口(不冲突)
一个端口只能分配个一个人(不能重复)
五个层次
重要协议:
HTTP/HTTPS/DNS 属于应用层TCP/UDP 属于传输层
IP 属于网络层
应用层
发送:封装(必须携带分用和解包信息)
接收:解包/分用(根据本层的控制信息)
发送
接收
五元组
在TCP/IP协议中,用五元组来标识一个网络通信:
1. 源IP:标识源主机
2. 源端口号:标识源主机中该次通信发送数据的进程
3. 目的IP:标识目的主机
4. 目的端口号:标识目的主机中该次通信接收数据的进程
5. 协议号:标识发送进程和接收进程双方约定的数据格式
边栏推荐
猜你喜欢
Open source heavy ware! Chapter 9 the open source project of ylarn causal learning of Yunji datacanvas company will be released soon!
关于cv2.dnn.readNetFromONNX(path)就报ERROR during processing node with 3 inputs and 1 outputs的解决过程【独家发布】
AIRIOT助力城市管廊工程,智慧物联守护城市生命线
Machine learning notes - explore object detection datasets using streamlit
vulnhub之Funfox2
Ways to improve the utilization of openeuler resources 01: Introduction
LeetCode_7_5
Force buckle 599 Minimum index sum of two lists
Splicing and splitting of integer ints
国家网信办公布《数据出境安全评估办法》:累计向境外提供10万人信息需申报
随机推荐
第二十章 使用工作队列管理器(三)
Equals method
Interpretation of transpose convolution theory (input-output size analysis)
力扣 643. 子数组最大平均数 I
MSE API学习
Splicing and splitting of integer ints
Force buckle 88 Merge two ordered arrays
Graduation season | regretful and lucky graduation season
LeetCode_7_5
BI的边界:BI不适合做什么?主数据、MarTech?该如何扩展?
JVM GC garbage collection brief
Force buckle 1037 Effective boomerang
c语言如何判定是32位系统还是64位系统
openEuler 有奖捉虫活动,来参与一下?
剑指 Offer II 013. 二维子矩阵的和
Boot 和 Cloud 的版本选型
Some arrangements about oneself
Kubernetes——kubectl命令行工具用法详解
Force buckle 989 Integer addition in array form
干货分享|DevExpress v22.1原版帮助文档下载集合