# Chap 1 计算机网络和因特网
# 1.1 互联网是什么
- 端系统通过通信链路和分组交换机(packet switch)连接到一起
- 链路的传输速率以比特/秒度量(bi t/s, bps)
- 发送数据时,需要分段并加上首部字节,形成的信息包叫做分组(packet)
- 分组交换机中最著名的类型是路由器(router)和链路层交换机(link-layer switch),路由器常用于网络核心中,链路层交换机用于接入网中
- 端系统通过因特网服务提供商(ISP)接入因特网,如蜂窝数据ISP为智能手机提供接入,低层的ISP通过高层的ISP相连
- IP协议定义了网络中传输数据包的格式
- 由因特网工程任务组(IETF)定义的标准文档叫做请求评论(Requests for comments,RFCs),RFCs中定义了如TCP、IP、HTTP、SMTP协议等,目前有近9000个RFCs
- IEEE 802 LAN Standards Committee 定义了以太网和无线WiFi的标准
- 一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和接收一条报文或其他事件所采取的动作
# 1.2 网络边缘
# 1.2.1 网络接入
端系统也被称为主机(host),因为他们运行应用程序,主机又分为client和server两类
家庭接入有两种最流行的类型:数字用户线(DSL)和电缆(cable)
- DSL:家庭电话线可以同时承载数据和传统的电话信号,他们被编码为不同的频率,所以看起来像有3根单独的线路,可以共享使用(splitter:分频器; modem 调制解调器),DSL标准定义了多种传输速率,下行速率24Mbps和52Mbps,上传速率3.5Mbps和16Mbps;实际速率可能过比标准的低,因为DSL提供商会进行阶梯式收费而故意限速,而传输速度同样受限于家庭与电话局的距离,线的品质。
- cable:使用有线电视的基础设施作为传输介质,光缆将电缆头端连接到地区枢纽,使用传统的同轴电缆到达家家户户,此系统常被称为混合光纤同轴(CMTS:电缆调制解调器端接系统),DOCSIS3.0标准定义了1.2Gps的下行速率和100Mbps的上行速率,但实际会因为较低的合同数据率和媒体损伤而无法达到这个速度,而光缆共享意味着多人使用时速度会下降
FTTH:光纤到户是从中心局到家庭提供一条光纤路径,是一种能带来更高速率的新兴技术,每个家庭具有一个光纤网络端接器(ONT),连接到邻近的分配器(splitter),集结成一根共享光纤,再连接到光纤线路端接器(OLT),OLT提供光电信号的转换,经过哦路由器与因特网相连。光纤分布体系结构包括主动光纤网络(AON)和被动光纤网络(PON)两种,前者基本上就是交换因特网,后者的结构如下图
企业(和家庭)接入:以太网和WiFi
通常用局域网(LAN)将端用户连接到边缘路由器
以太网是最流行的局域网接入技术。以太网用户使用双绞铜线连接到以太网交换机,这段连接具有100Mbps~10Gbps的连接速率
手机、平板电脑等其他设备可以通过无线LAN技术(WiFi)在距离为100米内的范围接入互联网,802.11提供了高达100Mbps的共享传输速率
广域无线接入
- 通过蜂窝网络提供商运营的基站,移动设备在基站10~100km内可以连接因特网;4G技术提供了高达60Mbps的下载速率,5G技术也逐渐开展部署了
# 1.2.2 物理媒体
物理媒体划分为导引型媒体和非导引型媒体。对于导引型媒体,电波沿着固体媒体前行,如光缆,双绞铜线、同轴电缆;对于非导引型媒体,电波在空气或外层空间中传播,如无线局域网或数字卫星频道
双绞铜线:最便宜、最通用,双绞线由两根隔离的铜线组成,螺旋绞合,减少电气干扰,局域网中的双绞线的数据速率从10Mbps到10Gbps,传输速率取决于线的粗细和双方距离
同轴电缆:由两个同心的铜导体组成,能为住户提供10~100Mbps的因特网接入
光纤:细而软,能导引光脉冲的媒体,每个脉冲表示一个比特。一根光纤能支持10~100Gbps的传输速率,他们不受电磁干扰,信号衰减低,且难以被窃听,故使其成为长途引导型传输媒体,光载波(OC)标准链路速率的范围从51.8Mbps~39.8Gbps,目前使用的标准常被称为OC-n,链路速率等于 n*51.8Mbps
陆地无线电信道:依赖传播环境和传输信号的距离,信道大致划分为短距、局域、广域三类(1-2m, 10-1000m,10km+)
卫星无线电信道:通信中常用两类卫星,同步卫星和近地轨道卫星,同步卫星相对区域静止,在地面上方36000km,传输速率为100~1000Mbps,传输时延为280ms;而近地卫星不相对静止,故若想对区域进行连续覆盖,则需要一个互相能通信的卫星群
# 1.3 网络核心
# 1.3.1 分组交换
- 网络应用中,端系统彼此交换报文(message),源将长报文划分为较小的数据块,称为分组(packet),分组通过通信链路和分组交换机传送
# 存储转发传输
- 多数分组交换机在链路输入端会采取存储转发机制,即在向输出链路传输前,必须先接收到整个分组
- 考虑通过由N条速率均为R的链路组成的路径(即中间有N-1个路由器),则端到端时延为
(不算排队)
# 排队时延和分组丢失
- 分组交换机有多条链路与之相连,对于每条相连的链路,该分组交换机具有一个输出缓存(输出队列),用于存储路由器准备发往那条链路的分组。若到达的分组需要传输到某条链路,但链路正忙于传输其他分组,则分组需要在输出缓存中等待,这会带来排队时延
- 缓存空间大小有限,若到达的分组发现传输队列已满,则到达的分组或已经排队的分组之一将被丢弃,即分组丢失
# 转发表和路由选择协议
- 当源主机要向目的端系统发送一个分组时,源在该分组的首部包含了目的地的IP地址,当分组到达路由器,路由器检查该分组的目的地址的一部分,并向一台相邻的路由器转发分组,每台路由器具有一个转发表(forwarding table),用于将目的地址映射成输出链路
- 因特网具有一些特殊的路由选择协议用于自动设置这些转发表
- 通过访问traceroute.org 来实际看到分组在因特网所走的端到端路由
# 1.3.2 电路交换
- 在电路交换网络中,在端系统间通信会话期间,预留了端系统间通信沿路径所需要的资源(缓存、链路传输速率)
- 传统的电话网络就是电路交换网络的例子,当网络创建电路时,为发送方和接收方连接预留了带宽,能以有保障的速率传输数据
# 电路交换网络中的复用
- 链路中的电路是通过频分复用(FDM)或时分复用(TDM)来实现的
- 对于FDM,链路为每条连接专用一个频段,电话网络中,频段通常具有4kHz的宽度,频段的宽度叫做带宽,无线电台也使用FDM来共享88~108MHz的频谱,每个电台被分配一个特定的频段
- 对于TDM,时间被划分为固定区间的帧,每帧又被划分为固定数量的时隙,每个连接可以在每个帧的特定时隙传输数据,电路传输速率=帧速率 * 一个时隙的比特数
- 分组交换按需分配链路使用,支持更多用户,是互联网的数据交换方法
# 1.3.3 网络的网络
- 当今的网络结构如下图,由十多个Tier 1 ISP 和数十万个较低层ISP组成,低层ISP与高层ISP相连,高层ISP彼此互联,用户和内容提供商是低层ISP的客户,低层ISP是高层ISP的客户,近年来,主要的内容提供商已经创建自己的网络,直接与低层ISP互联。IXP是三方公司创建的一个因特网交换点,多个ISP能够在此进行对等连接,截至2020年,因特网有超过600个IXP节点
# 1.4 分组交换网中的时延、丢包和吞吐量
# 1.4.1 分组交换网中的时延概述
结点总时延(单台路由器) = 处理时延 + 排队时延 + 传输时延 + 传播时延
- 处理时延:检查分组首部和决定分组导向何处,检查比特级别的差错所需的时间,高速处理器的处理时延通常是微秒级别
- 排队时延:分组在链路上等待传输时所需的时间,实际的排队时延可以是毫秒到微秒级别
- 传输时延:路由器将分组推出所需要的时间,与两台路由器之间的距离无关,传输时延=分组长度/链路传输速率,实际的传输时延可以是毫秒到微秒级别
- 传播时延:从链路起点到下一个路由器所需要的时间是传播时延,是两台路由器间距离的函数,与分组长度和链路传输速率无关,广域网中,传播时延为毫秒量级
# 1.4.2 排队时延和丢包
假设每秒有个分组到达,每个分组由比特组成,路由器传输速率为,则定义流量强度为
若
,则排队时延趋向无穷大(假定缓冲区无限大),若此值小于1,还要关注分组到达的特性(周期性?集中度?) 当缓冲队列已满时,路由器会丢弃分组,流量强度越大,丢包率越高
# 1.4.3 端到端时延
- 考虑从源到目的地的时延,假设中间有
台路由器,假设无拥堵(无排队时延),则端到端时延 - 使用Linux命令 traceroute 可以探查到特定端系统中间经历的路由器的具体IP、结点时延(三次),具体参考 (opens new window),若Linux下使用traceroute出现星号,一般原因是linux的traceroute默认使用tcp或udp,强制使用ICMP就行了(添加 -I 参数)
# 1.4.4 计算机网络中的吞吐量
考虑主机A向主机B跨越计算机网络传送一个大文件,在任何时间瞬间的瞬时吞吐量是主机B接收到文件的速率
吞吐量取决于瓶颈链路的速率,即
,当今因特网对吞吐量的限制因素通常在接入网,因为网络核心的所有链路具有非常高的传输速率 一条具有高传输速率的公共链路也可能因为其他主机的干扰流量问题(一起下载文件),而成为瓶颈链路
# 1.5 协议层次及其服务模型
# 1.5.1 分层的体系结构
- 各层的所有协议被称为协议栈,因特网的协议栈由5个层次组成,物理层、链路层、网络层、运输层、应用层
- 应用层:应用层协议包括HTTP、SMTP、FTP、DNS等等,应用层的消息分组称为报文(message)
- 运输层:运输层协议包括两种:TCP、UDP,运输层的分组称为报文段(segment)
- 网络层:网络层协议包括IP协议和一些路由选择协议,网络层的分组称为数据报(datagram)
- 链路层:链路层协议包括以太网、WiFi等协议,链路层的分组称为帧(frame)
- 物理层:物理层协议包括噢双绞铜线、同轴电缆等,物理层的分组称为比特(bit)
- 20世纪70年代后期,国际标准化组织(ISO)提出计算机网络应组织为7层,称为开放系统互连模型(OSI),具体是应用层,表示层、会话层、运输层、网络层、数据链路层、物理层;表示层的作用是使通信的应用程序能解释交换数据的含义,服务包括数据压缩/数据加密/数据描述;会话层提供了数据交换定界和同步功能,包括了建立检查点和恢复方案的方法
# 1.5.2 封装
- 路由器和链路层交换机并不实现协议栈中的所有层次,如下图,链路层交换机只能识别以太网地址而不能识别IP地址
- 一个分组有两种类型的字段,首部字段和来自上层分组的有效载荷字段(payload field)
# 1.6 面对攻击的网络
- 病毒和蠕虫都是恶意软件,前者需要某种形式的用户交互来感染用户设备,而后者不需要
- 拒绝服务攻击(DoS)主要分为三类
- 弱点攻击:发送制作精细的报文,使服务器停止运行或崩溃
- 带宽洪泛:攻击者向目标主机发送大量分组,使接入链路拥塞,合法分组无法到达服务器
- 连接洪泛:攻击者在目标主机中创建大量半开或全开TCP连接,使得服务器停止接受合法连接
- 分组嗅探器(packet sniffer)会记录每个流经的分组,常作为一台被动的接收机部署在无线传输设备附近,类似的软件包括Wireshark
- IP哄骗能够冒充另一个用户的身份往目的地发送数据包