计算机网络
计算机网络的层次结构
层次结构设计的基本原则
当计算机A和计算机B进行通信时
计算机网络需要解决的四个问题:
- 保证数据通路顺畅
- 识别目的计算机
- 查询目的计算机状态
- 数据是否错误
分层实现不同的功能
-
基本原则:
-
各层之间是相互独立的 -
每一层要有足够的灵活性(用来应对未来的变化 -
各层之间完全解耦(各层的变化不会相互影响
OSI七层模型
OSI并没有成为广为使用的标准模型
- OSI专家缺乏实际经验
- OSI标准制定周期过长
- OSI设计不合理
TCP/IP在全球范围成功运行
TCP/IP四层模型
计算机之间的传输:
四层模型使用的协议:
中间窄,两端大的沙漏形状
现代互联网的网络拓扑
边缘部分
用户可以接触到的部分
e.g. 家庭: 终端机器(手机、电脑 )-> 路由器 -> 网关 -> 地区ISP
e.g. 企业:
核心部分
地区的主干ISP通过国际路由器进行互通
树状结构
计算机网络的性能指标
速率Mbps = bit/s
为什么电信拉100M光纤,测试峰值速度只有12M每秒?
网络常用单位为Mbps
100M光纤指的是100M/s = 100Mbps = 100Mbits/s = (100/8)MB/s = 12.5MB/s
时延
-
排队时延 数据包在网络设备中等待被处理的时间 -
处理时延 数据包到达设备或目的机器被处理所需要的时间
总时延 = 发送时延 + 传播时延 + 排队时延 + 处理时延
往返时间RTT(Route-Trip Time)
数据报文在端到端通信中的来回一次的时间
通常使用ping 命令查看RTT
IP物理地址离得越远RTT越长
物理层
在OSI七层模型属于最底层,在TCP/IP四层模型中属于网络接口层
作用
-
连接不同的物理设备
-
传输比特流 比特流:高低电平交替传输信息
信道
-
往一个方向传送信息的媒体 -
一条通信电路包含一个接收信道和一个发送信道
-
发送和接收会不会冲突? 冲突了怎么办
-
单工通信信道 只能一个方向通信,没有反方向反馈的信道 e.g. 电视、无线电收音机等 -
半双工通信信道 双方都可以发送和接收信息 不能同时发送也不能同时接收 -
全双工通信信道 双方都可以同时发送和接收信息
信道的分用-复用技术
多个计算机连接复用器和分用器,共享同一条信道,提高信道的利用效率。
但可能导致信道的拥塞
- 分类
- 频分复用(按频率不同进行分用复用
- 时分复用
- 波分复用
- 码分复用
数据链路层
在OSI七层模型属于物理层的上一层,在TCP/IP四层模型中也属于网络接口层
封装成帧
过程:
网络层把IP数据报传输到数据链路层
数据链路层收到数据后把它看做数据帧
在数据帧的前后(帧首部SOH、帧尾部EOT添加特定的控制字符(特定比特流)
透明传输
透明:“一种实际存在的实物又看起来不存在一样”
? 即“控制字符在帧数据中,但是要当做不存在的去处理”
差错检测
作用:因为物理层只管传输比特流,无法控制是否出错。所以数据链路层负责起“差错检测”的工作。
奇偶校验码
在比特流的尾部添加一位比特位来检测比特流是否有出错
比特流中所有位数相加,如果是奇数那么校验码是1;如果是偶数则为0
循环冗余校验码CRC
根据传输或保存的数据而产生固定位数校验码的方法
检测数据传输或保存后可能出现的错误
也是生成的数字计算出来并且附加到数据后面
-
步骤
-
选定一个用于校验的多项式G(x),并在数据尾部添加r个0,r为最高阶 -
将添加r个0后的数据,使用模二除法除以多项式的位串 -
得到的余数填充在原数据r个0的位置得到可校验的位串 例子:使用CRC计算101001的可校验位串。
- 选定多项式G(x)
2. 将添加r个0后的数据,使用模二除法除以多项式的位串
3. 将得到的余数填充在原数据r个0的位置得到可校验的位串
- 接收端接收的数据除以G(x)的位串,根据余数判断出错
CRC的错误检测能力与位串的阶数r有关
如果r=1,CRC退化成奇偶校验码
数据链路层只进行数据的检测,不进行纠正。
最大传输单元MTU
MTU(Maximum Transmission Unit)
数据链路层的数据帧也不是无限大的
数据帧过大或过小都会影响传输的效率
总时延 = 发送时延 + 排队时延 + 传播时延 + 处理时延
路径MTU
路径MTU由链路中MTU的最小值决定
以太网协议详解
路由器怎么知道A的数据要发给谁?
MAC地址
以太网协议
-
以太网(Ethernet)是一种广泛的局域网技术 -
应用于数据链路层的协议 -
完成相邻设备的数据帧
单位都是字节
MAC地址表
将MAC地址映射到具体的硬件接口上
回到一开始的问题:路由器怎么知道A的数据要发给谁?
- A通过网卡发出数据帧
- 数据帧到达路由器,路由器取出前6字节
- 路由器匹配MAC地址表,找到对应的网络接口
- 路由器往该网络接口发送数据帧
如果MAC地址表中C的接口是未知的怎么办?
- E检查MAC地址表,发现没有C的信息
- E广播A的数据包到除A以外的端口
- E将收到来自B、C的回应,并记录地址
|