# 计算机网络和因特网
# 基本概念
端系统通过通信链路和分组交换机连接在一起。
一台端系统向另一台端系统发送数据时,发送端将数据分段,并为每段加上首部字节。这种信息包称为分组。
分组交换机主要有路由器和链路层交换机,都是朝着最终目的转发分组。
# 分组交换
# 存储转发传输
存储转发机制是在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。比如有数据有 3 个分组,分组 1 到达交换机,不能让分组 1 直接转发出去,应该先缓存下来,必须等 3 个分组都到达交换机后才能转发分组。
# 排队时延和分组丢失
每个分组交换机连接多条链路,每条连接的路径,分组交换机具有一个输出缓存,存储路由器准备发往那条链路的分组。如果链路正忙于传输分组 1,这时候分组 2 来了,那么它必须在输出缓存中等待。分组需要承受输出缓存的排队时延。时延是动态变化的,程度取决于网络的拥塞程度。
由于输出缓存的空间大小是有限的,当缓存全部用完,分组再过来就会被丢失,这就是丢包。
# 转发表和路由选择协议
路由器有很多条输出链路,那么它应该选择哪一条来转发分组呢?
每个端系统都有一个 IP 地址,源主机向目的端发送一个分组时,源主机在分组的首部包含了目的端的 IP 地址。该地址是一种等级结构,路由器检查该分组目的地址的一部分,并向一台相邻路由器转发该分组。
每台路由器都有一个转发表,用于将目的地址映射为输出链路。
转发表是如何设置的呢?
路由选择协议用于自动地设置转发表,可以决定从每台路由器到每个目的地的最短路径,并使用最短路径结果来配置转发表。
# 电路交换
电路交换预留了端系统间通信沿路径所需要的资源,优点是确保以恒定速率向接收方传送数据,缺点是速率会被平均分配而变小,在空闲期间一直连接也会导致效率变低。而分组交换中没有预留,按需使用这些资源,有时候可能不得不等待接入通信链路,从而不适合实时服务。
# 分组交换网中的时延、丢包和吞吐量
# 时延类型
处理时延
检查分组首部和选择分组应该转发向哪一条链路所需要的时间。
排队时延
在队列中,分组在链路上等待传输时,经受排队时延。
传输时延
将所有分组的比特传输向链路所需要的时间。
传播时延
从该链路起点到终点传播所需要的时间是传播时延。
传输时延与传播时延的区别
- 传输时延是路由器将分组推出所需要的时间,它是分组长度和链路传输速率的函数,与两台路由器距离无关。
- 传播时延是一个比特从一台路由器向另一台路由器传播所需要的时间,是两台路由器距离的函数。
# 排队时延
如果 10 个分组同时到达空队列,传输第一个分组没有排队时延,传输最后一个分组将经受相对大的排队时延,因为它要等待其他 9 个分组传输。
令 α 表示分组到达队列的平均速率,R 为传输速率,即从队列中推出比特的速率,假定所有分组都是由 L 比特组成的。则比特到达队列的平均速率是 Lα。
比率 Lα / R 称为流量强度。
如果流量强度大于 1,则比特到达队列的平均速率超过从该队列传输出去的速率,队列趋向于无穷增加,排队时延趋向于无穷大。
# 丢包
当流量强度大于 1,到达的分组就会发现队列已经满了,由于没有地方存储到达的分组,那么这个分组就会被丢弃,之后的处理方式可能是重传。
# 吞吐量
Rs 表示服务器与路由器之间的链路速率,Rc 表示路由器与客户之间的链路速率。对于这种简单网络,吞吐量是 min{ Rc, Rs}, 也就是瓶颈链路的传输速率。
# 协议及封装
# 协议分层
比如互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需要把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就可以自由改动。
# 封装
发送主机端,一个应用层报文被传送给运输层,运输层收取到报文并附加上运输层首部信息,构成运输层报文段,运输层报文段因此封装了应用层报文。
运输层向网络层传递运输层报文段,网络层增加了源和目的地址等网络层首部信息,产生了网络层数据报。
网络层向链路层传递网络层数据报,链路层增加链路层首部信息并创建链路层帧。