1.计算机网络与因特网
参考《计算机网络自顶向下方法》
1.1基础概念
介绍网络的基本构成与一些专业术语
1.1.1-网络构成
因特网是一个世界范围的计算机网络。我们将接入因特网的设备称为主机(host)或者端系统(end system),因为他们处于网络边缘。
每个主机通过通信链路(communication link)和分组交换机(packet switch)连接在一起。
通信链路由各种物理媒体组成,同轴电缆、铜线、光纤、无线电频谱。当主机发送数据时,会将数据拆成段并为每段加工一些信息成为信息包,我们称为分组(packet),到达目的主机再重组。
分组交换机从通信链路接收分组,从另一条链路发送分组。比较著名的交换机类型是路由器(router)和链路层交换机(link-layer switch),链路交换机通常用于接入,路由器通常在网络核心。一个分组将经历一系列网络路径到达目的主机。
主机通过因特网服务提供商(Internet Service Provider,ISP)接入因特网,因为主机之间需要互联,所以ISP之间也会通过国家、国际的ISP连接。
主机、交换机等其他网络设备都要遵循一系列协议,用来控制接收和发送,如TCP/IP。协议的标准由许多组织规定,如因特网标准由IETE研发,IEEE 802制定了无线wifi的标准。
1.1.2-服务
主机上的软件如何与目标主机的软件通信呢?每个主机都提供了一套因特网API,使用这些API写的软件就可以与其他主机上的软件进行通信。
1.1.3-协议
使用人类之间交流来理解计算机协议,比如小明想小红现在几点了,首先她们都要有时间的概念,其次她们能听懂各自说的话,才能够正常交流。
网络协议定义了多个通信实体之间的交换的报文(数据块)格式和次序,以及发送/接收或其他事件采取的动作
1.2-网络边缘
边缘指的就是与互联网相连的计算机,他们处于因特网的边缘,所以被称为端系统。端系统=主机
主机里有各种应用程序,主机再细分为客户(client)和服务器(server),服务器相当于性能强大的机器。
1.2.1-接入网
主要指边缘路由器(edge router),主机网络路径上的第一台路由器
家庭接入
1.DSL
住宅可以从提供本地电话接入的电话公司获取数字用户线(Digital Subscriber Line)因特网接入,家庭DSL调制解调器得到数字数据并转化为高频音,中心局的DSLAM接收模拟信号后转化为数字数据。
当上行和下行速率不一样时叫非对称DSL
2.电缆
从提供有线电视的公司可以获得电缆因特网接入(cabl internet access),通过光缆连接电缆头端到光纤节点,再使用同轴电缆连接到家家户户,也被称为混合光纤同轴(Hybrid Fiber Coax,HFC)。
类似于DSL modem,电缆也需要电缆调制解调器(cable modem),而电缆调制解调器终端系统(Cable Modem Termination System,CMTS)则和DSLAM的功能类似。Modem将HFC划分了上行和下行信道,下行的传输速率被通常比上行高很多。
3.FTTH
光纤到户(Fiber To The Home)又分为主动光纤网络(Active Optical Network)和被动光纤网络(Passive Optical Network)。
PON结构如下,ONT(Optical Nerwork Terminator)连接到分配器,OLT(Optical Line Terminator)可以在光信号和电信号之间转换。
FTTH有着速率高的优点(当然更贵)。
在无法提供DSL、线缆、FTTH的地方,使用卫星链路与因特网相连。
企业接入:以太网、WIFI
实际上越来越多的家庭和校园都使用了局域网技术
广域无线接入:3G、LTF
1.2.2-物理媒体
1.双绞铜线
由两根隔离的铜线组成,每根大约1mm粗,以规则的螺旋形式排列,可以减少电气干扰,通常使用许多双绞线捆扎成一根电缆,覆上保护层,就是一条通信链路。而无屏蔽双绞线(Unshielded Twisted Pair)则用在建筑物内。传输速率在10Mbps与10Gbps之间
2.同轴电缆
使用两个铜导体组成同心的电缆,通常用于电视系统,速率通常在几十Mbps
3.光纤
光纤有着细而柔软的,能够引起光脉冲的身体,每个脉冲代表1bit,速率可以高达100Gbps。信号不易被干扰、衰弱,窃听难。
4.陆地无线电信道
包含电磁频谱的信号,信号能穿墙、距离远,但很依赖环境
5.卫星无线电信道
通信中常使用同步卫星和近地卫星
1.3-网络核心
1.3.1-分组交换
从源主机发送一个文件(报文message)时,需要将它划分成小的数据块,称为分组(packet)。该文件(报文)在传输过程中,分组(数据包)需要经过通信链路和分组交换机(packet switch)
- 存储-转发传输
指交换机必须接收完整个分组才能向下一条链路传输。
计算发送数据时端到端的延迟(只考虑传输延迟)
假设源与目标之间有着$N$条链路(N-1交换机),分组长度$L$(bit),链路速率$R$(bps),需要传输$P$个分组。
分析:
当时间处于$N(L/R)$时,第一个包到达,$N(L/R)+(L/R)$时,第二个包到达,以此类推,当处于$N(L/R)+(P-1)(L/R)$时,全部到达,所以有公式
$$
d_{end-end}=N*(L/R)+(P-1)(L/R)
$$
- 排队延迟与丢包
因为需要存储,所以分组交换机有个输出缓存(buffer),用来决定该分组该发往哪条链路。当分组交换机正在发送其他分组时,后面来的分组就必须等待,等待的这个时间就叫排队延迟(queue delay)。
这个延迟的特点就是随机性变化,主要取决于网络的拥塞程度。此外,因为缓存是有限的,还会出现丢包(packet lost)
- 转发表和路由选择协议
分组头部包含了目的地的IP,而每台路由器有一个转发表(forwarding table),可以将IP映射成输出链路,通常都会选择最近的路径进行传输
1.3.2-电路交换
类似于通话,电路交换会先建立一条连接,在连接时预留了恒定的传输速率,所以发送方可以以恒定额速率向接收方传送数据。
为了扩大一条链路的用户,电路交换使用了频分复用FDM和时分复用TDM(原理我已经在其他笔记写明)
1.3.3-两者对比
对于它们两个的区别可以通过一个例子说明
假设有多个用户共享一条1Mbps链路,每个用户要么以100kbps的恒定速率产生数据,要么不产生数据,假如只用10%的用户活跃。
- 采用电路交换,则该链路仅支持10(1Mbps/1kbps)个并发(同时工作)的用户
- 使用分组交换,活跃率0.1,假如有35个用户,有11个以上的并发用户概率是0.0004(使用了二项式与中心极限定理),当有10个并发用户时,与电路交换基本一样。当超过10个时,输出队列变长,即使支持多个用户,性能不变(但概率是极小的),这种情况和电路的性能一样。
但是如果用户低于10个,假定某一个用户(其他人休息)产生了1000个1000bit的分组,在使用电路交换时,依旧使用100kbps的速率(其他频段、时隙空闲着),需要10s;而使用分组交换,则可以使用这条链路的最大速率即1Mbps,只需要1s。
总的来说分组的优势是效率,电路的优势是稳定
1.4-分组
了解分组的时延、丢包、和吞吐量
1.4.1-时延
也就是数据从源出发,到达目的地的时间。时延又分为结点处理时延(nodal processing delay)、排队时延(queuing delay)、传输时延(transmission delay)、传播延迟(propagation delay)。
- 处理时延:路由检查分组和决定发送目标
- 排队时延:指在流量大时分组在路由停留的时间
- 传输时延:指源将分组送到链路上的时间
- 传播时延:指在链路上传播的时间(与距离和光速有关)
总时延:
$$
d_{nodal}=d_{proc}+d_{queue}+d_{trans}+d_{prop}
$$
1.4.2-排队时延和丢包
值得研究的是排队时延,它与主要与流量的速率、链路的传输速率有关。
假设$a$表示分组到达速率(pkt/s),$R$是传输速率,每个分组有$L$ bit。
则有$La/R$代表路由的流量强度
- >1代表到达速率大于传输速率,此时排队时延将接近无穷大,因为发送慢
丢包
当排队的队伍满了(缓存满了),后面到达的分组就没有位置排队,造成分组丢失
1.4.3-端到端的时延
假设端与端之间存在了n-1的路由器(n条链路),这里不考虑排队,太复杂
$$
d_{end-end}=N(d_{proc}+d_{trans}+d_{prop})
$$
Traceroute工具
可以对输入的地址发送多个分组,然后报告三次往返时间(*代表丢包)
1 | # manu @ MY in ~ [15:00:52] C:2 |
除了指令还有网站可以测试http://www.traceroute.org
1.4.4-吞吐量
就是网速,有平均吞吐量和瞬时吞吐量
下面是书上深入介绍吞吐量的例子
因为$R_{s}$与$R_{c}$的速率不一样,所以吞吐量=$min{R_{c},R_{s}}$,因为因特网的带宽很大,通常只考虑接入速率
1.5-区分各层数据单位
摘自百度百科:协议数据单元PDU(Protocol Data Unit)是指对等层次之间传递的数据单位。 协议数据单元(Protocol Data Unit )物理层的 PDU是数据位(bit),数据链路层的 PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的 PDU是数据段(segment),其他更高层次的PDU是报文(message)。
说白了,pdu就是某协议发送数据的基本单位,各协议有各自的格式。实际使用中其实很多人其实不太分这么细,统一称作数据包。