什么是计算机网络?
计算机网络主要由一些通用的、可编程的硬件互连而成,通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用。
计算机网络分类
分类 | 英文 | 范围 | 区域 |
---|---|---|---|
广域网 | WAN(Wide Area Network) | 几十到几千公里 | 跨省、跨国 |
城域网 | MAN(Metro Area Network) | 几十到几千公里 | 城市间 |
局域网 | LAN(Local Area Network) | 1KM以内 | 地区内 |
计算机网络发展史
计算机网络层次结构
需要遵循的基本设计原则
答案是
分层实现不同的功能
- 各层之间是相互独立的
- 要求每一层有足够的灵活性,来应对未来计算机网络的变化
- 各层之间的完全解耦
OSI七层模型(只是获得了研究成果,并未成为标准的模型)
:为计算机用户提供接口和服务
:数据处理
:管理(建立、维护、重连)通信回话
:管理端到端的通信链接
:数据路由(决定数据在网络的路劲)
:管理相邻节点之间的数据通信
:数据通信的光电物理特性
TCP/IP四层模型
:包含应用层、表示层、会话层; HTTP/FTP...
:包含传输层; TCP/UDP
:包含网络层; IP/ICMP
:包含数据链路层、物理层; Ethernet/APP/RARP
TCP/IP四层模型图解
现代互联网网络拓扑(图解)
边缘部分:
-
家庭
-
企业
核心部分:
-
国家
整体结构
计算机网络的性能指标
速率:bps = bit/s
bit | Byte | KB | MB | GB | TB | PB | EB |
---|---|---|---|---|---|---|---|
比特位 | 字节 | 千字节 | 兆字节 | 吉字节 | 太字节 | 拍字节 | 艾字节 |
- | 8bit | 1027B | 1024KB | 1024MB | 1024GB | 1024TB | 1024EB |
门电路 | - | 寄存器 | 高速缓存器 | 内存/硬盘 | 硬盘 | 云硬盘 | 数据仓库 |
为什么电信拉的是100M光纤,测试峰值速度只有12M每秒?(网络常用单位为Mbps)
100M/S = 100Mbps = 100Mbit/s
100Mbit/S = (100/8)MB/s =12.5MB/s
发送时延
发送时延 = 数据长度(bit)/发送速率(bit/s)(受限于计算机的网卡)
传播时延
传播时延 = 传播路径距离/传播速率(bit)
排队时延
数据包在网络设备中等待被处理的时间
处理时延
数据包到达设备或者目的机器被处理的时间
总时延
总时延 = 发送时延 + 排队时延 + 传播时延 + 处理时延
往返时间RTT: RTT(ROUTE-Trip Time)是评估网络质量的一项重要指标;表示的是数据报文在端到端通信中的来回一次的时间, 通常使用ping来测试RTT
物理层概述
-
双绞线
-
同轴电缆
-
光纤
- 单工信道
电视机:只能接受不能发送 - 半双工信道
双方不能同时接收或者发送 - 全双工信道
双方都可以同时发送和接收
数据链路层
封装成帧
"帧" 是数据链路层数据的基本单位;
发送端在网络层的一段数据前后添加特定标记形成"帧;
接收端根据前后特定标记识别出"帧"
在网络层将IP数据报传送到数据链路层,接收到之后转换成帧的数据
帧的首部和尾部是特定的控制字符(特定比特流)
SOH:0000001
EOH:0000100
透明传输
即是控制字符在帧数据中,但是要当做不存在去处理;
处理方式:
举例:
- 编程语言中"" 一般为转义字符
- "\n"、"\t"等控制字符
- "\" 、"\\"
差错监测
- 物理层只管传输比特流, 无法控制是否出错
- 数据链路层负责 "差错监测"的工作
-
奇偶校验码
00110010:
0+0+1+1+0+0+1+0=3
3是奇数所以为1
如果是偶数则为0
图解
上图中原始的校验码为1,得到的比特流00010010为偶数所以出现错误;
如果出错的位数为2位则会出错
-
循环冗余校验码CRC
1.他是一种根据传输或保存的数据而产生固定位数校验码的方法;
2.监测数据传输或者保存后可能出现的错误
3.生产的数据计算出来并且附加到数据后面
模“2”除法:即二进制下的除法。与算术除法类似,但是该除法不借位,实际是 异或操作。 - 0 xor 0 = 0
- 0 xor 1 = 1
- 1 xor 1 = 1
- 1 xor 1 = 1
即只需要记住常说的一句话:异或操作,相同为0,不同为1。
举例1:
第一步:
选定一个用于校验的多项式G(x),并在数据尾部添加r 个0
使用CRC计算101001的可校验位串?
G(x) = x^3 + x^2 + 1
=> 二进制位串: 1101
,最高阶为3
G(x) = 1
* x^3
+ 1
* x^2 + 0
* x^1 + 1
* x^0
得
101001 => 101001000
第二步:
-
将添加r个0后的数据,使用模'2' 除法除以多项式的位串
101001000 / 1101
第三步:
-
得到的玉树填充在原数据r个0的位置得到可校验的位串
101001000 => 101001001
第四步:
-
接收端接收的数据除以G(x)的位串,根据余数判断出错
101001001 / 1101
如果没有出错余数则是0否则为1
举例2
使用CRC计算10110011的可校验位串?
G(x) = x^4
+ x^3 +1
==> 二进制位串:11001
,最高阶为4
10110011 => 10110011000
接着
101100110000 / 11001
得到
101100110000 ==> 101100110100
CRC的错误监测能力与位串的阶数r有关; 数据链路层值进行数据的监测,不进行纠正,如果监测到数据错,则直接丢弃.
最大传输单元MTU
MTU(Maximum Transmission Unit);
数据链路层的数据帧也不是无限大的;
注意:
- 计算机进行数据通信所传输的数据帧长度受MTU限制,
- 数据帧过大或者过小都会影响传输的效率
一般以太网的MTU为1500字节;
路径MTU由链路中MTU的最小值决定;
图解MTU限制
以太网
如何知道计算机A通过路由器发送给C
- MAC地址(物理地址、硬件地址)
- 每个设备都拥有唯一的MAC地址
- MAC一共有48为,使用16进制表示
MAC地址查询: ipconfig /all
- 以太网协议
- 以太网(Ethernet)是一种广泛的局域网技术
- 以太网是一种应用于数据链路层的协议
- 使用以太网可以完成相邻设备的数据帧传输
以太网协议主要包含5大部分:
目的地址:6字节 (MAC地址48位/8bit)
原地址
:6字节
类型
:2字节
帧数据
:46~1500字节
CRC
:4字节
-
MAC地址表
每个MAC地址对应一个硬件接口(路由器)
因此我们来回答开始的问题:
首先,A通过网卡发出数据帧, 数据帧到达路由器,路由器取出前6字节(MAC地址),
路由器匹配MAC地址表,找到对应的网络接口,最后路由器往该网络接口发送数据帧
问题:
如果不知道计算机C的MAC地址如何去处理?
首先路由器去检查MAC地址表,发现没有C的信息,路由器将广播A的数据包到除A以外的端口,路由器将收到来自B、C的回应,将地址记录
遗留问题:
如果计算机C并没有和A一样链接在同一个路由器上,如何实现数据帧的传输呢?(MAC地址表只能进行相邻物理节点传输
)