1 计算机网络和因特网
1.1 什么是因特网
1.1.1 具体构成描述
组成
组成: 端系统, 通信链路, 分组交换机
- 连入因特网的设备: 主机(host) 或 端系统
- 端系统通过通信链路 和 分组交换机连接到一起
- 通信链路: 由不同类型的物理媒体构成:
- 同轴电缆, 铜线, 光纤, 无线电频谱
- 传输速度: bits/s或bps
- 端系统向别的端系统发送数据时, 发送端将数据分段, 为每段加上首部字节, 称为分组; 这些分组通过网络发送到目的端系统, 在哪里被装备成初始数据.
分组交换机 从它的一条入通信链路接受到达的分组, 并从它的一条出通信链路转发该分组. 主要一下两种:
- 路由器: 网络核心中
- 链路层交换机: 接入网中
从发送端到接收端, 一个分组所经历的一系列通信链路和分组交换机称为通过该网络的路径
ISP
端系统通过因特网服务提供商(ISP)接入因特网
各ISP为端系统提供各种不同类型的网络接入
- 住宅宽带接入, 高速局域网接入, 移动无限接入
- ISP也为内容提供者提供因特网接入服务
- 将Web站点和视频服务器直接连入因特网
- 粗略分等级:
- 中心(1级): 国际ISPs(网络服务提供者)
- 2级ISPs: 较小的(一般地区性的)ISPs
- 3级ISPs和局部/端ISPs, 连接接入网
协议
端系统, 分组交换机和其他因特网部件都要运行一系列的协议, 这些协议控制着因特网中信息的接收和发送
因特网的主要协议: TCP/IP
- 高效但不可靠的数据传输 — IP
- 从源到目的地的可靠数据传输 — TCP
网络标准
- IETF, RFC
1.1.2 服务描述
- 涉及到多个相互交换数据的端系统的应用程序: 分布式应用程序
- 与因特网相连的端系统提供了一个套接字接口
- 该接口规定了运行在一个端系统上的程序 请求因特网基础设施向 运行在另一个端系统上的特定目的地程序 交互数据的方式
1.1.3 什么是协议
- 协议 定义了在两个或多个通信实体之间交换的报文的格式和顺序, 以及报文发送和/或接受一条报文或者其他事情所采取的动作.
2.2 网络边缘
主机(端系统)运行应用程序
主机分为客户和服务器
1.2.1 接入网
- 接入网 指将端系统物理连接到其边缘路由器的网络
家庭接入: DSL, 电缆, FTTH, 拨号和卫星
- 数字用户线DSL
- 从本地电话接入的本地电话公司处获得DSL因特网接入
- ISP: 用户的本地电话公司
- 每个用户的DSL调制解调器使用现有的电话线(即双绞铜线)与位于电话公司的本地中心局(CO)中的数字用户线复用器(DSLAM)交换数据
- 家庭电话线同时承载了数据和传统的电话信号, 用不同的频率编码
- 电缆因特网接入:
- 使用有线电视公司现有的有线电视基础设施
- 需要电缆调制解调器
- 不对称: 下载快, 上传慢
- 共享广播媒体(人多就卡)
光纤入户FTTH
- 本地中心局直接到家庭提供一条光纤路径
- 分成主动光纤网络PON和被动光纤网络PON
- 拨号上网
企业(和家庭)接入
- 使用局域网(LAN)将端系统连接到边缘路由器
- 以太网Ethernet是最流行的接入技术
- 无线LAN(WLAN): WiFi
- 线代家庭网络:
- 设备
- 一个与无线PC和其他设备通信的基站(无线接入点)/以太网交换器
- 一个提供与因特网宽带接入的DSL/电缆调制解调器
- 一台互联了基站和带有电缆调制解调器的固定PC的路由器(router)/防火墙
广域无线接入: 3G和LTE
1.2.2 物理媒体
- 分类:
- 导引型媒体
- 电波沿固体媒体前行
- 非导引型媒体
- 电波在空气或外层空间中传播
- 导引型媒体
- 双绞铜线
- 同轴电缆
- 光纤
- 陆地无线电信道
- 卫星无线电信道
1.3 网络核心
The Network core
- 分组交换机和链路构成的网状网络, Mesh of interconnected routers
- 核心问题:
- 数据如何通过网络传播
- 分类
- 电路交换(面向连接, 固定的)
- 分组交换(面向无连接, 到了每个路口自己决定怎么走)
1.3.1 分组交换
- 类似于公路网, 或者打的
源将报文(message)划分为较小的数据块, 称为分组(packet)
在源和目的地之间, 每个分组都通过通信链路和分组交换机传送
- 无固定路线
- 应用A, B的分组共享网络资源
- 不分配资源
- 分组每次前进一步: 后在交换机处存储(排队)
- 每个包用满的带宽
- 有拥塞问题, 排队
1.3.1.1 存储转发传输
- 多数分组交换机在链路的输入端使用存储转发传输
- 存储转发传输 指在交换机能够开始向输出链路传输该分组的第一个比特之前, 必须接收到整个分组
1路由器1分组: 总时延$2L/R$: $L/R$ 时刻路由器接收整个分组, $2L/R$ 时刻路由器传输了整个分组
1路由器3分组: 时延$4L/R$
- $N-1$路由器($N$链路)1分组: 时延$N\frac{L}{R}$
1.3.1.2 排队时延和分组丢失
- 每台分组交换机连多条链路, 对于每条链路, 有一个输出缓存
- 如果某条链路正在传输别的分组, 需要在输出缓存中等待, 因此有排队时延
- 如果缓存满了, 会出现分组丢失(丢包)
1.3.1.3 转发表和路由选择协议
问题: 路由器如何决定向哪条链路转发:
- 因特网中每个端系统有IP地址
- 目的地的IP地址包含于分组的首部
- 每台路由器有一个转发表, 用于将目的地址(或一部分)映射成输出链路
- 因特网具有路由选择协议来自动设置转发表
1.3.2 电路交换
- 类似于铁路网
- 在端系统间通信期间, 预留了端系统间沿路径通信所需要的资源(缓存和传输速率)
- 两台主机要通信时, 该网络在两台主机之间创建一条专用的端到端连接
- 专用资源, 无共享
- 面向连接, 固定路线
- 路由器分配资源: 带宽固定
- 线路分配资源: 频分复用/时分复用/码分复用
- 性能有保障
- 有Call setup和teardown, 不灵活
1.3.2.1 电路交换网络中的复用
频分复用FDM和时分复用TDM
FDM:
- 每条连接专用一个频段
- 频段宽度称为带宽
TDM:
时间被划分为固定期间的帧, 每个帧被划分为固定数量的时隙
在循环的TDM帧中, 每条电路被分配相同的专用时隙
- 传输速率: 帧速率$\times$一个时隙中的比特数量
1.3.2.2 分组交换和电路交换的对比
- 电路交换存在静默期, 例如打电话的一个人停止说话, 空闲的网络资源不能被其他进行中的连接利用, 因此性能不如分组交换
- 因此有了虚电路: 分组交换 + 电路交换, 分组交换和电路交换的中间形式(类似于公交车)
- 路由器或者主要通路固定
- 资源共享, 需要拥塞控制
- 资源可被保留, 导致不同的性能
- 需要连接setup/teardown
1.3.3 网络的网络
- 多层ISP
- 存在点PoP(入网点): 存在于除了接入ISP的所有层次, 为提供商的一台或者多台路由器群组, 其中客户ISP能够与供应商ISP连接
多宿: 一个ISP可以和多个提供商ISP连接
对等: 位于相同结构等级层次的邻近的一对ISP可以直接将网络连在一起, 流量不经过上游ISP传输
- 因特网交换点IXP: 多个ISP在这里一起对等的汇合点
- 内容提供商网络: 独立于公共因特网, 与多层ISP相连
1.4 分组交换网中的时延, 丢包和吞吐量
1.4.1 分组交换中的时延概述
时延的类型:
- 处理时延
- 包括检查分组首部, 决定该分组导向何处; 检错
- 排队时延
- 分组在链路上等待传输的时间
- 传输时延
- 将整个分组中所有比特都推向链路所需要的时间
- 分组长度L, 链路传输速率R, 则传输时延L/R
- 传播时延
- 一个比特从链路起点到下一个路由器的时间
- 传播速度接近光速
- 总时延就是这四种时延之和
1.4.2 排队时延和丢包
- 分组长度L比特, 分组到达队列的速率$\alpha$, 分组传输速率R
- 定义流量强度$L\alpha /R$
- $L\alpha /R>1$, 队列无限增加
$L\alpha /R\le 1$, 若到达队列的过程是随机的, 随着流量强度接近于1, 平均排队时延迅速增加
丢包: 队列已满, 没有地方存储, 则丢弃该分组
1.4.3 端到端时延
假设源到目的地之间有N-1台路由器, 网络无阻塞, 则端到端时延为
$d_{end-end}=N(d_{proc}+d_{trans}+d_{prop})$
可以用traceroute程序查看端到端时延
其他时延:
- 希望向共享媒体传输分组的端系统可能会有意延迟传输
- 媒体分组化时延, 出现于IP语音VoIP中
1.4.4 计算机中的吞吐量
- 瞬时吞吐量, 平均吞吐量: bps
- 瓶颈链路:
- 无干扰流量时为链路中最小的那个传输速率
- 有干扰流量, 高传输速率的链路也可能为平静链路
1.5 协议层次及其服务模型
1.5.1 分层的体系结构
各层的所有协议称为协议栈, 协议栈分成五层: 物理层, 链路层, 网络层, 运输层, 应用层
OSI参考模型: 物理层, 链路层, 网络层, 运输层, 会话层, 表示层, 应用层(后三层可以统称为应用层)
(1) 应用层
- 应用层协议分布在多个端系统上, 一个端系统上的应用程序使用协议和另一个端系统上的应用程序交换信息分组
- 应用层的信息分组称为报文(message)
- FTP, SMTP, HTTP
(2) 运输层
- 因特网的运输层在应用程序端点之间传送应用层报文
- TCP, UDP
- TCP面向连接, 包括确保传递和流量控制, 将长报文划分成短报文, 有拥塞, 可靠
- UDP提供无连接服务, 不可靠, 无流量控制, 无拥塞机制
- 运输层的分组称为报文段(segment)
(3) 网络层
- 网络层负责将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机
- 运输层协议向网络层提交运输层报文段和目的地址
- IP协议
(4) 链路层
- 为了将分组从一个节点(主机或路由器)移动到路径上的下一个节点, 网络层需要依靠链路层的服务
- 一个数据报可以被沿途不同链路上的不同链路层协议处理
- 网卡实现
- 差错检测, 流量控制
- PPP, 以太网
- 链路层分组: 帧(frame)
(5) 物理层
- 链路层任务是将整个帧从一个网络元素移动到邻近的网络元素, 而物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点
- 物理层协议依然链路相关, 并且和实际传输媒体(例如双绞铜线, 单模光纤)有关
1.5.2 封装
- 封装: 应用层报文传送给传输层, 传输层收到报文并附上附加信息(传输层首部信息); 其他层之间也类似
- 在每一层, 一个分组具有两种类型的字段: 首部字段和有效载荷字段. 有效载荷字段来自上一层的分组
1.6 面对攻击的网络
1.6.1 坏家伙能够经因特网将有害程序放入你的计算机中
- 恶意的东西统称为恶意软件
- 恶意软件感染我们设备后, 可以做各种不正当的事情, 包括删除文件, 安装间谍软件收集隐私信息并发给坏家伙
受害主机可以称为众多受害设备网络中的一员, 它们统称为僵尸网络
坏家伙可以通过僵尸网络控制并对目标主机展开垃圾邮件分发或者分布式拒绝服务攻击
- 多数恶意软件是自我复制的: 感染一台主机后从那台主机寻求进入因特网上的其他主机
- 病毒是一种需要某种形式的用户交互来干扰用户设备的恶意软件
- 例如包含恶意可执行代码的电子邮件附件
- 蠕虫是一种无须任何明显用户交互就能进入设备的恶意软件
- 例如用户运行了一个攻击者能够发送恶意软件的脆弱网络应用程序
1.6.2 坏家伙能够攻击服务器和网络基础设施
- 拒绝服务攻击DoS: DoS攻击使得网络, 主机或其他基础设施部分不能由合法用户使用
- 主要三种:
- 弱点攻击: 发送制作精细的报文
- 带宽洪泛: 发送大量分组
- 连接洪泛: 创建大量半开或者全开TCP连接
- 分布式DoS(DDoS): 攻击者控制多个源并让每个源向目标猛烈发送流量
1.6.3 坏家伙能够顾嗅探分组
- 在无线传输设备的附近放置一台被动的接收机, 接收机就能得到传输的每个分组的副本
- 记录每个流经的分组副本的被动接受器称为分组嗅探器
1.6.4 坏家伙能够伪成你认识的人
- 将具有虚假源地址的分组注入因特网的能力称为IP哄骗