一. 绪论
ISP: Internet Service Provider,因特网服务提供商
RFC:Request for Command 控制请求
IETF:Internet Engineering Task Force互联网工程任务组,指定互联网标准的,比如RFC文档
PDU:Protocol Data Unit协议数据单元,在物理层是bit,数据链路层是frame(帧),网络层是数据报(packet),传输层是数据段(data segment),应用层是消息(message)。
1. 互联网的结构:
(1) Network Edge:
hosts(end systems):端系统,包括各种设备
Client/Server Model:用户/服务商模型,一般指用户与提供服务者交互的平台,,比如浏览器、电子邮件等
peer-to-peer model:用户之间连接的模型,比如很多社交软件等
(2)Access Networks,physical media:一般指有线和无线的链路
(3)Network core:路由器,网络中的网络
2. 关于网络核心:
(1)packet switching分组交换
特点:可共享,存在传输延迟与丢包
考点:传输延时的计算
(2)circuit switching链路交换:建立连接后直接将信号传输到终点
a. 特点:存在传输的频带宽度与容量限制;点对点传输,不能分享;带宽没被使用时是闲置的,也不能被其他设备使用
b. 分类:TDM(时分多路转换,time division multiplex),FDM(频分)
(3)网络的网络
3. 分组交换网中的时延与丢包
(1)时延:
节点传输时长=处理延时+排队延时+传输延时+传播延时(最后俩不一样嗷!!!)
处理延时:检查比特错误,选择输出链路(小于ms级)
排队延时:不固定,取决于排了多少()
传输延时:传输时延的意思是交换机packet经过排队时延之后,能传输你这个packet的时间,即把你这个packet推到链路上面需要的时间。假设packet长度为L,带宽为R,则传输延时为L/R(一般在ms到us级)
传播延时:路由器A到B传播需要的时间,d/s
(2)丢包:packet是在路由器的缓存里面进行排队的。如果路由器缓存满了就存不下了,那就丢包力~
二. 物理层(The Physical Layer)
1. 基本理论
物理层是负责将基带信号编码、调制后进行传输的一层
2. 信道特性(Channel Characteristics):
(1)传播方式:单向、半双工、双工(半双工指的是可以双向,但任意一个时刻只能有一向在传输,双工就是都行)
(2)传播速度:baud rate和bit rate(1个baud可以放n个bit,其中n可以自定,那这两个指标的转换就很简单了)
Channo’s Formula:信号传输速率的上限C
,
其中W为信号的频带宽度,S/N为信号的信噪比。
实际上,由于存在传输失真,信号的传播速度要远低于C。
(3)传播能力(channel capacity):bps
(4)频带宽度: Nyquist‘s Law
1) For an ideal low-pass channel with the frequency bandwidth of W (Hz), its maximum symbol transmission rate = 2W Baud
2) For an ideal band-pass channel with the frequency bandwidth of W (Hz), its maximum symbol transmission rate = W Baud
3. 编码方式(数字信号)
1. NRZ编码(None-Return-to-Zero)
问题:怎么确定你是传输完了还是传输的是0信号?
2. Manchester编码
1是下降沿,0是上升沿
优点:克服了NRZ的缺点
缺点:频率增加了一倍!这对信道的要求就变高了,同时频率放大的同时高频噪声也就多了
3. Differential Manchester编码
1:每个周期的前半段幅值和上一周期后半段幅值相同
0:每个周期的前半段幅值和上一周期后半段幅值不同
这个频率虽然依旧比较高,但相当于上一种编码还是有所下降。
三. 数据链路层(The Data Linker Layer)
链路层目标:成帧,链路接入,可靠交付,错误检测与修正,流量控制
1. PDU:frame(帧)
2. Error Detection
(1)Parity Checking:微机原理讲过,不说了不说了
(2)CRC(Cyclic Redundancy Check) Checking:循环冗余检测
核心原理就是在这一串数据后面补充一串冗余码(R),这一整串数据能整除校验码。接收方会同时收到数据和一个生成多项式G,如果余数是0就没问题,如果不是就说明传输错了。
那么就有一个问题:G和R应该怎么确定?某一段长度的数据应该用多长的G才能保证既有效又高效呢?
a. 一般来说,不同位数的数据会有不同的生成多项式公式(一般会给出来)。比如:
b. R是用原数据按位异或生成多项式得出来的余数(你可以理解为不借位的除法)。得出来之后把R补在数据后面即可。
3. Reliable Data Transfer(可靠数据传输)
(1)Stop-and-wait 停等协议
(2)pipelined protocol
(3)Go-Back-N Protocol
4. 链路接入:Media Access Control Protocol(MAC协议)
(1)Channel Partitioning 信道划分协议
基本原理:将信道划分成多个部分以供用户单独使用其中的某一块。
TDMA,FDMA(分别是时域和频域的划分)
Code Division Mutiple Access这个常用于通讯领域。(我觉得看图很好理解就不说了)
(2)Random Access随机接入协议
基本原理顾名思义,是一类占用全部信道传输的协议,效率不高。
ALOHA,slotted ALOHA,CSMA(Carrier Sense Multiple Access载波监听)
a. ALOHA:不管信道是否被占用,直接上传。这意味着极有可能发生碰撞。
b. slotted ALOHA(时隙ALOHA):假设帧长度都为L,这意味着传输帧的时间长度都为固定的t(=L/R)。那么节点只在时隙的起点上传帧。当发生碰撞时,产生一个重传概率p。之后该节点就会在后续的每个时隙中以p的概率重传自己的帧,直到成功。
c. CSMA:先监测信道是否空闲。如果空闲就上传,不空闲就在空闲的时候上传。
问题:信道传输的过程需要时间,这意味着有可能存在检测的时候信号还在路上,没传过来,但是监测是空闲,另一个节点就上传了,在信道中就有可能发生碰撞。
d. CSMA/CD(Collide Detection):假设信号传输的时间是τ,那按理来说发送节点A只要在2τ内没检测到碰撞就说明传输成功了。如果任意一方检测到碰撞,自己就立刻停止发送帧。
经历第n次碰撞之后,节点会在{0,1,……,2^n-1}中随机选一个数K,并在(k*512)/R的时间后重新传输数据。(R是数据的传输速度)
(3)Taking Turns 轮流协议
主节点会要求自己的子节点(英文叫slave nodes,但我觉得还是叫子节点友好一点)轮流传输,如果没数据可传就下一个节点传。