当前位置:网站首页>网络原理(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. 协议号:标识发送进程和接收进程双方约定的数据格式
边栏推荐
- Boot 和 Cloud 的版本选型
- 力扣 1037.有效的回旋镖
- How to cooperate among multiple threads
- Force buckle 643 Subarray maximum average I
- 机器学习笔记 - 使用Streamlit探索对象检测数据集
- CJSON内存泄漏的注意事项
- 毕业季|遗憾而又幸运的毕业季
- [sword finger offer] sword finger offer II 012 The sum of left and right subarrays is equal
- 841. 字符串哈希
- Force buckle 1790 Can two strings be equal by performing string exchange only once
猜你喜欢
Opencv学习笔记 高动态范围 (HDR) 成像
开源重器!九章云极DataCanvas公司YLearn因果学习开源项目即将发布!
The boundary of Bi: what is bi not suitable for? Master data, Martech? How to expand?
Data island is the first danger encountered by enterprises in their digital transformation
【STL】vector
国家网信办公布《数据出境安全评估办法》:累计向境外提供10万人信息需申报
九章云极DataCanvas公司获评36氪「最受投资人关注的硬核科技企业」
School 1 of vulnhub
MRS离线数据分析:通过Flink作业处理OBS数据
LeetCode_7_5
随机推荐
力扣 1961. 检查字符串是否为数组前缀
整型int的拼接和拆分
vulnhub之Funfox2
Yolov6:yolov6+win10--- train your own dataset
torch.nn.functional.pad(input, pad, mode=‘constant‘, value=None)记录
JVM class loading mechanism
Force buckle 599 Minimum index sum of two lists
Kubernetes——kubectl命令行工具用法详解
openEuler 有奖捉虫活动,来参与一下?
php 获取图片信息的方法
九章云极DataCanvas公司获评36氪「最受投资人关注的硬核科技企业」
841. String hash
LeetCode_ 7_ five
ASP. Net learning & ASP's one word
数据孤岛是企业数字化转型遇到的第一道险关
831. KMP字符串
【解决】package ‘xxxx‘ is not in GOROOT
浅尝不辄止系列之试试腾讯云的TUIRoom(晚上有约,未完待续...)
Kubernetes -- detailed usage of kubectl command line tool
gorilla官方:golang开websocket client的示例代码