计算机网络概述
了解基本术语和概念。 掌握网络的基本原理。
什么是Internet ?
从具体的构成角度
节点
- 主机及其上面运行的应用程序(主机节点)
- 路由器、交换机等网络交换设备(中专节点、交换节点)
边: 通信的链路
- 接入网链路: 主机连接到互联网的链路
- 主干链路: 路由器间的链路
Internet(互联网)的组成
协议
- 协议控制发送、接收消息
如 TCP \ IP\HTTP\FTP等等
- Internet: 网络的网络
- Internet标准
RFC: 请求评述
IETF : 互联网工程认证组织
从服务的角度
- 使用通信设施进行通信的分布式应用
Web、email、分布式游戏、电子商务、社交网络等
- 通信基础设施为 apps(分布式应用)提供给通信服务(编程接口)
为app提供服务 ,类似于邮政服务(面向连接 和 无连接); 将发送和接收数据的apps与互联网连接起来。
分布式应用是网络存在的理由
什么是协议?
协议定义了在两个或者两个通信实体之间交换的报文格式 和 次序, 以及在报文传输和 / 或接收或其他事件方面所采取的动作。
网络边缘
在了解网络边缘之前我们先来看看网络结构
网络结构的组成
- **网络边缘: **
- 主机
- 应用程序(cliet and server)
- 网络核心:
- 互联着的路由器
- 网络的网络
- **接入网、物理媒体: **
- 有线或者无线通信链路
网络边缘
- 端系统(也就是我们的主机)
- 包括:
- 运行的程序
- Web、 email
- 在网络的边缘
- 客户/服务器模式
- 客户端向服务器的请求、接收服务
- 如Web浏览器/服务器: email客户端/服务器
- 对等(peer - peer)模式
- 很少的(甚至没有)专门的服务器
- 如Gnutella、KaZaA、 Emule
网络边缘: 采用网络设施的面向连接服务
目标: 在端系统之间传输数据(连接的)
- 握手: 在传输数据之前做好准备
- 人类协议中 ,互相问好让我们两个人认识,建立朋友关系
- 在网络协议中, 两个通信主机之间为连接建立状态(做相关准备,缓存等)
- TCP -传输控制协议(Transmission Control Protocol)
- Internet上面向连接的服务
TCP服务
- 特性1. :可靠地、按顺序地传送数据
- 确认和重传
- 特性2. 流量控制
- 发送方不会淹没接收方
- 特性3. 拥塞控制
- 当网络拥塞时, 发送方降低发送地速率
网络边缘: 采用基础设施地无连接服务
目标: 在端系统之间传输数据(无连接的)
- 无连接服务
UDP– 用户数据报协议( User Datagram Protocol )
- 无连接
- 不可靠数据传输
- 无流量控制
- 无拥塞控制
使用TCP地应用
http(Web) , FTP(文件传送) SMTP(email)
使用UDP地应用
流媒体、 远程会议、DNS、 Internet电话
网络核心:分组交换、线路交换
网络核心:路由器的网状网络
基本问题:数据怎样通过网络进行 传输?
**答: **
- 电路交换:为每个呼叫预留一条 专有电路:如电话网
- 分组交换:
- 将要传送的数据分成一个个单位: 分组
- 将分组从一个路由器传到相邻路由器(hop),一段段最终从源端传 到目标端
- 每段:采用链路的最大传输能力( 带宽)
网络核心—-电路交换
端到端的资源被分配给从源端 到目标端的呼叫 “call”
图中,每段链路有4条线路:
- 该呼叫采用了上面链路的第2 个线路,右边链路的第1个线 路(piece)
- **独享资源:不同享 **
- **每个呼叫一旦建立起来就能够 保证性能 **
- **如果呼叫没有数据发送,被分配 的资源就会被浪费 (no sharing) **
- **通常被传统电话网络采用 **
可以理解:我们对两个电脑互相插入网线,然后让他们两个互相ping他们的ip, 或者更为直接的说就是两个电脑之间通过蓝牙或者其他的媒介建立连接, 然后互相传输数据。
为呼叫预留端-端资源
也就是我们在传输的过程中需要某些媒介(比如从两地传送东西就需要车、汽油、通行证等等),这一步要做的就是为这次传输预留所需要的资源。
- 链路带宽、交换能力
- 专用资源:不共享
- 保证性能
- 要求建立呼叫连接
网络资源(如宽带)被分成片
分法: 频分(FDM) (Frequencydivision multiplexing) 、波分(WDM) a(Wave-division multiplexing) 、时分(TDM) (Time-division multiplexing) 等
- 为呼叫分配片
- 如果某个呼叫没有数据, 则其资源片处于空闲状态 (不共享)
这个资源的分发暂时不太明白
举例:
电路交换其实不适合计算机之间的通信
**原因: **
- 连接建立时间长
- 计算机之间的通信有突发性,如果使用线路交换,则浪费的片较多
- 即使这个呼叫没有数据传输 ,其所占据的片也不能够被别的呼叫使用
- 可靠性不高
网络核心—- 分组交换
以分组为单位存储—转发方式
- **网络带宽资源不再分分为一个 个片,传输时使用全部带宽 **
- **主机之间传输的数据被分为一 个个分组 **
资源共享, 按需使用:
- 存储-转发:分组每次移 动一跳( hop )
- 在转发之前,节点必须收到 整个分组
- 延迟比线路交换要大
- 排队时间
分组交换: 存储– 转发
- ** 被传输到下一个链路之前, 整个分组必须到达路由器: 存储-转发 **
- ** 在一个速率为R bps的链路 ,一个长度为L bits 的分组 的存储转发延时:L/R s **
比如: L= 7.5 mbits ;; R =1.5 mbits 那么3次存储转发的延时为15s
分组交换: 排队延迟 和丢失
- **排队和延迟: **
- 如果到达速率>链路的输出速率:
- 分组将会排队,等待传输
- 如果路由器的缓存用完了,分组将会被抛弃
- 如果到达速率>链路的输出速率:
分组交换: 统计多路复用
网络核心的关键功能
- 路由: (全局)
决定分组采用的源到目标的路径
- 转发: (局部)
将分组从路由器的输入链路转移到输出链路
分组交换VS电路交换
- ** 同样的网络资源,分组交换允许更多用户使用网络! **
对比:
- **分组交换是“突发数据的胜利者” **
- **适合于对突发式数据传输 **
- 资源共享
- 简单,不必建立呼叫** **
- **过度使用会造成网络拥塞:分组延时和丢失 **
- 对可靠地数据传输需要协议来约束:拥塞控制
- **Q: 怎样提供类似电路交换的服务? **
- 保证音频/视频应用需要的带宽
- 一个仍未解决的问题(chapter 7)
分组交换网络: 存储- 转发
分组交换: 分组的存储转发一段一段从源端传到目标端,按照有无网络层的连接,分成:
- 数据报网络:
- 分组的目标地址决定下一跳
- 在不同的阶段,路由可以改变
- 类似:问路
- Internent
- 虚电路网络:
- 每个分组都带标签(虚电路标识 VC ID),标签决定下一跳
- 在呼叫建立时决定路径,在整个呼叫中路径保持不变
- **路由器维持每个呼叫的状态信息 **
- X.25 和ATM
数据报(datagram)的工作原理
- 在通信之前,无须建立起一个连接,有数据就传输
- 每一个分组都独立路由(路径不一样,可能会失序)
- 路由器根据分组的目标地址进行路由
虚电路(virtual circuit)的工作原理
存储- 转发
接入网、物理媒体
如何将边缘接入核心就是接入网需要做的事情
以及我们需要知道接入网的物理媒介就是媒体
如何将端系统和边缘路由器连接?
- 住宅接入网络
- 单位接入网络
- 无线接入网络
那么接入网络的带宽又是多少呢? 这个网络是共享的还是专用的 ?
两个接入的指标: 就是带宽以及共享/专用
住宅接入 : modem
- **将上网数据调制加载音频信号上, 在电话线上传输,在局端将其中的 数据解调出来;反之亦然 **
- 调频
- 调幅
- 调相位
- 综合调制
- 拨号调制解调器 (相当于是电话线)
- 56Kbps 的速率直接接入路由器 (通常更低)
- 不能同时上网和打电话:不能 总是在线
接入网: digital subscriber line (DSL)方式
** 通过采用现存的到交换局DSLAM的电话线 **
** 然后将数据传输到互联网上, 将语音传输到电话网上。**
- < 2.5 Mbps上行传输速率(typically < 1 Mbps)
- < 24 Mbps下行传输速率(typically < 10 Mbps)
住宅接入: 电缆模式
越往上越是光纤 , 越往下越是同轴电缆(HFC)
接入网: 线缆网络 (单位接入)
有线电视信号线缆双向改造
**FDM: **在不同频段传输不同信道的数据, 数字电视和上网数据(上下行)
对于有些有线的、比较普及的线路(电线等), 其实是可以通过电线进行网络传输
- ** HFC: hybrid fiber coax (混合光纤同轴电缆)**
- ** 带宽划分是非对称的:** 最高30Mbps的下行传输速率, 2 Mbps 上行传输 速率
- 线缆和光纤网络将个家庭用户接入到 ISP 路由器 ** **
- ** 各用户共享到线缆头端的接入网络 **
- **与DSL不同, DSL每个用户一个专用线路到CO(central office) **
接入网: 家庭网络
企业接入网络(Ethernet)
- 经常被企业或者大学等机构采用
- 10 Mbps, 100Mbps, 1Gbps, 10Gbps传输率
- 现在,端系统经常直接接到以太网络交换机上
#无限接入网络
**各无线端系统共享无线接入网络(端系统到无线路由器) **
- **通过基站或者叫接入点 **
物理媒体
- **Bit: **在发送-接收对间传播
- 物理链路:连接每个发送-接 收对之间的物理媒体
- **导引型媒体: **
- 信号沿着固体媒介被导引:同 轴电缆、光纤、 双绞线
- 非导引型媒体:
- 开放的空间传输电磁波或者光 信号,在电磁或者光信号中承 载数字数据
- **双绞线 (TP) **
**两根绝缘铜导线拧合 **
** 5类:100Mbps 以太网 ,Gbps 千兆位以太网 6类:10Gbps万兆以太网 **
物理媒体: 同轴电缆、 光纤
同轴电缆:
- 两根同轴的铜导线
- 双向
- 基带电缆:
- 电缆上一个单个信道
- Ethernet
- 宽带电缆:
- 电缆上有多个信道
- HFC
**光纤和光缆: **
- 光脉冲,每个脉冲表示一个 bit,在玻璃纤维中传输
- 高速: 点到点的高速传输(如10 Gps-100Gbps传输速率 )
- 低误码率:在两个中继器之 间可以有很长的距离,不受 电磁噪声的干扰
- ** 安全 **
物理媒体: 无线链路
- **开放空间传输电磁波,携 带要传输的数据 **
- **无需物理“线缆” **
- **双向 **
- 传播环境效应: 反射 吸收 干扰
无线链路类型
- 地面微波
- LAN
- wide-area
- 卫星
Internet/ISP 结构
ISPs (Internet Service Providers)
** 端系统通过接入ISPs (Internet Service Providers)连 接到互联网**
- 住宅,公司和大学的ISPs
**接入ISPs相应的必须是互联的 **
- 因此任何2个端系统可相互发送分组到对方
导致的“网络的网络”非常复杂
- 发展和演化是通过经济的和国家的政策来驱动的
让我们采用渐进方法来描述当前互联网的结构
互联网络结构: 网络中的网络
问题 :给定数百万接入ISPs, 如何将他们互联到一块
问题: 给定数百万接入ISPs,如何将它们互联到一起
选项: 将每个接入ISP都连接到全局ISP(全局范围内覆盖)?
客户ISPs和提供者ISPs有经济合约
Internet结构: network of networks
松散的层次模型
**中心: 第一层ISP( 如UUNet, BBN/Genuity, Sprint, AT&T)国家/国际覆盖,速率极高 **
- 直接与其他第一层ISP相连
- 与大量的第二层ISP和其他客户网络相连
第二层ISP: 更小些的 (通常是区域性的) ISP
- 与一个或多个第一层ISPs,也可能与其他第二层ISP
ISP之间的连接
- POP: 高层ISP面向客户网络的接入点,涉及费用结算
- 如一个低层ISP接入多个高层ISP,多宿(multi home)
- 对等接入:2个ISP对等互接,不涉及费用结算 IXP:多个对等ISP互联互通之处,通常不涉及费用结算
- 对等接入
- ICP自己部署专用网络,同时和各级ISP连接
性能:丢包、分组延时、吞吐量
分组丢失和延时是怎么发生的 ?
**在路由器缓冲区的分组队列 **
- 分组到达链路的速率超过了链路输出的能力
- 分组等待排到队头、被传输
只有排在对头的 ,或者说是有可用缓存区的才会被传输, 剩下的都会被丢弃。
四种分组延时
节点处理延时:
- **检查 bit级差错 **
- **检查分组首部和决定将分 组导向何处 **
- dproc = 处理延时
- 通常是微秒数量级或更少
- dqueue = 排队延时
- 取决于拥塞程度
- dtrans = 传输延时
- = L/R, 对低速率的链路而言很大(如拨号),通常为微秒级 到毫秒级
- **dprop = 传播延时 **
- 几微秒到几百毫秒
排队延时
- 在输出链路上等待传输的 时间
- **依赖于路由器的拥塞程度 **
【R=链路带宽 (bps) 】【L=分组长度 (bits) 】【a=分组到达队列的平均 速率】
** 流量强度 = La/R**
- ** La/R ~ 0: 平均排队延时很小 **
- ** La/R -> 1: 延时变得很大 **
- ** La/R > 1: 比特到达队列的速率超过了从该队 列输出的速率,平均排队延时将趋向无穷大! **
传输延时:
- R=链路带宽(bps)
- L=分组长度(bits)
- 将分组发送到链路上的 时间= L/R
- 存储转发延时
传播延时
- d = 物理链路的长度
- s = 在媒体上的传播速度 (~2x108 m/sec)
- 传播延时 = d/s
Internet的延时和路由
Internet的延时和路由是怎么样的?
**Traceroute 诊断程序: 提供从源端,经过路 由器,到目的的延时测量 **
**For all i: **
- 沿着目的的路径,向每个路由器发送3个探测分组
- 路由器 i 将向发送方返回一个分组
- 发送方对发送和回复之间间隔计时
在linux下, 通过Traceroute [网址] :就可以看到往返延时
分组丢失
- **链路的队列缓冲区容量有限 **
- ** 当分组到达一个满的队列时,该分组将会丢失 **
- 丢失的分组可能会被前一个节点或源端系统重 传,或根本不重传
吞吐量
吞吐量: 在源端和目标端之间传输的速率(数 据量/单位时间)(有效的吞吐量)
瞬间吞吐量: 在一个时间点的速率
平均吞吐量: 在一个长时间内平均值
- Rs < Rc 端到端平均吞吐是多少?
上下两个问题都是 : 取决于最小的那一方
瓶颈链路 : 端到端路径上,限制端到端吞吐的链路
- Rs > Rc 端到端平均吞吐是多少?
吞吐量: 互联网场景
协议层次、服务模型
网络是一个非常复杂的系统
- 网络功能繁杂:
数字信号的物理信 号承载、点到点、路由、rdt、进 程区分、应用等
- 现在来看, 网络的许多构成元素设备:
主机、路由器、媒体链路、应用、协议、硬件、软件等等
作为一个工程师, ** 如何组织和实现这个复 杂的网络功能? **
采用分层的方式来实现这种复杂的网络功能。
分层实现这种复杂的网络功能
类似于军队中的分配任务。一级一级向下分配任务, 由单个的任务实现从而达到上层的任务实现
层次化方式实现复杂网络功能:
- 将网络复杂的功能分层功能明确的层次,每一层实现了其中一个或一组 功能,功能中有其上层可以使用的功能:服务
- **本层协议实体相互交互执行本层的协议动作,目的是实现本层功能, 通过层间的接口为上层提供更好的服务 **
- 在实现本层协议的时候,直接利用了下层所提供的服务 来实现数据报文的传输
- **本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+更下层所提供的服务 **
服务和服务访问点
1. ** 服务( Service):**低层实体向上层实体提供它们之间的 通信的能力
- 服务用户(service user)
- 服务提供者(service provider )
2. **原语(primitive):**上层使用下层服务的形式,高层使用 低层提供的服务,以及**低层向高层提供服务都是通过 服务访问原语来进行交互的**。
也就是**提供服务的形式 就是原语 **
服务访问者通过原语 来告诉 服务提供者 我需要你干什么 。
服务提供者也是通过原语来问服务访问者, 你要干嘛
3. **服务访问点 SAP (Services Access Point) :**上层 使用下层提供的服务通过层间的接口—地点:** (也就是 :下层的服务者区分上层服务访问者的信息)**
- 例如: 邮箱
- 地址(address): 下层的一个实体支撑着上层的多个实体, SAP有标志不同上层实体的作用
- 可以有不同的实现、队列
- 例子: 传输层的SAP:端口(port)
服务的类型
两种服务方式: 面向连接的服务和无连接的服务-方式
** 面向连接的服务( Connection-oriented Service) **
** 无连接的服务(Connectionless Service) **
面向连接的服务方式
用户在使用下层提供的服务之前, 需要进行握手, 来为后续的通信做出准备。 这就是面向连接的服务
- 连接(Connection):两个通信实体为进行通信而建立的一 种结合
- 面向连接的服务通信的过程:建立连接,通信,拆除连接
- 面向连接的服务的例子:网络层的连接被成为虚电路
- 适用范围:对于大的数据块要传输; 不适合小的零星报文
- 特点:保序
- 服务类型:
- 可靠的信息流 传送页面(可靠的获得,通过接收方的确认)
- 可靠的字节流 远程登录
- 不可靠的连接 数字化声音
无连接的服务方式
两个应用进程采用UDP的方式进行交互, 在其通信之前不需要握手。 直接进行信息交换。
- 无连接服务:两个对等层实体在通信前不需要建 立一个连接,不预留资源;不需要通信双方都是 活跃;(例:寄信)
- 特点:不可靠、可能重复、可能失序
- IP分组,数据包;
- 适用范围:适合传送零星数据;
- 服务类型:
- 不可靠的数据报 电子方式的函件
- 有确认的数据报 挂号信
- 请求回答 信息查询
- 、
服务和协议
服务和协议的区别
- 服务(Service):低层实体向上层实体提供它们之间的 通信的能力,是通过原语(primitive)来操作的,垂直 (上下层之间)
- 协议(protocol) :对等层实体(peer entity)之间在相互 通信的过程中,需要遵循的规则的集合,水平 (同层之间)
★服务与协议的联系★★★
- 本层协议的实现要靠下层提供的服务来实现
- **本层实体通过协议为上层提供更高级的服务 **
数据单元(DU)
层次n向上层n+1 进行提供服务, 通过原语来区分上层服务。
上一层需要下层处理的数据或其他叫SDU (服务数据单元)
在传输上下层之间有一个层间接口Interface, 所以需要加上一些控制信息, 这些控制信息叫做** ICI (接口控制信息)**
ICI + SDU ==IDU (接口数据单元)
上层的控制信息+ 本层服加的一些控制信息 = (同步) 形成本层的PDU(协议数据单元)
1对多的关系:上层发送的一个(SDU)数据单元太大了,需要拆解成分组大小
每层交换的数据单元的称呼都是不一样的 ,但是表达的意思基本是一致的。 比如:
应用层:报文;传输层:报文段或段;网络层:分组或数据报;链路层:侦;物理层:字节、位
分层处理和实现复杂系统的好处
- 概念化:结构清晰,便于标示网络组件,以及描述其 相互关系
- 分层参考模型
- **结构化:模块化更易于维护和系统升级 **(分而治之思想)
- 改变某一层服务的实现不影响系统中的其他层次
- 对于其他层次而言是透明的
- 便于交流和讨论
- 如改变登机程序并不影响系统的其它部分
- 改变2个秘书使用的通信方式不影响2个翻译的工作
- 改变2个翻译使用的语言也不影响上下2个层次的工作
分层思想被认为有害的地方?
分层到若干个子系统, 子系统之间的信息交换的效率是非常低的
总体好处 > 坏处
Internet中的协议栈★★★★★
应用层: 网络应用
**在传输层提供的可靠的传输基础上 为人类用户或者其他应用进程提供网络应用服务 **
如何保证这些服务之间的可靠性呢 ,那么这里就用到了应用层的协议:
FTP, SMTP, HTTP,DNS
当然,应用层的协议有几千中, 以上仅是最重要的几个
传输层: 主机之间的数据传输
**在网络层提供的端到端通信基础上,细分为进程 到 进程,将不可靠的通信变成可靠地通信 **
**如何做到进程之间的区分 ? **
需要用到端口的机制
**因为网络层传输的服务是不可靠的, 传输层如何保证这些服务之间的可靠性呢 ,那么这里就用到了传输协议—–TCP, UDP **
网络层: 为数据报从源到目的选择路由
链路层传输的是相邻两点之间 , 而我们需要的可不是相邻 ,而是全球范围内的通讯。
网络的核心就是**源主机 和 目标主机之间的端对端的网络传输。 **
同时这也是网络层要做的事。
网络层 在链路层相邻两点传输的基础上, 传输以分组为单位的端对端的数据传输。
所以就需要
- 主机主机之间的通信,端到端通信,不可靠
- **IP, 路由协议 **
所以网络层最重要的两个就是转发、路由
链路层: 相邻网络节点间的数据传输
两个网卡之间 通过一段链路 传输数据,然后连起来
链路层: 传输以 帧 为单位的数据 (在相邻两点之间 )
在物理层提供的服务的基础上在相邻两点之间传输以 帧 为单位的数据
- 2个相邻2点的通信,点到点通信,可靠或不可靠
- **点对对协议PPP, 802.11(wifi), Ethernet **
物理层: **线路上传送bit **
**在线路上传送bit (组合而成为帧) **
将所有的信息转换为物理信号, 承载在媒体之上。然后在端与端之间进行传输
除了互联网(Internet)的五层参考模型之外的其他模型 : ISO/OSI 参考模型
表示层:
** 允许应用解释传输的 **数据, e.g., 加密,压缩,机 器相关的表示转换
会话层:
** 数据交换的同步,检 查点,恢复 **
互联网协议栈是没有上述的两层
虽然没有, 但是他们干的事情,在互联网协议栈中也是有的, 应用层自己去做。
封装和解封装
各层次的协议数据单元
- **应用层:报文(message) **
- 传输层:报文段(segment):TCP段,UDP数据报
- 网络层:分组packet(如果无连接方式:数据报 datagram
- **数据链路层:帧(frame) **
- **物理层:位(bit) **