一、计算机网络概述
1.互联网构成
网络边缘: 位于互联网边缘与互联网相连的计算机和其他设备,如桌面计算机、移动计算机、服务器、其他智能终端设备(end systems、clients、servers)
网络核心:由互联端系统的分组交换设备和通信链路构成的网状网络
如:分组交换路由器(rooters)、链路层交换机、通信链路(光纤、铜缆、无线电、激光链路)
2.网络分类
个域网PAN( Personal Area Network )
- 能在便携式消费电器与通信设备之间进行短距离通信的网络
- 覆盖范围一般在10米半径以内,如蓝牙耳机等
局域网LAN(Local Area Network)
- 局部地区形成的区域网络,如企业网络
- 分布地区范围有限,可大可小,大到一栋建筑、小到办公室内的组网
- 电脑WLAN接入,打印机共享等等
城域网MAN(Metropolitan Area Network )
- 范围覆盖一个城市的网络
广域网WAN(Wide Area Network)
- 覆盖很大地理区域,乃至覆盖地区和国家
3.接入网
接入网的用途
- 接入网的用途是将主机连接到边缘路由器上
- 边缘路由器是端系统Host去往任何其他远程端系统的路径上的第一台路由器
接入网分类:
住宅接入(residential access):数字用户线DSL、电缆、光纤到户FTTH、拨号和卫星、光纤
以公司接入(company access):以太网和WiFi
广域无线接入(wireless access):3G和LTE,也有1G、2G、4G(目前手机在用,我跟不上时代了)、5G、6G
3.网络核心的两大功能
路由 确定数据分组从源到目标所使用的路径(全局操作)
转发 路由器或交换机将接收到的数据分组转发出去(即移动到该设备的某个输出接口)(本地操作)
4.网络分层
- OSI 7层模型(应用、表示、会话、传输、网络、数据链路、物理)
- TCP/IP 4层模型(应用、传输、互联网、网络接口)
OSI模型的不足
- 从未真正被实现:TCP/IP已成为事实标准,OSI缺少厂家支持
- OSI分层欠缺技术考虑:会话层、表示层很少内容;数据链路层、网络层内容繁杂。模型和协议过于复杂。
- 分层间功能重复:差错控制、流量控制等在同层反复出现
- 非技术因素:OSI被认为是政府和机构的强加标准
TCP/IP模型的不足
- 核心概念未能体现:未明确区分服务、接口和协议等核心概念
- 不具备通用性:不适于描述TCP/IP之外的其它协议栈
- 混用接口与分层的设计:链路层和物理层一起被定义为网络接口层而非真正意义上的分层
- 模型欠缺完整性:未包含物理层与数据链路层,物理层与数据链路层是至关重要的部分
5.其他
5.1 TCP报文段、数据包、帧关系
报文(message)是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。
应用层:报文(message),一般指完整的信息,传输层实现报文交付,位于应用层的信息分组称为报文;
传输层:报文段(segment),组成报文的每个分组;
网络层:分组(packet)是网络传输中的二进制格式单元,数据包(datapacket)是TCP/IP通信协议传输中的数据单位;通过网络传输的数据基本单元,包含一个报头和数据本身,其中报头描述了数据的目的地及其与其他数据之间的关系,可以理解为数据传输的分组,我们将通过网络传输的基本数据单元称为数据报(Datagram);
链路层:帧(frame),数据链路层的协议数据单元,为了保证数据的可靠传输,把用户数据封装成帧;
物理层:PDU(bit),协议数据单元;
抓包,抓到的是传输层的包,packet/frame/Datagram/segment是存在于同条记录中的,这些是基于所在协议层的不同取了不同的名字。
5.2协议
网络协议三要素:
- 语义,语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
- 语法,语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。
- 时序,时序是对事件发生顺序的详细说明。(也可称为“同步”)。
协议栈(Protocol stack):网络中各层协议的总和
ISP 网络业务提供商
5.3 IPS(入侵防护系统)
- 入侵防护系统(IPS)整合; 防火墙技术和入侵检测技术,工作在In-Line(内联)模式,具备嗅探功能。
- IPS主要分为基于主机的IPS(HIPS)、基于网络的IPS(NIPS)和应用IPS(AIPS)。
- HIPS部署于受保护的主机系统中,可以监视内核的系统调用,阻挡攻击。
- NIPS布置于网络出口处,一般串联于防火墙于路由器之间(串接在被保护的链路中)。NIPS对攻击的误报(不是漏报)会导致合法的通信被阻断。
- AIPS一般部署在受保护的应用服务器前端。
二、物理层(The Physical Layer)
- 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
- 物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异。
- 用于物理层的协议也常称为物理层规程 (procedure)。
1.物理介质(media)
引导型介质
- 双绞线(Twisted pair)
- 光纤(fiber optics)
- 同轴电缆(Coaxial cable)
非引导型介质(信号自由传播)
- 无线电(radio)
- 卫星(satellite)
2.数据交换方式
①分组交换(packet-switching)
分组交换采用把一个个小的数据包存储转发传输来实现数据交换。
优点
- 设计简单
- 资源利用率很高。
缺点
- 不具有实时性
- 存在延时
- 会造成通信阻塞
- 存在无用的重复数据
- 会出现丢包的情况
②电路交换(circuit-switched)
电路连接的三个阶段:
1、建立连接
2、数据传输
3、释放连接
优点
- 传输速度快
- 实时
缺点
- 资源利用率低
- 新建连接需要占据一定的时间,甚至比通话的时间还长
电路交换的多路复用
- 频分多路复用FDM(Frequency Division Multiplexing)
- 时分多路复用TDM(Time Division Multiplexing)
3.信道复用
复用 (multiplexing) 是通信技术中的基本概念。
它允许用户使用一个共享信道进行通信,降低成本,提高利用率。
①频分复用
- 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
- 频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而不是数据的发送速率)。
②时分复用
- 时分复用则是将时间划分为一段段等长的时分复用帧(TDM 帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙(slot)。电路的传输速率等于帧速率乘以时隙中的比特数
③波分复用
- 波分复用就是光的频分复用。使用一根光纤来同时传输多个光载波信号。
④码分复用
- 各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰。
4.ITU标准
ITU标准 | 传输速率 |
---|---|
OC-3 | 155.52 Mbps |
OC-12 | 622.08 Mbps |
三、数据链路层(The Data Link Layer)(点到点)
1.功能(要解决的问题)
成帧 (Framing)
将比特流划分成“帧”的主要目的是为了检测和纠正物理层在比特传输中可能出现的错误,数据链路层功能需借助“帧”的各个域来实现
差错控制 (Error Control)
处理传输中出现的差错,如位错误、丢失等
流量控制 (Flow Control)
确保发送方的发送速率,不大于接收方的处理速率,避免接收缓冲区溢出
2.数据链路层提供的服务
1.无确认 无连接 服务( Unacknowledged connectionless )
- 接收方不对收到的帧进行确认
- 适用场景:误码率低的可靠信道;实时通信;
- 网络实例:以太网
2.有确认 无连接 服务( Acknowledged connectionless )
- 每一帧都得到单独的确认
- 适用场景:不可靠的信道(无线信道)
- 网络实例:802.11
3.有确认 有连接 服务( Acknowledged connection-oriented )
- 适用场景:长延迟的不可靠信道
3.成帧(Framing)
帧:数据链路层的协议数据单元,一个帧由一个数据字段和若干首部字段组成,其中网络层数据报就插在数据字段中。帧的结构由链路层协议规定
封装成帧:就是在一段数据前后分别添加首部和尾部,添加一些额外信息,确定帧的界限,然后就构成了一个帧
3.1要解决的关键问题:如何标识一个帧的开始
- 接收方必须能从物理层接收的比特流中明确区分出一帧的开始和结束,这个问题被称为帧同步或帧定界
- 关键:选择何种定界符?定界符出现在数据部分如何处理?
3.2成帧的方式
①带比特填充的定界符法
定界符:两个0比特之间,连续6个1比特,即01111110,0x7E
发送方检查有效载荷:若在有效载荷中出现连续5个1比特,则直接插入1个0比特
接收方的处理:
若出现连续5个1比特,
若下一比特为0,则为有效载荷,直接丢弃0比特;
若下一比特为1,则连同后一比特的0,构成定界符,一帧结束
优点
- 不依赖于字符编码集。
- 比特填充的方法由硬件实现较方便,可用于双向同时通信。
- 可连续发送而不必停等确认,数据速率较高。
- 能实现各种较完善的控制功能。
②物理层编码违例
核心思想:选择的定界符不会在数据部分出现
- 比特编码成信号通常包括一些冗余比特,这种冗余意味着这种冗余不会出现在常规数据中。
- 可以利用这些保留的信号来指示帧的开始和结束。
- 借用违规编码序列来定界帧的起始与终止,不需要任何填充技术,便能实现透明性。
4.差错控制(Error Control)
4.1背景
链路层存在的一个问题:信道的噪声导致数据传输问题
- 差错( incorrect ):数据发生错误
- 丢失( lost ):接收方未收到
- 乱序(out of order):先发后到,后发先到
- 重复(repeatedly delivery):一次发送,多次接收
解决方案:差错检测与纠正、确认重传
- 确认:接收方校验数据(差错校验),并给发送方应答,防止差错
- 定时器:发送方启动定时器,防止丢失
- 顺序号:接收方检查序号,防止乱序递交、重复递交
4.2差错检验于纠正
目标:保证一定差错检测和纠错能力的前提下,如何减少冗余信息量?
考虑的问题
- 信道的特征和传输需求
- 冗余信息的计算方法、携带的冗余信息量
- 计算的复杂度等
两种主要测量
- 检错码(error-detecting code)
在被发送的数据块中,包含一些冗余信息,但这些信息只能使接收方推断是否发生错误但不能推断哪位发生错误,接收方可以请求发送方重传数据主要用在高可靠、误码率较低的信道上,例如光纤链路偶尔发生的差错,可以通过重传解决差错问题
- 纠错码(error-correcting code)
发送方在每个数据块中加入足够的冗余信息,使得接收方能够判断接收到的数据是否有错,并能纠正错误(定位出错的位置)主要用于错误发生比较频繁的信道上,如无线链路也经常用于物理层,以及更高层(例如,实时流媒体应用和内容分发)使用纠错码的技术通常称为前向纠错(FEC,Forward Error Correction)
常用的检错码包括:
①奇偶检验 (Parity Check)
单比特(一维)奇偶校验(single-bit parity)是最简单、最基础的检错码。(只能检测单比特错误、不能纠错)
单比特(一维)奇偶校验:增加1位校验位,可以检查奇数位错误。
二维(two-dimensional parity)或者多维的奇偶校验码就是在空间上形成多元数组,比如下图的二维奇偶校验,如果哪一位出错,那么就可以迅速定位。
二维奇偶校验不仅可以检测单个比特错误,还可以纠正该错误
②校验和 (Checksum)
主要用于TCP/IP体系中的网络层和传输层
③循环冗余校验 (Cyclic Redundancy Check,CRC)
数据链路层广泛使用的校验方法
④汉明码
5.流量控制(Flow Control)
链路层存在的另一个问题:接收方的处理速率
- 接收方的接收缓冲区溢出
解决方案
基于反馈 (feedback-based) 的流量控制
接收方反馈,发送方调整发送速率
基于速率 (rate-based) 的流量控制
发送方根据内建机制,自行限速
6.以太网( Ethernet )
6.1 以太网概述
以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是目前应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET
- 无连接 : 发送方 接收方 之间 , 没有握手过程 ;
- 不可靠传输 : 数据帧没有编号 , 接收方不返回确认帧 , 差错帧直接丢弃 , 由高层纠错 ;
10BASE-T 以太网(BASE 指的是基带,前面的数字是指带宽(单位:Mb/s))
- 传输信号 : 基带(baseband)信号 ;
- 传输介质 : T 表示 双绞线(Twisted pair) , 当前采用的是 无屏蔽双绞线 ( UTP ) ;
- 10Base-2技术以细同轴电缆(thin coaxial cable)为传输介质,2表示最大传输距离185米(近似200米)。
- 10Base-5技术以粗同轴电缆(Thick coaxial cable)为传输介质,5表示最大传输距离不超过500米。
- 传输速率 : 10 Mbps ;
- 拓扑结构 : 物理 星型拓扑(star topology) , 逻辑 总线型拓扑(bus topology);
- 链路长度 : 每段双绞线长度最长 100 米 ;
- 编码方式 : 曼彻斯特编码 ;
- 介质访问控制方式 : CSMA / CD 协议 , Carrier Sense Multiple Access With Collision Detection , 载波监听多点接入 / 碰撞检测 协议 ;
6.2 访问控制协议
(1)CSMA/CD 载波监听多路访问/冲突检测 (有线网络)
- CSMA/CD的工作原理:
- 所有节点都共享网络传输信道,节点在发送之前,首先检测信道是否为空闲,如果信道为空闲则发送,否则就等待;
- 在发送信息后,再对冲突进行检测,当发现冲突时,取消发送
- 优缺点:
- 原理比较简单,技术上容易实现,网络中各工作站处于平等地位,不需要集中控制,不提供优先级控制
- 但是在网络负载 增大时,发送时间增长,发送效率急剧下降
(2)CSMA/CA (载波监听多路访问/冲突避免)(无线网络)
- CSMA/CA的工作原理:
- 先检测信道(进行载波监听)
- 发送数据帧后,若目的站正确收到此帧,则经过时间间隔SIFS(短帧间间隔)后,向源站发送确认帧ACK。
- 所有其他站都设置网络分配向量NAV(信道忙的持续时间),表明在这段时间内信道忙,不能发送数据。
- 当确认帧ACK结束时,NAV也就结束了。在经历了帧间间隔之后,接着回出现一段空闲时间,叫做争用窗口,表示在这段时间内有可能出现各站点争用信道的情况。
6.3 以太网通信标识-MAC地址
(1)MAC地址介绍
- MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC地址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的地址。
- MAC地址用于在网络中唯一标识一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
(2)MAC地址结构
- MAC地址的长度为48位(6个字节),通常表示为12个16进制数
- 如:00-16-EA-AE-3C-40
- 其中:
- 前6位16进制数
00-16-EA
代表网络硬件制造商的编号[OUI(Organizationally Unique Identifier)],它由IEEE(电气与电子工程师协会)分配 - 后6位16进制数
AE-3C-40
代表该制造商所制造的某个网络产品(如网卡)的系列号(厂家分配)。只要不更改自己的MAC地址,MAC地址在世界是惟一的
- 前6位16进制数
- MAC地址最高字节(MSB)的第二位(LSb)表示这个MAC地址是全局的还是本地的,即U/L(Universal/Local)位
- 如果为0,表示是全局地址。
- 所有的OUI这一位都是0。
- MAC地址最高字节(MSB)低第一位(LSb),表示这个MAC地址是单播还是多播
- 0表示单播
6.4 MAC帧
(1)MAC帧介绍
以太网的MAC帧格式有好几种,被广泛应用的是DIX Ethernet V2标准,还有一种是IEEE的802.3标准,该标准经过了多年的发展,已经出现了很多种子标准。DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网
(2)帧结构
- 帧头 : 6 字节目的地址 + 6 字节原地址 + 2字节类型标识 ; 类型指的是 网络层 协议类型 ;
- 数据部分 : 上层传下来的 IP 数据报 , 长度 46 ~ 1500字节 ;
- 最小长度来源 : 以太网最小帧长 64字节 , 除去帧头 14 字节 , 帧尾 4 字节 , 数据部分还剩下 46 字节 ;
- 最大长度来源 : 以太网最大 MTU 是 1500 字节 ;
- 帧尾 : 4 字节 , CRC 循环冗余校验的 FCS (FraIue check sequence)帧序列 ;
- 前导码 : 物理层 传输时 , 为了进行帧同步 , 在 以太网 MAC 帧前 , 加入 1 字节的前导码 ;
- 帧间隔 : 帧与帧之间有一定的空白间隙 , 如果一段信号没有电压变化 , 说明这是帧间隔 ;
(3)无效数据帧
- 帧的长度不是整数个字节
- 用收到的帧检验序列FCS查出有差错
- 收到的帧的MAC客户数据字段的长度不在46~1500字节之间
6.5 以太网上的设备
网络适配器 Adapter
- 计算机与外界局域网的连接是通过通信适配器(adapter)
- 适配器本来是主机内插入的一块网络接口板,这种接口板又称为网络接口卡(Network Interface Card,NIC)或称简为“网卡”。
- 适配器的一个重要功能就是进行数据串行传输和并行传输的转换。
- 主要组件是总线接口(bus interface)和链路接口(link interface)
- 适配器是一个半自主装置(semi-autonomous unit)
集线器 Hub
- 集线器的作用仅仅是将设备连接起来,实现互联,一般没有设置转发控制功能,起到总线功能
工作在物理层,连接到一个集线器的所有结点共享/属于(不是独立)一个冲突域。
每次只有一个结点能够发送数据,而其他的结点都处于接收数据的状态(多个节点可以同时接受数据帧)。连接到集线器的节点发送数据时,该节点将执行CSMA/CD(不是CA)介质访问控制方法。
在网络链路中串接一个集线器可以监听该链路中的数据包。
集线器不是基于MAC地址/网卡地址/IP地址完成数据转发(基于MAC地址的是网桥或交换机等),而是信源结点利用一对发送线将数据通过集线器内部的总线广播出去。
集线器使用双绞线连接工作站。
交换机 Switch
(1)介绍
- 交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备。 交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址
- 可以隔离每个LAN段的冲突域
(2)交换机工作原理
- 交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中
- MAC表并不是无限的,而且一般一段时间内要重置一次
- 交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发
- 如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。这一过程称为泛洪(flood)
- 广播帧和组播帧向所有的端口转发
(3)生成树协议(Spanning Tree Protocol,STP)
- 生成树协议工作原理:
- 任意一交换机中如果到达根网桥有两条或者两条以上的链路.生成树协议都根据算法把其中一条切断,仅保留一条.从而保证任意两个交换机之间只有一条单一的活动链路.因为这种生成的这种拓扑结构.很像是以根交换机为树干的树形结构.故为生成树协议
(4)虚拟局域网VLAN
- VLAN(virtual local area network,虚拟局域网)把一个LAN(local area network,局域网)划分为多个逻辑的LAN → VLAN,处于同一个VLAN的主机能直接互通,而处于不同VLAN的主机则不能直接互通,从而增加了局域网的安全
Vlan 优点
- 限制广播域。广播域被限制在一个VLAN内,节省了带宽,提高了网络的处理能力
- 增强了局域网的安全性
- 可灵活构建虚拟工作组
6.6 单工、双工、全双工
单工(Simplex):数据传输是单向的。通信双方中,一方固定为发送端,另一方则固定为接收端,数据只能沿一个方向传输,类似汽车的单行道。
半双工(Half Duplex):数据传输是双向的。数据在通信双方之间能够在两个方向上进行发送,但不能同时发送,因此又被称为双向交替通信。无线对讲机就是一种半双工设备,在同一时间内只允许一方讲话。
全双工(Full Duplex):数据传输是双向的。通信双方在发送数据的同时也能够接收数据,两者可以同步进行,类似汽车的双向车道。目前我们打电话,以及手机的通话,都是全双工的例子
7.链路种类
网络链路有两种类型:点对点链路和广播链路。
点对点链路由链路一端的单个发送方和链路另一端的单个接收方组成,如点对点协议(PPP)和高级数数据链路控制(HDLC)。
广播链路能够让多个发送和接收结点都连接到相同的、单一的、共享的广播信道上。
7.1点对点协议(Point-to-Point Protocol,PPP)
(1)PPP介绍
- 点对点协议(Point to Point Protocol,PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议
(2)PPP特点
- PPP具有动态分配IP地址的能力,允许在连接时刻协商IP地址
- PPP支持多种网络协议,比如TCP/IP、NetBEUL、NWLINK等
- PPP具有错误检测能力,但不具备纠错能力,所以ppp是不可靠传输协议
- 无重传的机制,网络开销小,速度快。
- PPP具有身份验证功能。
- PPP可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如SDH),PPP也用于Internet接入。
(3)帧格式
(4)相关协议
链路控制协议(link-control protocols,LCP):一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。
网络控制协议(network-control protocols,NCP):协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议
7.2 多路访问协议(multiple access protocols)
对于广播链路而言,因为所有结点都能传输帧,所以多个结点同时传输帧时,传输的帧在所有的接收方处发生碰撞,导致没有一个接收结点能够有效地获得任何传输的帧。解决这个问题则需要多路访问协议,结点通过这些协议来规范它们在共享的广播信道上的传输行为,从而协调多个发送和接收结点对一个共享广播信道的访问。
多路访问协议分为3种类型:
- 信道划分协议(channel partitioning protocol)
- 随机接入协议(random access protocol)
- 轮流协议(taking-turns protocol)
(1)信道划分协议(channel partitioning protocol)
- 时分多路复用(Time Division Multiple,TDM):TDM将时间划分为时间帧,并进一步划分每个时间帧为N个时隙,然后把每个时隙分配各N个结点中的一个,无论何时有结点在有分组要发送时,他在循环的TDM帧中指派给他的时隙内传输分组比特。
TDM消除了碰撞个且非常公平:每个结点在每个帧时间内得到了专用的传输速率R/Nbps的平均速率,然而它有两个主要缺陷:首先,结点被限制于R/N bps的平均速率,即使当它是唯一有分组要发送的结点时。其次,结点必须总是等待他在传输序列中的轮次 ,即使他是唯一一个有帧要发送的结点。
- 频分多路复用(Frequency Division Multiple,FDM):FDM将R bps信道划分为不同的频段(每个频道具有R/N带宽)并把每个频率分配给N个结点中的一个。
FDM具有和TDM同样的优点和缺点:它避免了碰撞,在N个结点之间公平地划分了带宽。但是他也限制了一个结点只能使用R/N的带宽,即使当他是唯一一个有分组要发送的结点时。
- 码分多址(Code Division Multiple,CDMA):CDMA对每一个结点分配一种不同的编码,然后每个结点用它唯一的编码来对它发送的数据进行编码。如果精心选择这些编码,就能做到使不同的结点同时传输,并且他们各自相应的接收方仍能正确接收发送方编码的数据,而不在乎其他结点的干扰传输。
(2)随机接入协议(random access protocol)
在随机接入协议中,一个传输结点总是以信道的全部速率(即R bps)进行发送。当有碰撞时,涉及碰撞的每个结点反复地重发它的帧,到该帧无碰撞地通过为止。但是当一个结点经历一次碰撞时,他不必立刻重发该帧。相反,它在重发该帧前等待一个随机时延。涉及碰撞的每个结点独立地选择随机时延。
比较常见的随机接入协议有:ALOHA协议和载波侦听多路访问协议(CSMA)。以太网采用了 CSMA 协议。
ALOHA协议分为时隙ALOHA协议和纯ALOHA协议
1.时隙 ALOHA 协议
在对时隙 ALOHA 的描述中,我们做下列假设:
① 所有数据帧大小相同,假定所有帧由 L LL 比特组成;
② 时间被划分成等长的时隙,每个时隙长度为 L / R 秒;
③ 节点只能在时隙开始时刻发送数据帧(实际上是节点上的网络适配器,或称为网卡,来发送数据帧)。
④ 节点间时钟同步,每个节点都知道时隙何时开始。
⑤ 如果在一个时隙中有多个节点发送数据帧,则节点在该时隙结束之前检测到该冲突事件。
令P是一个概率。在每个运行时隙 ALOHA 协议的节点中,它们所执行的操作很简单:
- 当节点有新的数据帧时,在下一个时隙发送。
- 如果没有冲突,该节点成功地传输它的数据帧,从而不需要考虑重传该帧。(如果该节点有新帧,它可以在下一个时隙继续发送新的帧。)
- 如果有冲突,该节点在时隙结束之前检测到这次冲突,并在下一个时隙以概率P重传该帧,直至成功。
优点:
① 当某节点是唯一活跃的节点时,时隙 ALOHA 允许该节点以全速R连续传输。
② 高度分散化:每个节点检测碰撞并独立地决定什么时候重传。
③ 简单。
缺点:
① 当有多个活跃节点时,会出现冲突,浪费时隙。
② 会有空闲时隙,因为所有活跃节点由于概率传输策略会节制传输。
③ 节点也许能以远小于分组传输时间检测到冲突。
④ 时钟同步。
2.纯 ALOHA 协议
第一个 ALOHA 协议实际上是一个非时隙、完全分散的协议,也称为纯 ALOHA 协议,它更加简单、无需时钟同步。
令 p pp 是一个概率。在每个运行时纯 ALOHA 协议的节点中,它们所执行的操作很简单:
- 当有新的数据帧生成时,节点立刻将该帧完整地传输进广播信道,因此冲突的可能性增大。
- 如果一个传输的帧与其他传输发生冲突,这个节点立即以概率 p pp 重传该帧;否则,该节点等待一个帧传输时间后,再以概率P重传该帧,重复以上过程直至成功。
纯ALOHA协议的最大效率是时隙ALOHA的一半。这就是完全分散的ALOHA协议所要付出的代价。
载波监听多路访问(Carrier Sense Multiple Access,CSMA)协议
载波侦听:一个结点在传输前先听信道,如果来自另一个结点的帧正向信道上发送,结点则等待直到检测到一小段时间没有传输,然后开始传输,由于信号传播延迟,冲突仍然会发生
具有冲突检测的载波监听多路访问(Carrier Sense Multiple Access/collision detection,CSMA/CD)协议
碰撞检测:当一个传输结点在传输时一直在侦听此信道,如果它检测到另一个结点正在传输干扰帧,它就停止传输,在重复“侦听-当空闲时传输”循环之前等待一段随机时间。
注意这里的冲突检测(Collision Detection)并不是说只有 CSMA/CD 协议有冲突检测,而其他的 CSMA 协议没有冲突检测。事实上,只要是随机访问协议都会有冲突检测机制,但冲突检测机制有所不同,有的协议只能靠接收方的确认才知道是否发生冲突,而 CSMA/CD 协议中的 CD 强调的是数据帧传输过程的同时能够监听是否有其他信号在使用该信道>(边发边听)。
CSMA/CD 中的冲突检测在有线局域网中容易实现,可以通过测量信号强度,比较发射信号强度与接收信号强度来实现,实际上以太网广播链路就是使用具有二进制指数退避的 CSMA/CD 协议来实现的>;但是冲突检测在无线局域网中很难实现,因为接收信号强度会淹没在本地发射信号强度下(802.11 无线局域网是使用 CSMA/CA 实现的,CA 指冲突避免)。
二进制指数退避算法简练地解决了发生冲突后随机等待的时间量如何确定的问题。当传输一个给定的数据帧时,在该帧经历了一连串的 n 次 (n < 10) 碰撞后,节点随机地从 { 0 , 1 , 2 , 3 , . . . , 2 n − 1 }中选择一个K值,等待的时间量为 K ⋅ 512 比特的传输延迟;在 10 次或更多次碰撞之后,从 { 0 , 1 , 2 , 3 , . . . , 1023 }中随机选择 K 。
下面给出 CSMA/CD 协议的效率。令dtprop表示信号能量在任意两个节点之间传播所需的最大时间,dtrans表示传输一个最大长度的帧的时间。
当dtprop趋近于 0 或者dtrans趋近于无穷时,效率趋近于1
CSMA/CD 协议远优于 ALOHA,并且简单、分散。
(3)轮流协议(taking-turns protocol)
多路访问协议的两个理想特性是:
1.当只有一个结点活跃时,该结点具有R bps的吞吐量
2.当有M个结点活跃时,每个活跃结点的吞吐量接近R/M bps。
ALOHA和CSMA只满足第一个特性。而轮流协议能够满足两个特性。轮流协议中比较重要的两个协议是轮询协议(polling protocol)和令牌传递协议(token-passing protocol)
轮询协议:要求这些结点之一要被指定为主结点。主结点以循环的方式轮询每个结点。特别是,主结点告诉每个结点能够传输的帧的最多数量。
轮询协议消除了困扰随机接入协议的碰撞和空时隙,这使得轮询取得的效率高得多。但是他也有一些缺点,第一个缺点是引入了轮询时延,即同时一个结点“它可以传输”所需的时间(只有一个结点时使得速率小于R bps)。第二个缺点是如果主结点故障,整个信道都变得不可操作。
令牌传递协议:一个称为令牌的小的特殊帧在结点之间以某种固定的次序传递。当一个结点收到令牌时,仅当它有一些帧要发送时,他才持有这个令牌。否则,他立即向下一个结点转发该令牌。
令牌传递是分散的,并有很高的效率,但是他也有一些问题。如果一个结点故障,则会导致整个信道崩溃。或者如果一个结点偶然网际了释放令牌,则必须调用某些恢复步骤使令牌返回到循环中来。
8.弹性技术环——RPR技术
- RPR与FDDI一样使用双环结构。
- RPR 环中每一个节点都执行 SRP 公平算法(不是 DPT、MPLS)。
- 传统的FDDI环,当源结点问目的节点成功发送一个数据帧之后,这个数据帧由源结点从环中回收。但 RPR 环,这个数据帧由目的结点从环中回收。
- RPR·采用自愈环设计思路,能在 50ms (不是30ms)时间内隔离故障结点和光纤段,提供 SDH 级的快速保护和恢复。
- RPR 可以对不同的业务数据分配不同的优先级,是一种用于直接在光纤上高效传输 IP 分组的传输技术。
- 两个 RPR 结点间的裸光纤最大长度可达 100 公里。
- RPR的外环(顺时针) 和内环(逆时针)都可以用统计复用的方法传输分组和控制分组(不是频分复用)。
四、网络层(The Network Layer)(主机到主机)
1.网络层概述
网络层在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
提供尽力而为的服务(best-effort-service)
2.网络层关键功能
- 路由(控制面)
- 选择数据报从源端到目的端的路径
- 核心:路由算法与协议
- 转发(数据面)
- 将数据报从路由器的输入接口传送到正确的输出接口
3. Internet网际协议
3.1 IPv4 协议及其相关技术(Internet Protocol Version 4)
3.1.1 基本概念
IPv4协议,网际协议版本4,一种无连接的协议,是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6
internet协议执行两个基本功能
- 寻址(addressing)
- 分片(fragmentation)
3.1.2 IPv4数据报格式
版本: 4 bit ,表示采用的IP协议版本
首部长度: 4 bit,表示整个IP数据报首部的长度
区分服务: 8 bit ,该字段一般情况下不使用
总长度: 16 bit ,表示整个IP报文的长度,能表示的最大字节为2^16-1=65535字节
标识: 16 bit , IP软件通过计数器自动产生,每产生1个数据报计数器加1;在ip分片以后,用来标识同一片分片
标志: 3 bit,目前只有两位有意义。
- MF,置1表示后面还有分片,置0表示这是数据报片的最后1个;
- DF,不能分片标志,置0时表示允许分片
片偏移: 13 bit,表示IP分片后,相应的IP片在总的IP片的相对位置
生存时间TTL(Time To Live) :8 bit,表示数据报在网络中的生命周期,用通过路由器的数量来计量,即跳数(每经过一个路由器会减1)
协议:8 bit,标识上层协议(TCP/UDP/ICMP…)
首部校验和:16 bit ,对数据报首部进行校验,不包括数据部分
源地址:32 bit,标识IP片的发送源IP地址
目的地址:32 bit,标识IP片的目的地IP地址
选项:可扩充部分,具有可变长度,定义了安全性、严格源路由、松散源路由、记录路由、时间戳等选项
填充:用全0的填充字段补齐为4字节的整数倍、
3.1.3 数据报分片
分片原因
数据报长度大于传输链路的MTU(Maximum Transmission Unit,最大传输单元)
分片策略
- 允许途中分片:根据下一跳链路的MTU实施分片
- 不允许途中分片:发出的数据报长度小于路径MTU(路径MTU发现机制)
重组策略
- 途中重组,实施难度太大
- 目的端重组(互联网采用的策略)
- 重组所需信息:原始数据报编号、分片偏移量、是否收集所有分片
IPv4分片策略
IPv4分组在传输途中可以多次分片
- 源端系统,中间路由器(可通过标志位设定是否允许路由器分片,DF标志位)
IPv4分片只在目的IP对应的目的端系统进行重组
IPv4分片、重组字段在基本IP头部
- 标识、标志、片偏移
IPv6分片机制有较大变化(见IPv6部分的介绍)
分组 (packet) 与 帧(frame)的关系
3.1.4 IP协议功能及报头字段总结
网络层基本功能
- 支持多跳寻路将IP数据报送达目的端:目的IP地址
- 表明发送端身份:源IP地址
- 根据IP头部协议类型,提交给不同上层协议处理:协议
其它相关问题
- 数据报长度大于传输链路的MTU的问题,通过分片机制解决:标识、标志、片偏移
- 防止循环转发浪费网络资源(路由错误、设备故障…),通过跳数限制解决:生存时间TTL
- IP报头错误导致无效传输,通过头部机校验解决:首部校验和
3.2 IP地址
3.2.1概述
- IP地址,网络上的每一台主机(或路由器)的每一个接口都会分配一个全球唯一的32位的标识符
- 将IP地址划分为固定的类,每一类都由两个字段组成
- 网络号相同的这块连续IP地址空间称为地址的前缀,或网络前缀
- IP地址共分为A、B、C、D、E五类,A类、B类、C类为单播地址
- IP地址的书写采用点分十进制记法,其中每一段取值范围为0到255
IP特殊地址
3.2.2 子网划分
- 子网划分(subnetting),在网络内部将一个网络块进行划分以供多个内部网络使用,对外仍是一个网络
- 子网(subnet ),一个网络进行子网划分后得到的一系列结果网络称为子网
- 子网掩码(subnet mask ),与 IP 地址一一对应,是32 bit 的二进制数,置1表示网络位,置0表示主机位
- 子网划分减少了 IP 地址的浪费、网络的组织更加灵活、便于维护和管理
地址类别 | A类1 B类128 C类192~223 |
---|---|
网络地址 | 网络位不变,主机位变0 |
直接广播地址 | 网络位不变,主机位变1 |
主机号 | 网络位变0,主机位不变 |
子网内第一个可用IP地址 | 网络地址+1 |
子网内最后一个可用IP地址。 | 直接广播地址-1 |
受限广播地址 | 255.255.255.255 |
例:将172.0.35.128/25划分为3个子网,依次能容纳55,25,2台主机,则三个子网的掩码和IP地址段分别是多少
步骤:
计算2n-2>=主机数量,求出最小的n值。
n值即为主机号的位数(末尾0的个数)
将子网掩码的二进制转换为点分十进制。
可用的IP地址段分别为(设给出地址为X.X.X.p)
注意,不同子网n值不同 | 开始 | 结束 |
---|---|---|
子网1 | X.X.X.p+1 | X.X.X.p+1+2n-3 |
子网2 | X.X.X.q+3 | X.X.X.q+3+2n-3 |
子网3 | X.X.X.k+3 | X.X.X.k+3+2n-3 |
答案:
子网网络地址 | 子网掩码 | 可用IP地址段 |
---|---|---|
子网1(55台) | 255.255.255.192 | 172.0.35.129-172.0.35.190 |
子网2(25台) | 255.255.255.224 | 172.0.35.193-172.0.35.222 |
子网3(25台) | 255.255.255.224 | 172.0.35.225-172.0.35.254 |
3.3 DHCP动态主机配置协议
DHCP :动态主机配置协议
- 当主机加入IP网络,允许主机从DHCP服务器动态获取IP地址
- 可以有效利用IP地址,方便移动主机的地址获取
工作模式:客户/服务器模式( C/S )
基于 UDP 工作,服务器运行在 67 号端口, 客户端运行在 68 号端口
- DHCP 客户从UDP端口68以广播形式向服务器发送发现报文(DHCP DISCOVER)
- DHCP 服务器广播发出提供报文(DHCP OFFER)
- DHCP 客户从多个DHCP服务器中选择一个,并向其以广播形式发送DHCP请求报文(DHCP REQUEST)
- 被选择的DHCP服务器广播发送确认报文(DHCP ACK)
3.4 ARP(Address Resolution Protocol)地址解析协议
背景
网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址二获取的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的。
注:因为下层协议是通过MAC地址来确定各自身份的,所以下层发送必须要MAC地址
IP 与 MAC地址
3.5 网络地址转换(NAT)
定义
网络地址转换(NAT)用于解决IPv4地址不足的问题,是一种将私有(保留)地址转化为公有IP地址的转换技术
私有IP地址:
A类地址:10.0.0.0–10.255.255.255
B类地址:172.16.0.0–172.31.255.555
C类地址:192.168.0.0–192.168.255.255
NAT工作机制
- 出数据报:外出数据报用 NAT IP地址(全局), 新port # 替代 源IP地址(私有), port #
- NAT转换表:每个 (源IP地址, port #)到(NAT IP地址, 新port #) 映射项
- 入数据报:对每个入数据报的地址字段用存储在NAT表中的(源IP地址, port #)替代对应的 (NAT IP地址, 新port #)
- NAT根据不同的IP上层协议进行NAT表项管理
TCP,UDP,ICMP - 传输层TCP/UDP拥有16-bit 端口号字段
所以一个WAN侧地址可支持60,000个并行连接
NAT的优势
- 节省合法地址,减少地址冲突
- 灵活连接Internet
- 保护局域网的私密性
3.6 ICMP: 互联网控制报文协议(Internet Control Message Protocol)
ICMP: 互联网控制报文协议
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告(error reporting)
- 由主机和路由器用于网络层信息的通信
- ICMP 报文携带在IP 数据报中: IP上层协议号为1
ICMP报文类型
ICMP 差错报告报文
- 终点不可达:不可达主机、不可达网络,无效端口、协议
ICMP 询问报文
- 回送请求/回答 (ping使用)
ICMP 报文格式
- ICMP报文的前 4 个字节包含格式统一的三个字段:类型、代码、检验和
- 相邻的后四个字节内容与ICMP的报文类型有关
ICMP报文类型及功能
4.路由算法
主机通常直接与一台路由器相连接,该路由器即为该主机的默认路由器(default router) ,又称该主机的第一跳路由器(first-hop router)
每当主机发送一个分组时,该分组被传送给它的默认路由器。
源主机的默认路由器称作源路由器(source router) ,目的主机的默认路由器称作目的路由器(destination router)。
一个分组从源主机到目的主机的路由选择问题显然可归结为从源路由器到目的路由器的路由选择问题。
路由算法须满足的特性:
- 正确性
- 简单性
- 鲁棒性
- 稳定性
- 公平性
- 有效性
根据路由算法是否随网络的通信量或拓扑自适应划分
- 静态路由选择策略(非自适应路由选择):手工配置、路由更新慢、优先级高
- 动态路由选择策略(自适应路由选择):路由更新快、定期更新、及时响应链路费用或网络拓扑变化
4.1 距离向量路由
算法基本思想
- 每个节点周期性地向邻居发送它自己到某些节点的距离向量;
- 当节点x接收到来自邻居的新DV估计,它使用Bellman-Ford 方程更新其自己的DV :
Dx(y) ← minv{c(x,v) + Dv(y)} for each node y ∊ N - 上述过程迭代执行,Dx(y)收敛为实际最小费用 dx(y)
距离向量算法特点:迭代的、分布式的
- 每次本地迭代由下列引起: 本地链路费用改变、邻居更新报文
- 分布式:各节点依次计算,相互依赖
注:路由器只掌握物理相连的邻居以及链路费用
5. Internet路由协议
5.1 路由选择协议RIP( Routing Information Protocol)
概述
- 路由选择协议RIP是基于距离矢量算法的协议
- 使用跳数衡量到达目的网络的距离
- RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”
- RIP 允许一条路径最多只能包含 15 个路由器
- RIP协议的基本思想
- 仅和相邻路由器交换信息
- 路由器交换的内容是自己的路由表
- 周期性更新:30s
工作过程
- 周期性更新
小结
RIP协议的特点
- 算法简单,易于实现
- 收敛慢
- 需要交换的信息量较大
RIP协议的适用场合
- 中小型网络
RIP协议的防环路机制
- 触发更新
- 毒性反转
- 水平分割
- 其他
5.2 BGP-外部网关路由协议
路由协议
- 内部网关协议 IGP (Interior Gateway Protocol): 有 RIP 和、OSPF、ISIS 、IGRP等多种具体的协议
- 外部网关协议 EGP(External Gateway Protocol):目前使用的协议就是 BGP
边界网关协议BGP (Border Gateway Protocol)
目前互联网中唯一实际运行的自治域间的路由协议
一个BGP发言人使用TCP(不是UDP)与其他自治系统的BGP发言人交换路由信息
BGP协议交换路由信息的节点数是以自治系统数为单位的,BGP交换路由信息的节点数不小于自治系统数
BGP-4采用路由向量协议,而RIP采用距离向量协议。
BGP发言人通过update而不是noticfication分组通知相邻系统,使用update分组更新路由时,一个报文只能增加一条路由
open分组用来与相邻的另一个BGP发言人建立关系,两个BGP发言人需要周期性地(不是不定期)交换keepalive分组来确认双方的相邻关系
BGP路由选择协议来执行中使用的四个分组为打开(open)、更新(update)、保活(keepalive)和通知(notification)分组
BGP功能
- eBGP:从相邻的AS获得网络可达信息
- iBGP: 将网络可达信息传播给AS内的路由器
- 基于网络可达信息和策略决定到其他网络的“最优”路由
BGP会话: 两个BGP路由器通过TCP连接交换BGP报文
- 通告到不同网络前缀的路径,即路径向量协议
OSPF协议
- OSPF是内部网关协议的一种,采用最短路径算法,使用分布式链路状态协议。
- 对于规模很大的网络,OSPF通过划分区域来提高路由更新收敛速度。每个区域有32位的区域标识符,区域内路由器不超过200个。
- 一个OSPF区域内每个路由器的链路状态数据库包含着本区域(不是全网)的拓扑结构信息,不知道其他区域的网络拓扑。
- 链路状态“度量”主要指费用、距离、延时、带宽等,没有路径。
- 当链路状态发生变化时用洪泛法向所有(不是相邻)路由器发送此信息。
- 链路状态数据库中保存的是全网的拓扑结构图,而非一个完整的路由表,而不是只保存下一跳路由器的数据。
6.路由器的工作原理
6.1 路由器概述
路由器是互联网最主要的网络设备,包含2个核心功能
- 控制层:运行各种路由协议:BGP、OSPF、RIP,学习去往不同目的的转发路径:路由表
- 数据层:根据上述路由表,将收到的IP分组转发到正确的下一跳链路
6.2 路由器控制层
- 路由器可同时运行多个路由协议
- 路由器也可不运行任何路由协议,只使用静态路由和直连路由
- 路由管理根据路由优先级,选择最佳路由,形成核心路由表
- 控制层将核心路由表下发到数据层,形成转发表(FIB)
- 若存在多个“去往同一目的IP前缀”的不同类型路由,路由器根据优先级选择最佳路由
- 优先级数值越小,优先级越高
6.3 路由器数据层
路由器中IP报文转发核心功能
- 链路层解封装,IP头部校验
- 获取报文目的IP地址
- 用目的IP地址,基于最长前缀匹配规则查询转发表
- 查询失败,丢弃报文
- 查询成功
- 获取转发出接口和下一跳IP地址
- IP头部“TTL”字段值减1,重新计算IP头部“校验和”
- 重新进行链路层封装,发送报文
注:普通IP报文转发过程中,路由器不查看传输层及以上层协议的内容
- IP报文在路由器转发前后的变化
- 链路层封装更新,IP头部“TTL”减1,IP头部“校验和”更新
- 数据报在不同硬件单元的处理
- 报文输入的接口卡
- 链路层解封装
- 转发表查询(该工作在输入接口卡处理)
- 通过交换结构将报文排队发往目的接口卡(发送过快将产生拥塞)
- 交换结构
- 从输入接口卡发往输出接口卡
- 报文输出的接口卡
- 从交换结构接收报文(排队进行后续处理,到达太快将产生拥塞)
- 链路层封装
- 从输出接口发送报文
- 报文输入的接口卡
3种典型的交换结构
7. IPv6协议
11.1 IPv6数据报格式
初始动机:应付“32-bit地址空间耗尽”问题(CIDR和NAT都无法从根本上解决地址短缺问题),增加地址空间
双栈(dual stack):使IPv6具有IPv4的完整实现
版本:指明了协议版本,总是6。
优先级:区分数据报的类别和优先级。
流标签:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签。
下一个首部:标识下一个扩展首部或上层协议首部。
跳数限制:相当于IPv4的TTL。
11.2 IPv4 VS IPv6
- IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
- IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。
- IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
- IPv6支持即插即用(即自动配置),不需要DHCP协议。
- IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
- IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
- ICMPv6:附加报文类型“分组过大”。
- IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
- IPv6取消了协议字段,改成下一个首部字段。
- IPv6取消了总长度字段,改用有效载荷长度字段。
- IPv6取消了服务类型字段。
IPv6地址表示形式
五、传输层(The Transport Layer)(端到端)
1.传输层概述
- 传输层位于应用层和网络层之间:
- 基于网络层提供的服务,向分布式应用程序提供通信服务
- 按照因特网的“端到端”设计原则:
- 应用程序只运行在终端上,即不需要为网络设备编写程序
- 站在应用程序的角度:
- 传输层应提供进程之间本地通信的抽象:即运行在不同终端上的应用进程仿佛是直接连在一起的
1.1 套接字(Socket)
- 设想在应用程序和网络之间存在一扇“门”:
- 需要发送报文时:发送进程将报文推到门外
- 门外的运输设施(因特网)将报文送到接收进程的门口
- 需要接收报文时:接收进程打开门,即可收到报文
- 在TCP/IP网络中,这扇“门”称为套接字(socket),是应用层和传输层的接口,也是应用程序和网络之间的API
1.2 传输层提供的服务
因特网的网络层提供“尽力而为”的服务:
- 网络层尽最大努力在终端间交付分组,但不提供任何承诺
- 具体来说,不保证交付,不保证按序交付,不保证数据完整,不保证延迟,不保证带宽等
传输层的有所为、有所不为:
- 传输层可以通过差错恢复、重排序等手段提供可靠、按序的交付服务
- 但传输层无法提供延迟保证、带宽保证等服务
最低限度的传输服务:
- 将终端-终端的数据交付扩展到进程-进程的数据交付
- 报文检错
增强服务:
- 可靠数据传输
- 流量控制
- 拥塞控制
因特网传输层通过UDP协议和TCP协议,向应用层提供两种不同的传输服务:
- UDP协议:仅提供最低限度的传输服务
- TCP协议:提供基础服务和增强服务
2.传输层基本服务–复用和分用 (multiplexing and de-multiplexing)
2.1复用和分用概述
传输层基本服务:将主机间交付扩展到进程间交付,通过复用和分用实现
- 复用:发送方传输层将套接字标识置于报文段中,交给网络层
- 分用:接收方传输层根据报文段中的套接字标识,将报文段交付到正确的套接字
2.2 套接字标识与端口号
- 端口号是套接字标识的一部分:
- 每个套接字在本地关联一个端口号
- 端口号是一个16比特的数
- 端口号的分类:
- 熟知端口:0~1023,由公共域协议使用
- 注册端口:1024~49151,需要向IANA注册才能使用
- 动态和/或私有端口:49152~65535,一般程序使用
- 报文段中有两个字段携带端口号
- 源端口号:与发送进程关联的本地端口号
- 目的端口号:与接收进程关联的本地端口号
2.3 TCP/UDP套接字 (复用和分用)
UDP套接字
- 使用<IP地址,端口号>二元组标识UDP套接字
- 服务器使用一个套接字服务所有客户
TCP套接字
- 使用<源IP地址,目的IP地址,源端口号,目的端口号> 四元组标识连接套接字
- 服务器使用一个监听套接字和多个连接套接字服务多个客户,每个连接套接字服务一个客户
3.无连接传输:UDP(User Datagram Protocol)
3.1 UDP报文段结构
- UDP报文:
- 报头:携带协议处理需要的信息
- 载荷(payload):携带上层数据
- 用于复用和分用的字段:
- 源端口号
- 目的端口号
- 用于检测报文错误的字段:
- 报文总长度
- 校验和(checksum)
3.2 UDP校验和(checksum)
校验和字段的作用: 对传输的报文段进行检错
3.3 为什么需要UDP
- 应用可以尽可能快地发送报文:
- 无建立连接的延迟
- 不限制发送速率(不进行拥塞控制和流量控制)
- 报头开销小
- 协议处理简单
3.4 UDP适合哪些应用?
- 容忍丢包但对延迟敏感的应用:
如流媒体(streaming multimedia)、网络电话(Internet phone)、视频会议(video conferencing) - 以单次请求/响应为主的应用:
如DNS - 若应用要求基于UDP进行可靠传输:
由应用层实现可靠性
4.面向连接的传输:TCP(Transmission Control Protocol)
4.1 TCP报文段结构
- 最大段长度(MSS):
- TCP段中可以携带的最大应用层数据字节数>
- 建立连接时,每个主机可声明自己能够接受的MSS,缺省为536字节
- 窗口比例因子(window scale):
- 建立连接时,双方可以协商一个窗口比例因子
- 实际接收窗口大小 = window size * 2^window scale
- 选择确认(SACK):
- 最初的TCP协议只使用累积确认
- 改进的TCP协议引入选择确认,允许接收端指出缺失的数据字节
4.2 可靠传输
数据包有序、无差错到达接收端
如何实现可靠传输,基本原则是什么?
- 利用ACK确认
- 重传机制
- 差错检测
经完全可靠信道的可靠数据传输:rdt1.0
经具有比特差错信道的可靠数据传输:rdt2.0
经具有比特差错的丢包信道的可靠数据传输:rdt3.0
4.3 流水线技术(Pipeline technology)
由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
①GBN 协议(回退 N 步协议)
SW(stop and waiting)协议的缺点:
GBN协议:
发送窗口
发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。
发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
累积确认(Cumulative acknowledgements)
- 接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。
- 优点:容易实现,即使确认丢失也不必重传。
- 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。
如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。
可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。
②SR 协议(选择重传协议 selective repeat )
SR 协议在 GBN 协议的基础上进行了改进,它通过让发送方仅重传那些它怀疑在接收方出错(即丢失或受损)的分组而避免了不必要的重传。选择重传协议只重传真正丢失的分组。
- 选择重传的接收窗口与发送窗口一样大
- 选择重传协议允许与接收窗口一样多的分组失序到达,并保存这些失序到达的分组,直到连续的一组分组被交付给应用层。
- 标记发出分组,当ACK=Sf 时,将窗口滑过所有连续的已确认的分组
- 如果还有未确认的分组,则重发所有检测到的未被确认的分组并重启计时器
- 如果所有分组都被确认了则停止计时器
- 确认,确认号(ACK)只定义完好接收的那一个分组的序号,并不反馈任何其他分组的信息
③TCP 可靠通信的具体实现
- TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口。
- TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。
- TCP 两端的四个窗口经常处于动态变化之中。
- TCP连接的往返时间 RTT 也不是固定不变的。需要使用特定的算法估算较为合理的重传时间
5. TCP流量控制
TCP接收端
- 使用显式的窗口通告,告知发送方可用的缓存空间大小
- 在接收窗口较小时,推迟发送确认
- 仅当接收窗口显著增加时,通告新的窗口大小
TCP发送端
- 使用Nagle算法确定发送时机
- 使用接收窗口限制发送的数据量,已发送未确认的字节数不超过接收窗口的大小
Nagle算法的解决方法:
- 在新建连接上,当应用数据到来时,组成一个TCP段发送(那怕只有一个字节)
- 在收到确认之前,后续到来的数据放在发送缓存中
- 当数据量达到一个MSS(最大报文长度)或上一次传输的确认到来(取两者的较小时间),用一个TCP段将缓存的字节全部发走
Nagle算法的优点:
- 适应网络延时、MSS长度及应用速度的各种组合 常规情况下不会降低网络的吞吐量
6.拥塞控制(congestion-control)
当网络的吞吐量达到一定的限制后,会发生拥塞现象,那么此时发送的数据包会因为延迟无法到达接收端,因为超时重传机制所以发送端会重新发送数据包,那么网络带宽中本来就很拥塞,那么的话再发数据包就会更加拥塞,由此会形成恶性循环,如果不加控制的话,那么最终网络的有效吞吐量将接近为0.
发送方根据自己感知的网络拥塞程度,限制其发送速率
6.1 拥塞控制的类型
- 网络辅助的拥塞控制
- 路由器向端系统提供显式的反馈,例如:
- 设置拥塞指示比特
- 给出发送速率指示
- ATM、X.25采用此类方法
- 路由器向端系统提供显式的反馈,例如:
- 端到端拥塞控制
- 网络层不向端系统提供反馈
- 端系统通过观察丢包和延迟,自行推断拥塞的发生
- TCP采用此类方法
6.2 TCP拥塞控制要解决的问题
发送方如何感知网络拥塞?
发送方利用丢包事件感知拥塞:
- 拥塞造成丢包和分组延迟增大
-无论是丢包还是分组延迟过大,对于发送端来说都是丢包了
- 拥塞造成丢包和分组延迟增大
丢包事件包括:
-重传定时器超时(Timeout)
-发送端收到3个重复的ACK(3 duplicate ACK-s)
发送方采用什么机制限制发送速率?
- 发送方使用拥塞窗口cwnd限制已发送未确认的数据量:
LastByteSent-LastByteAcked <= cwnd
- cwnd随发送方感知的网络拥塞程度而变化
发送方感知到网络拥塞后,采取什么策略调节发送速率?
①AIMD(Additive Increase Multiplicative Decrease)
- 乘性减(Multiplicative Decrease)
- 发送方检测到丢包后,将cwnd的大小减半(但不能小于一个MSS)
- 目的:迅速减小发送速率,缓解拥塞
- 加性增(Additive Increase)
- 若无丢包,每经过一个RTT,将cwnd增大一个MSS,直到检测到丢包
- 目的:缓慢增大发送速率,避免振荡
注:MSS是发送速率TCP建立连接时双方确定的每一个报文段所能承载的最大数据长度
②TCP慢启动
- 慢启动的策略:
- 每经过一个RTT,将cwnd加倍
- 慢启动的具体实施:
- 每收到一个ACK段,cwnd增加一个MSS
- 只要发送窗口允许,发送端可以立即发送下一个报文段
- 特点:
- 以一个很低的速率开始,按指数增大发送速率
区分不同的丢包事件
超时:说明网络交付能力很差
收到3个重复的ACK:说明网络仍有一定的交付能力
- 收到3个重复的ACK:
- 将cwnd降至一半
- 使用AIMD调节cwnd
- 超时:
- 设置门限 =cwnd/2
- cwnd=1 MSS
- 使用慢启动增大cwnd至门限
- 使用AIMD调节cwnd
6.3 TCP拥塞控制的实现
- 发送方维护变量ssthresh
- 发生丢包时,ssthresh=cwnd/2
- ssthresh是从慢启动转为拥塞避免的分水岭:
- cwnd低于门限时,执行慢启动
- cwnd高于门限:执行拥塞避免
- 拥塞避免阶段,拥塞窗口线性增长:
- 每当收到ACK, cwnd=cwnd + MSS*(MSS/cwnd)
- 检测到3个重复的ACK后:
- TCP Reno实现: cwnd= ssthresh+3,线性增长
- TCP Tahoe实现:cwnd=1 MSS,慢启动
TCP发送端的事件与动作
六、应用层 (The Application Layer)
1.应用层概述
每个应用层协议都是为了解决某一应用问题,通过位于不同主机中的多个应用进程之间的通信和协同工作来完成
- 两台主机通信实际是其对应的两个应用进程(process)在通信
- 应用进程: 为解决具体应用问题而彼此通信的进程
应用层的具体内容就是规定应用进程在通信时所遵循的协议
- 客户/服务器(C/S, Client/Server)方式
- 对等(P2P,Peer to Peer)方式
1.1 应用进程通信方式
①客户/服务器(C/S, Client/Server)方式
- 应用层的许多协议是基于C/S方式,例如,在移动互联网环境下,每个应用APP都是一个客户端
- 客户(client)和服务器(server)是指通信中所涉及的2个应用进程
- 客户/服务器方式描述的是应用进程之间服务和被服务的关系
- 客户是服务请求方(主动请求服务,被服务)
- 服务器是服务提供方(被动接受服务请求,提供服务)
- C/S方式可以是面向连接的,也可以是无连接的
- 面向连接时,C/S通信关系一旦建立,通信就是双向的,双方地位平等,都可发送和接收数据
客户进程的特点
- 在进行通信时临时成为客户,它也可在本地进行其它的计算
- 用户计算机上运行,在打算通信时主动向远地服务器发起通信
- 客户方必须知道服务器进程所在主机的IP地址才能发出服务请求
- 需要时可以与多个服务器进行通信
服务器进程的特点
- 专门用来提供某种服务的程序,可“同时”处理多个远地或本地客户的请求
- 必须始终处于运行状态才有可能提供服务
- 通信开始之前服务器进程不需要知道客户进程所在主机的IP地址,无论客户请求来自哪里,服务器进程被动等待服务请求的到来即可
- 通常是当系统启动时即自动调用并一直运行着。某些服务器程序也可以由用户或其它进程在通信前启动
- 被动等待并接受来自多个客户的通信请求
②对等(P2P,Peer to Peer)方式
- 对等方式是指两个进程在通信时并不区分服务的请求方和服务的提供方
- 只要两个主机都运行P2P软件,它们就可以进行平等、对等的通信
- 双方都可以下载对方存储在硬盘中的共享文档,如果权限允许的话
- 音频/视频应用推动了P2P对等通信方式的发展(BitTorrent)
- 音频/视频流量已占主要比
- P2P方式从本质上看仍然是使用了C/S方式,但强调的是通信过程中的对等,这时每一个P2P进程既是客户同时也是服务器
1.2 服务器进程工作方式
- 循环方式(iterative mode)
- 一次只运行一个服务进程
- 当有多个客户进程请求服务时,服务进程就按请求的先后顺序依次做出响应 (阻塞方式)
- 并发方式(concurrent mode)
- 可以同时运行多个服务进程
- 每一个服务进程都对某个特定的客户进程做出响应 (非阻塞方式)
- 无连接循环方式服务
- 面向连接的并发方式服务
可用性 | 停机时间(年) |
---|---|
99.9% | <=8.8小时 |
99.99% | <=53分钟 |
99.999% | <=5分钟 |
2.域名系统(DNS,Domain Name System)
2.1概述
- 域名系统是互联网重要的基础设施之一,向所有需要域名解析的应用提供服务,主要负责将可读性好的域名映射成IP地址
- Internet采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。Internet的DNS是一个联机分布式数据库系统
- 名字到域名的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,相应的结点也称为名字服务器(Name Server)或域名服务器(Domain Name Server)
2.2 DNS提供的服务
- 主机别名: 有着复杂主机名的主机可能一个或者多个别名。在有别名的情况下,有一个规范主机名,主机别名一般比规范主机名更加容易记忆。应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址
- 邮件服务器别名: 类似于主机别名
- 负载分配: 繁忙的站点被冗余地分布在多台服务器上,每台服务器均运行在不同的端系统上,每个都有着不同的IP地址。在这种情况下,一个规范主机名对应着一个IP地址集合,DNS数据库中存储着这些IP地址。当客户对映射到某地址集合的名字发出一个DNS请求时,该服务器用IP地址的整个集合来响应,但在每个回答中循环这些地址次序。这样,DNS就在这些冗余的服务器之间循环地分配了负载。
2.3 DNS的工作原理
应用程序调用DNS客户端—>用户主机上的DNS客户端向网络中发送一个DNS查询报文—>用户主机上的DNS客户端接收到一个DNS回答报文—>这个映射结果被传递到调用DNS客户端的应用程序
- 这是一个函数调用及返回的过程!!!
- 所有的DNS请求和回答报文使用UDP数据报经53号端口发送
- 这个调用过程产生了额外的网络时延
2.4 DNS服务器的设计
DNS服务器是以树状结构组织的一个服务器群(分布式数据库)
- 根服务器(root DNS server)
- 顶级域名服务器(top-level domain DNS server)
- 权威DNS服务器(authoritative DNS server)
DNS解析方式
- 递归查询(recursive query)
- 当收到查询请求报文的域名服务器不知被查询域名的IP地址时,该域名服务器就以DNS客户的身份向下一步应查询的域名服务器发出查询请求,即替本地域名字服务器继续查询
- 较少使用(从请求主机到本地DNS服务器的查询)
- 迭代查询(iterative query)
- 当收到查询请求报文的域名服务器不知道被查询域名的IP地址时,就把自己知道的下一步应查询的域名服务器IP地址告诉本地域名字服务器,由本地域名字服务器继续向该域名服务器查询,直到得到所要解析的域名的IP地址,或者查询不到所要解析的域名的IP地址
- 通常使用
为了减少由发送DNS报文产生的网络时延,我们引入了DNS缓存技术(在一个请求链中,当某DNS服务器接收到一个回答时,它能将该回答中的信息缓存在本地存储器中。由于主机名和IP地址的映射不是永久的,因此DNS在一段时间后丢弃缓存信息)
假设DNS服务器不是树状结构组织的服务器群,而就是一台UNIX机器,会出现以下问题
- 单点故障(A single point of failure):如果该服务器崩溃,那么整个网络都会瘫痪
- 通信容量:单个的DNS服务器必须承担世界上所有的DNS查询
- 远距离的集中式数据库:该服务器只能位于地球上的一个位置,有离的进的查询,自然就有离得远的查询,离得远的查询可能还会经历低速和拥塞的链路,这将带来很大的时延
- 维护:记录数目庞大,难以维护
DNS记录
DNS 分为查询请求和查询响应,请求和响应的报文结构基本相同。DNS 报文格式如图所示。
上图中显示了 DNS 的报文格式。其中,事务 ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这 6 个字段是DNS的报文首部,共 12 个字节。
整个 DNS 格式主要分为 3 部分内容,即基础结构部分、问题部分、资源记录部分。
DNS资源记录(RR)
(Name,Value,Type,TTL)TTL是该资源记录的生存时间 (可忽略)
- Type=A,Name–主机名,Value–IP地址
(relay1.bar.foo.com,145.37.93.126,A) - Type=CNAME,Name–主机别名,Value–规范主机名
(foo.com,relay1.bar.foo.com,CNAME) - Type=MX,Name–邮件服务器别名,Value–邮件服务器的规范主机名
(foo.com,mail.bar.foo.com,MX) - Type=NS,Name–域(foo.com),Value–知道如何获得该域中主机地址的权威 DNS 服务器的主机名
(foo.com,dns.foo.com,NS)
DNS报文头部有12字节
3.电子邮件
3.1 邮件发送的常用协议
简单邮件传输协议SMTP(Simple Mail Transfer Protocol)——邮件服务器之间传递邮件使用的协议(默认是持久、有状态连接)
- 邮件访问(Mail Access)协议::从邮件服务器的邮箱中获取邮件
- POP3: Post Office Protocol-Version 3,第三版邮局协议
- IMAP: Internet Message Access Protocol,Internet邮件访问协议
- Webmail(HTTP): 基于Web的电子邮件
3.2 Webmail
Webmail——基于Web的电子邮件
- 提供电子邮件服务的IMAP和SMTP替代方案
- 使用Web作为界面,用户代理就是普通的浏览器
- 用户及其远程邮箱之间的通信通过HTTP进行
3.3 邮件系统的三个组成部分
- 用户代理(user agent)
- 邮件服务器(mail server)
- 简单邮件传输协议(SMTP)
4. WWW
4.1 WWW体系结构与协议
- WWW=World Wide Web=万维网
- HTTP服务器和客户端,以及它们之间执行的HTTP协议
服务器
- Web页面(HTML文档):包含多种对象或链接
- Web对象(包括:静态对象和动态对象):可以是 HTML文档、 图像文件、视频文件、声音文件、脚本文件等
- 对象用URL(统一资源定位符)编址:协议类型://主机名:端口//路径和文件名 (端口范围0~65535)
客户端
- 发出请求、接收响应、解释HTML文档并显示
- 有些对象需要浏览器安装插件
www协议
名字 | 用途 | 实例 |
---|---|---|
http | 超文本html | http://www.xaut.edu.cn/xxgk/xxjj.htm |
https | 安全超文本 | https://www.overleaf.com |
ftp | FTP | ftp://ftp.xaut.edu.cn |
file | 本地文件 | file:///usr/xaut/prog.c |
mailto | 发送邮件 | mailto:xautmail@xaut.edu.cn |
rtsp | 流媒体 | rtsp://youtube.com/montypython.mpg |
sip | 多媒体呼叫 | sip:eve@advesary.com |
4.2 HTTP
概述
超文本传输协议HTTP( Hyper Text Transfer Protocol)在传输层通常使用TCP协议,缺省使用TCP的80端口
可提供持久性(persistent)和非持久性(non-persistent)连接(默认提供带流水线的持久连接)
- 持久性:每个连接可以处理多个请求-响应事务。
- 非持久连接:每个连接处理一个请求-响应事务。
HTTP为无状态协议(Stateless protocol),服务器端不保留之前请求的状态信息
- 无状态协议:效率低、但简单
- 有状态协议:维护状态相对复杂,需要维护历史信息,在客户端或服务器出现故障时,需要保持状态的一致性等
HTTP标准
- HTTP/1.0: RFC 1945(1996年)
- HTTP/1.1: RFC 2616(1999年)
- HTTP/2: RFC 7540(2015年)、RFC 8740(2020年)
4.3 HTTP工作流程
- 网址解析 通过DNS域名解析得到主机IP地址
- 封装HTTP请求数据包 将相关参数结合本机信息封装成一个HTTP请求数据包
- 封装成TCP包,建立TCP连接 TCP的三次握手
- 客户机发送请求命令 建立连接后,客户机发送一个请求给服务器
- 服务器响应 服务器接到请求后,给予相应的响应信息
- 服务器关闭TCP连接一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接
在头部添加
Connection:keep-alive
可以避免TCP链接关闭,节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
4.4 HTTP请求报文
1. 请求行 (general)
请求方法字段、URL字段和HTTP协议版本。
请求方法(Request Method)
常用的HTTP动词有下面五个:
GET
:从服务器取出资源(单个或多个)。POST
:在服务器新建资源。PUT
:在服务器更新资源(客户端提供改变后的完整资源)。PATCH
:在服务器更新(更新)资源(客户端提供改变的属性,比如说某个字段+1)。DELETE
:从服务器删除资源。
还有两个不常用的HTTP动词:
HEAD
:获取资源的元数据。OPTIONS
:获取信息,关于资源的哪些属性是客户端可以改变的。
请求URL地址 (Request URL)
具体要访问的接口地址,一般为域名或 ip 加上路径。
如:http://www.xxx.com/api/geiuser
2. 请求头 (request headers)
以键值对的方式传递数据,常见如:用 Authorization
传递用户 token
值。
3. 请求数据
URL参数
不管是get请求还是post请求,都可以通过url进行传参,参数可以直接拼接在URL后面,问好前面是接口请求的地址,后面是传递的参数,可以是多个用&
连接。URL的传参方式通常用在get请求中,比如获取指定编码对应的详情。
如:百度搜索http关键字https://www.baidu.com/s?wd=http
,其中?
之后的wd=http
就是参数相关信息。
优点: 简单方便,页面跳转比较快。
缺点: 参数长度有限制,过长会被截断;明文传递参数,安全性低;传递特殊字符串时需要进行UrlEncode
编码。
Web安全与隐私:Cookie
HTTP服务器是无状态的,然而一个Web站点通常希望能够识别用户,既可能是因为服务器想限制用户的访问,又可能是因为它想把内容与用户身份关联起来,为此HTTP使用了cookie。
cookie技术有4个组成部分:
- 在HTTP响应报文中有一个cookie首部行,
- 在HTTP请求报文中有一个cookie首部行,
- 在用户端系统中保留有一个cookie文件,由用户的浏览器管理,
- 在Web站点有一个后端数据库。
5.流媒体
6.内容分发网络CDN
6.1 概述
- 内容分发网络CDN
- Content Delivery Network,or Content Distribution Network
- 基本思想源于MIT对Web服务瞬间拥塞问题的解决(1998)
- 一种Web缓存系统,靠近网络边缘(用户)提供内容服务
- 目前提供更丰富的服务,包括静态内容、流媒体、用户上传视频等
- 主要优点
- 降低响应时延,避免网络拥塞
- 避免原始服务器过载及防止DDoS攻击
- 分布式架构,具有良好的可扩展性
- 对用户透明,无需用户感知
6.2 机理与解决方式
DNS重定向实现CDN
- 将请求调度到较近或负载较轻的CDN服务器
- HTTP重定向请求内容,服务提供者返回清单CDN
- 原始服务器决策CDN服务器
- HTTP响应:状态码30X,Location:指明新的位置
DNS辅助实现CDN
- 负载均衡DNS负责决策CDN服务器选择
- 负载均衡DNS需要收集CDN服务器的位置和负载情况
- 如果找不到被请求的对象,需要从原始服务器获取
7. P2P应用
7.1 P2P文件分发
P2P体系结构的扩展性:
- 分发时间(distribution time)是多个对等方得到文件拷贝所需要的时间。
- 在P2P体系结构中,随着要获得文件拷贝的对等方的数量增加,最小分发时间的增速远小于成正比的线性增长速。
BitTorrent:
BitTorrent是一种用于文件分发的流行P2P协议。
参与一个特定文件分发的所有对等方的集合称为一个洪流(torrent)。在一个洪流中,对等方彼此下载等长度的文件块。每个洪流具有一个基础设施节点,称为追踪器(tracker)。追踪器每次会随机地从参与对等方集合中选择一些对等方,并将其IP地址发送给某个除外的对等方,接受到此列表的对等方会与列表中的对等方并行建立TCP连接,其中所有与其连接的对等方称为“邻近对等方”。在任何时刻,每个对等方都具有来自某文件快的子集,且不同的对等方具有不同的文件块子集。一个对等方会从邻近对等方中选择自己没有且拷贝数量最少的文件块进行下载,这种技术称为最稀罕优先(rarest first)技术。
BitTorrent的对换算法有效地消除了搭免费车(free-riding)问题(只下载不上载,白嫖)。
7.2 在P2P区域中搜索信息:
P2P应用程序中的信息索引,即信息到主机位置的映射。
- 集中式索引(centralized index):
- 具有集中式索引的P2P文件共享系统实际上是一个P2P和客户机/服务器混合体系结构。
- 每一个对等方通知和更新或向集中式索引服务器发出查询的请求,各对等方相互间连接进行文件传输。
- 集中式索引的缺点:单点(索引服务器)故障、性能瓶颈和基础设施费用、侵犯版权。
- 查询洪泛(query flooding)
- 对等方新成了一个抽象的逻辑网络,该网络被称为覆盖网络(overlay network)。
- 对等方通过覆盖网络进行索引查询叫做查询洪泛(query flooding)。
- 为避免某个对等方接受过多的查询请求,使用了范围受限查询洪泛(limited scope query flooding),即每个对等点设置查询计数器及其上限。
- 层次覆盖(hierarchical overlay)
- 层次覆盖设计(hierarchical overlay design)结合了集中式索引与查询洪泛的优秀特征,超级对等方组成覆盖网络,每个超级对作为集中式索引服务器等方连接着多个普通对等方。
- 分布式散列表(Distributed Hash Table,DHT):产生一个全分布式索引,该索引将文件标识符映射到文件位置;允许用户(原则上)确定文件的所有位置,而不会产生过量的搜索流量。
7.3 P2P文件共享的三种技术
- 请求排队(Request queuing):限制对等方并行上载数量,新的请求进行排队。
- 激励优先权(incentive priorities):根据不同的上载下载比例优先服务贡献大者。
- 并行下载(parallel downloading):将一个文件分成若干段,从多个对等方并行下载。
8. FTP
8.1 概述
文件传输协议FTP(File Transfer Protocol) 是Internet上使用最广泛的应用层协议之一
- FTP提供交互式的访问,允许用户指明文件的类型与格式,并允许文件具有存取权限
- FTP屏蔽了各计算机系统的细节,适用于在异构网络中任意计算机之间传送文件
- RFC 959早在1985年就已经成为Internet的正式标准
- FTP使用C/S方式实现
- FTP是非持久、有状态协议
8.2工作过程
- 服务器主进程打开TCP 21端口,等待客户进程发出的连接请求
- 客户可以用分配的任意一个本地端口号与服务器进程的TCP 21端口进行连接
- 客户请求到来时,服务器主进程启动从属进程来处理客户进程发来的请求
- 服务器从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程
- 服务器主进程返回,继续等待接收其他客户进程发来的连接请求,服务器主进程与从属进程并行工作
8.3 FTP的两个端口与两个连接
控制连接(control connection)
- 控制连接在整个会话期间一直保持,客户进程发出的文件传输请求通过控制连接发送给服务器控制进程(工作在TCP21端口),但控制连接不用来传输文件
数据连接(data connection)
- 数据连接用来连接客户进程和服务器数据传输进程,实际完成文件的传输。
- 服务器数据传输进程在文件传输完毕后关闭数据连接并结束运行
- 工作在20端口
其他
二、排队时延
排队时延与其他三种节点时延不同,它对于不同的分组是不同的。比如第一个到的分组就没有时延,最后一个到的分组就可能有很大的时延。所以,人们通常用统计量来度量排队延时。(平均排队时延,方差,概率等)。
假设:
a -> 分组到达队列的平均速率(分组/每秒)
R -> 传输速率,队列中推出比特的速率(比特/每秒)
L -> 一个分组由L个比特组成(比特/分组)
基于以上假设,La则是比特到达队列的平均速率,单位为比特/每秒。而La/R则称为流量强度(traffic intensity)。可以知道如果流量强度>1,即La比R大的话,就会一直排队,排队时延将会一直增长!很可怕!!
当流量强度<=1时,这时达到流量的性质影响着排队时延,即流量是周期性到达还是以突发形式达到。大致结论为:周期性达到分组没有排队时延,相反,突发性达到则有可能会有很大的排队时延。
当然,现实情况下,分组之间的时间间隔是随机的,对以上边界值的讨论就显得有些偏向理论,但是能够表示接近值。也就是说,当流量强度接近于0,则平均排队时延也将接近于0;如果流量强度接近与1,平均排队长度也会越来越长,而且接近于1时,增加速率也迅速变大。
三、丢包
当流量强度接近于1时,由于容量有限,排队时延并不会趋向无穷大,队列满了,后面来的分组无处可去,就被路由器所丢弃(drop),也就出现了丢包的现象。
四、端到端时延
也就是各个节点时延的总和。假设源主机和目的地主机之间有N-1台路由器,且网络无拥塞,那么端到端时延可以表示为:d = N*(处理时延+传输时延+传播时延)
端系统的其他时延
希望向共享媒体传输分组的端系统可能有意地延时传输,作为它与其他端系统共享媒体地协议的一部分。
媒体分组化时延。