DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • 计算机基础

    • 前奏(介绍)
    • 计算机硬件组成
    • 操作系统
    • 计算机网络概览
    • 计算机网络之网络接口层
      • 物理层
      • 数据链路层
        • 三大功能(了解)
        • 以太网协议
        • Ethernet的广播
        • 补充:交换机的前身
    • 计算机网络之网络层
    • 计算机网络之传输层
    • 计算机网络补充
  • linux基础

  • mysql

  • git

  • 数据结构与算法

  • axure

  • english

  • docker

  • IT_Need
  • 计算机基础
DC
2023-11-20
目录

计算机网络之网络接口层

# 物理层

把数据全部转换成电信号/比特位 010111010.

物理层连接不同的网络设备(光纤、海底电缆等)传输01011的高低电平信号.
注意: 单纯的二进制数01011是没有意义的

只需要了解的知识点: 光纤、海底电缆、双绞线都是物理层常见的传输介质. 这数据电路一般有 两个信道 (往一个方向传输信息的媒体), 分别用于发送和接收; 衍生出了 全双工通信信道、半双工、单工; 为了提高信道的利用率, 可以使用分用-复用的技术. 


# 数据链路层

# 三大功能(了解)

数据链路层三个重要功能: 封装成帧(帧首部+帧数据+帧尾部)、透明传输、差错检测

1> 封装成帧: 完整的数据帧 = 帧首部+帧数据(以太网数据帧)+帧尾部
2> 透明传输: 帧首尾部都是特定的控制字符(比特流), 若在帧数据中出现了,需要转义
3> 差错检测:
     A. 奇偶校验法(相加若奇数添加校验位1,若偶数添加校验位0),同时错两个就拉跨
     B. 循环冗余检验码CRC!多项式 异或操作(异为1 同为0)

举栗: 假设有数据1101011011需要传输, 采用CRC的生成多项式为P(X)=X^4+X+1, 请计算添加了CRC校验码之后的数据.
解: 多项式位串为 --> 10011, 模二除法得到余数1110, 所以得到结果11010110111110
1
2

注意:
     物理层只管比特流的传输, 无法控制是否出错
     数据链路层只进行数据的检测, 不进行纠正有错会被丢弃

# 以太网协议

Ethernet 以太网协议 规定了数据帧在数据链路层中的传输标准..
以太网协议注意三点: 局域网技术、应用于数据链路层、实现了数据帧在相邻设备之间的传输

以太网协议将一串二进制数进行了分段/分组.此协议规定了电信号多少位一组,每组什么意思.
( 这是站在解包的角度说的 .. <数据依次封包 -- 比特流传输 -- 数据依次解包>)

以太网数据帧的格式如下:
注意哦,还会给这个数据帧的首尾添加 帧首部 和 帧尾部 ,表明从哪开始从哪结束. 加上后才是一个完整的数据帧!

目的地址 MAC 源地址 MAC 类型 帧数据 (大概率是IP数据报) CRC
6 (字节) 6 2 46~1500 4

类型: 表示帧数据是什么协议的数据 0800 IP数据包;0806 ARP请求/应答

1> Ethernet将一串电信号构成了一个数据包 称作 ' 数据帧 '.
2> Ethernet规定 数据帧 = 报头head + 数据data
        head(固定18个字节) = 源地址(6) + 目的地址 (6) + 数据描述信息(6 类型+CRC)
        data(最短46字节,最长1500字节): 数据包的具体内容. “最大传输单元MTU”
so,数据帧最短64字节,最长1518字节,超过最大限制就分片(分割成几个数据帧)发送
3> Ethernet规定接入互联网的设备都必须具备(以太)网卡,网卡上有一个mac地址,全世界唯一
        源地址和目的地址都是具有唯一性的mac地址/网卡地址 eg: 00-16-EA-AE-3C-40
Ps: mac地址/物理地址/硬件地址是烧录在网卡上的硬件设备唯一标识. 
长度为48位二进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
4> Ethernet以太网协议采用的是基于mac地址的 广播 通信方式. -- 有句谚语: 计算机的通信基本全靠吼

# Ethernet的广播

注意:以下的阐述是在只有数据链路层和物理层时局域网内主机之间的通信,加入网络层就又不一样啦.

需求,主机A向主机B发送数据:(理一理广播的流程)
1> 主机A将数据帧给交换机,交换机根据数据帧的报头信息\
   会先将报头里的源mac地址(主机A的mac地址)和主机A连接到交换机的端口号\
   记录到mac地址表中(表中有的话不会重复记录);
2> 交换机再取出里面的目的mac地址,对照mac地址表(mac地址与物理接口之间的映射)找到主机B..
3> 通过该接口将数据帧传递给了B..
4> 若mac地址表里没有目的地址(主机B的mac地址),那么交换机就会进行广播
   将此数据帧(以太网包)发给网络里的所有主机
   主机拆开报头发现目的地址不是自己的mac地址,就会将此数据包丢弃掉
   是自己的mac地址就会响应(即B回包给A,会经过交换机),交换机会记录在mac地址表中..
5> 通过不断的通信,mac地址表会不断的完善.. -- 交换机的功能之一:mac地址学习 有效的减轻了广播的次数
1
2
3
4
5
6
7
8
9
10
11

Q: 有了mac地址就能实现全世界计算机之间相互通信吗?一个局域网就是一个广播域

理论上有了mac地址就可以实现全世界计算机之间的通信,全世界的计算机通过物理连接介质进行连接.
(一台拥有70亿个接口的交换机)使全世界的计算机都处于一个网络里面,任意两台主机之间都可以通信.

分析这个理论为何是不现实的:
1> 不可能造出一个70亿个接口的交换机将所有计算机都处于同一个局域网内..
2> 哪怕造出了这样的交换机,吼一次,数据包就要复制(70亿-1)份;而且同一时间,很多很多台计算机都在吼.. 
	 数据量太大了,交换机很蓝的啦,扛不住的.mac地址表也得很大很大..广播风暴在这面前就是小小小弟弟.

现实中:
1> 计算机ABC..连到交换机x上构成了一个局域网,计算机DEF..连到交换机y上构成了另一个局域网;
   当然交换机与交换机可以再连接组成一个大一点的局域网.. 
2> 在局域网里的计算机之间通信用广播,靠以太网协议的吼
3> 互联网就是由这一个个彼此<隔离>的小的局域网组成的.一个局域网就是一个广播域.
   以太网包只能在一个广播域内发送,跨广播域通信的话,只能通过路由转发..
   Ps:路由器一边连接的是局域网,一边会连接到三大运营商建设的公网
      (里面有各种各样的网络设备 公网相当于一条公共的高速公路)..

Q:局域网里的通信用广播,那么,跨局域网通信呢?
A:通信分为两类 -- 局域网内&跨局域网
  1> 在一个局域网(LAN)内,靠的是目标mac地址找到对方在哪里!即在LAN内,只要目标MAC地址是谁,数据包就送给谁!
     mac地址只能标识主机在局域网的哪里.. 
     注意哦!mac地址出不来局域网,只能在局域网内部用..( ̄▽ ̄) 一出LAN网,就被砍掉.
  2> 若跨局域网,mac地址就心有力而力不足啦.
     对目标主机所在的局域网/网段/子网进行标识需要IP地址.(换句话来说,IP地址是来标识主机是处于哪个局域网的)
     再具体来说,就要涉及到网络层的IP协议、ARP协议..后文会有详细的阐述..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 补充:交换机的前身

[补充知识:交换机的前身]
参考链接 -- https://mp.weixin.qq.com/s/jiPMUk6zUdOY6eKxAjNDbQ
1> AB两台电脑各开一个网口通过网线连接通信,以此类推,n台电脑相互两两连接需要n(n-1)/2根网线. 
   但一台电脑也不会有那么多网口. 而且网线太长的话,还要考虑数据传输过程中电信号的衰减..
2> <物理层>的集线器这一中间设备缓解了这一问题.
   但A发给D的数据要发给集线器中的所有主机,它们会根据数据帧中的源mac地址和目的mac地址进行判断,
   是自己就接受,否则就将数据包丢弃.. 数据不安全、浪费网络资源.
3> <数据链路层>的交换机可以将数据包只发给目的mac地址指定的那台主机.
   它的内部有一张mac地址表(mac地址与交换机端口的映射).
   表中若无此映射,会将此数据包进行广播发给交换机的所有主机,根据响应记录到mac地址表中.
   该小范围的网络(以太网)中的机器不断通信,表进行了完善!
   机器越来越多,交换机与交换机相互连接可以暂时解决端口不够用的问题,但mac地址表也会越来越大.
   (注意图中那根红色的线,最终在MAC地址表中可不是一条记录,而是要把EFGH这四台机器与该端口(端口6)的映射全部记录在表中)

最终,两个交换机将分别记录 A ~ H 所有机器的映射记录.

左边的交换机
|      MAC 地址      | 端口 |
| :---------------: | :--: |
| bb-bb-bb-bb-bb-bb |  1   |
| cc-cc-cc-cc-cc-cc |  3   |
| aa-aa-aa-aa-aa-aa |  4   |
| dd-dd-dd-dd-dd-dd |  5   |
| ee-ee-ee-ee-ee-ee |  6   |
| ff-ff-ff-ff-ff-ff |  6   |
| gg-gg-gg-gg-gg-gg |  6   |
| hh-hh-hh-hh-hh-hh |  6   |

右边的交换机
|     MAC 地址      | 端口 |
| :---------------: | :--: |
| bb-bb-bb-bb-bb-bb |  1   |
| cc-cc-cc-cc-cc-cc |  1   |
| aa-aa-aa-aa-aa-aa |  1   |
| dd-dd-dd-dd-dd-dd |  1   |
| ee-ee-ee-ee-ee-ee |  2   |
| ff-ff-ff-ff-ff-ff |  3   |
| gg-gg-gg-gg-gg-gg |  4   |
| hh-hh-hh-hh-hh-hh |  6   |

这在只有8台电脑的时候还好,甚至在只有几百台电脑的时候都还好,所以这种交换机的设计方式,已经足足支撑一阵子了.
但很遗憾,人是贪婪的动物,很快,电脑的数量就发展到几千、几万、几十万.交换机已经无法记录如此庞大的映射关系了!!!

问题的根本在于,连出去的那根红色的网线,后面不知道有多少个设备不断地连接进来,从而使得mac地址表越来越大.

[承上(数据链接层)启下(网络层)]
Q: 我们可不可以让那根红色的网线,接入一个新的设备,这个设备就跟电脑一样有自己独立的 MAC 地址
   而且同时还能帮我们把数据包做一次转发呢?
A: 这个设备就是路由器,它的功能就是,作为一台独立的拥有 MAC 地址的设备,并且可以帮我把数据包做一次转发
   我们把它定在了网络层.  注意: 路由器的每一个端口,都有独立的MAC地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

计算机网络概览
计算机网络之网络层

← 计算机网络概览 计算机网络之网络层→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式