程序员的网络日志 程序员的网络日志
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理
  • C语言
  • 数据结构
  • 汇编语言
  • 操作系统
  • Linux
  • 编译原理
  • 计算机网络
  • 数据库
  • Java基础
  • JavaWeb
  • 笔记软件
  • Quicker
  • Qttabar
  • Wgesture
  • 浏览器与插件
  • 视频播放器
  • 待办清单
  • 终端软件
  • uTools
  • 番茄盒子
  • 网站日记
  • 赞赏支持
  • 关于本站
  • 如何搭建一个博客
  • 如何搭建一个邮箱
GitHub (opens new window)
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理
  • C语言
  • 数据结构
  • 汇编语言
  • 操作系统
  • Linux
  • 编译原理
  • 计算机网络
  • 数据库
  • Java基础
  • JavaWeb
  • 笔记软件
  • Quicker
  • Qttabar
  • Wgesture
  • 浏览器与插件
  • 视频播放器
  • 待办清单
  • 终端软件
  • uTools
  • 番茄盒子
  • 网站日记
  • 赞赏支持
  • 关于本站
  • 如何搭建一个博客
  • 如何搭建一个邮箱
GitHub (opens new window)
  • 计算机科学导论

  • 数字电路

  • 计算机组成原理

  • 数据结构

  • 操作系统

  • Linux

  • 编译原理

  • 计算机网络

    • 计算机网络
    • 计算机网络概述
    • 基本概念
    • 物理层
    • 链路层
    • 网络层
    • TCP与IP层
    • 应用层
    • 实验课
  • 数据库

  • 计算机科学导论
  • 计算机基础
  • 计算机网络
程序狗
2022-07-26

计算机网络概述

# 图解

# 图解 | 你管这破玩意叫网络? (opens new window)

你是 一台电脑,你的名字叫 A

很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。

图片

直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线 连接了起来。

图片

用一根网线连接起来怎么就能"通信"了呢?我可以给你讲 IO、讲中断、讲缓冲区,但这不是研究网络时该关心的问题。

如果你纠结,要么去研究一下操作系统是如何处理网络 IO 的,要么去研究一下包是如何被网卡转换成电信号发送出去的,要么就仅仅把它当做电脑里有个小人在开枪 吧~

图片

反正,你们就是连起来了,并且可以通信。

第一层

有一天,一个新伙伴 C 加入了,但聪明的你们很快发现,可以每个人开两个网口 ,用一共三根网线 ,彼此相连。

图片

随着越来越多的人加入,你发现身上开的网口实在太多了,而且网线密密麻麻,混乱不堪。(而实际上一台电脑根本开不了这么多网口,所以这种连线只在理论上可行,所以连不上的我就用红色虚线表示了,就是这么严谨哈哈~)

图片

于是你们发明了一个中间设备,你们将网线都插到这个设备上,由这个设备做转发,就可以彼此之间通信了,本质上和原来一样,只不过网口的数量和网线的数量减少了,不再那么混乱。

图片

你给它取名叫集线器 ,它仅仅是无脑将电信号转发到所有出口(广播) ,不做任何处理,你觉得它是没有智商的,因此把人家定性在了物理层 。

图片

由于转发到了所有出口,那 BCDE 四台机器怎么知道数据包是不是发给自己的呢?

首先,你要给所有的连接到集线器的设备,都起个名字。原来你们叫 ABCD,但现在需要一个更专业的,全局唯一 的名字作为标识,你把这个更高端的名字称为 MAC 地址 。

你的 MAC 地址是 aa-aa-aa-aa-aa-aa,你的伙伴 b 的 MAC 地址是 bb-bb-bb-bb-bb-bb,以此类推,不重复就好。

这样,A 在发送数据包给 B 时,只要在头部拼接一个这样结构的数据,就可以了。

图片

B 在收到数据包后,根据头部的目标 MAC 地址信息,判断这个数据包的确是发给自己的,于是便收下 。

其他的 CDE 收到数据包后,根据头部的目标 MAC 地址信息,判断这个数据包并不是发给自己的,于是便丢弃 。

640.gif

虽然集线器使整个布局干净不少,但原来我只要发给电脑 B 的消息,现在却要发给连接到集线器中的所有电脑,这样既不安全,又不节省网络资源。

第二层

如果把这个集线器弄得更智能一些,只发给目标 MAC 地址指向的那台电脑 ,就好了。

![640 1.gif](assets/640 1-20220111215006-jctw1wr.gif)

虽然只比集线器多了这一点点区别,但看起来似乎有智能了,你把这东西叫做交换机 。也正因为这一点点智能,你把它放在了另一个层级,数据链路层 。

图片

如上图所示,你是这样设计的。

交换机内部维护一张 MAC 地址表 ,记录着每一个 MAC 地址的设备,连接在其哪一个端口上。

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

假如你仍然要发给 B 一个数据包,构造了如下的数据结构从网口出去。

图片

上次更新: 2022/8/7 09:00:48
计算机网络
基本概念

← 计算机网络 基本概念→

最近更新
01
从操作系统启动开始
10-23
02
搭建实验环境
10-23
03
学习操作系统之前
10-22
更多文章>
Theme by Vdoing | Copyright © -2022 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式