英文缩写
缩写 | 中文 |
---|---|
TCP | transport control protocol 传输控制协议 |
UDP | user datagram protocol 用户数据报协议 |
DHCP | dynamic host configuration protocol 动态主机配置协议 |
WWW | World Wide Web 万维网 |
PDU | protocol data unit 协议数据单元 |
MAC | medium access control 介质访问控制子层 |
CDMA | code division multiple access 码分复用 |
TDM | time division multiplexing 时分复用 |
ARP | address resolution protocol 地址解析协议 |
DNS 协议 | (应用层)Domain Name System |
TCP/UDP 协议 | (传输层)Transport Control Protocol User Datagram Protocol |
IP/ARP/OSPF/BGP 协议 | (网络层) Internet Protocol、 Address Resolution Protocol 、Open Shortest Path First、 Border Gateway Protocol |
MAC 子层协议 | (数据链路层)Medium Access Control |
AP | Access Point 接入点 |
LLC | (Logical Link Control)逻辑链路控制 包装从网络层取下来的数据 |
linux网络命令
命令 | 含义 |
---|---|
Ifconfig | 查看网卡的 IP 地址、掩码、广播地址、网关等。 |
ip | 用于显示或设置网络设备,比 ifconfig 命令更加强大 |
ip link | 显示网络设备的运行状态,只显示链路层的信息 |
ip route | 显示系统路由。 |
route | 管理路由表 |
ping | 用于检测主机。执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。 |
tcpdump | 用于倾倒网络传输数据,可列出经过指定网络界面的数据包文件头 |
traceroute | 用来侦测主机到目的主机之间所经路由情况 |
netstat | 用于显示各种网络相关信息,如网络连接、路由表和网络接口信息。不带参数显示 TCP 连接 |
iptables | 对网络数据包进行处理的一个功能组件,相当于防火墙,可以对经过的数据包进行处理 |
第一章:
计算机网络协议分层
理解:
- 为了降低网络设计的复杂性,绝大多数网络都组织成一堆相互叠加的层,每一层都建立在其下一层基础之上。
- 一台机器上的第n层与另一台机器上的第n层进行对话。在对话中用到的规则和约定合起来称为第n层协议
- 协议是指通信双方关于如何进行通信的一种约定
- 不同机器上包含对应层的实体称为对等体
- 每一对相邻层之间是接口
- 层和协议的集合称为网络体系结构
- 一个特定系统所使用的一组协议称为协议栈
原因:
- 降低了网络设计的复杂性
- 分层设计协议有助于各个部件的开发、设计和故障排除。
- 各层之间相互独立,某一层只要了解下一层通过接口所提供的服务,而不需了解其实现细节.
- 灵活性好,若某一层的内容发生变化,只要接口关系不变,上下层均不受影响.同时,也便于程序的实现,调试和维护.
- 标准化程度高,由于结构上分割成较小部分,各层都可以选择最适合的实现技术.此外,各层的功能和所提供的服务都有精确说明,便于人们理解与实现.
协议层次结构
OSI(7 层):物理(比特)——数据链路( 帧)——网络(分组 )——传输( TPDU)——会话(SPDU )——表示( PPDU)——应用(APDU)
- 物理层:关注在一条通信信道上传输的原始数据,实现数据可以通过介质传输。
- 数据链路层:将原始的传输设施转变成一条没有漏检传输错误的线路。保证在链路
传输过程中没有传输错误。向网络层提供一个定义良好的服务;处理传输错误;调节数
据流,确保慢速的接收方不会被快速的发送方淹没。 - 网络层:控制子网的运行,将分组(数据包)通过路由寻址从源端沿着网络路径送
达目标端。同时进行流量控制和拥塞控制。 - 传输层:传输层是真正端到端的层。保证端到端的正确传输。接收来自上一层的数
据,必要时将数据分割成较小的单元然后传递给网络层。 - 会话层:建立会话。实现对话控制,令牌管理,同步功能等。
- 表示层:解释所传递数据的语法和语义。
- 应用层:包括了用户常用需要的各种各样的协议。
TCP/IP(3 层):互联网(邮政系统)————传输(IP)————应用(TCP/UDP)
- 下层可以向上层提供两种类型服务:面向连接的服务和无连接的服务
- 下层可以向上层提供两种类型服务:可靠的服务和不可靠(unreliable)的服务
一些概念
- 计算机网络协议(Protocol)
协议:指通信双方就如何进行通信的一种约定。
计算机网络协议:一般指网络协议,是一种为计算机网络中进行数据交换而建立的
规则、标准或约定的集合。 - 协议实体(Protocol Entity)
计算机网络分层结构中每一层对应的活动元素称为实体,同一层的实体叫对等实体,
对等实体遵循同一套协议。又称协议实体。 - 服务原语(Service Primitives)
一个服务由一组原语正式说明,用户进程通过这些原语(操作)来访问该服务。原
语告诉服务要执行某个动作,或者将对等实体所执行的动作报告给用户。可用的原
语取决于底层所提供的服务。面向连接服务的原语与无连接服务的原语是不同的。 - 协议数据单元(PDU)
对等层次之间传送数据的单位,例如物理层的数据单元是数据位,数据链路层为数
据帧,网络层为数据包。
计算机网络协议提供的面向连接的服务(connection-oriented service)和无连接的服务(connectionless service)有什么不同?
①面向连接的服务:按照电话系统建模进行服务。为了使用面向连接的网络服务,服务 用户首先必须建立一个连接,然后使用该连接传输数据,最后释放该连接。这种连接 最本质的方面在于它像一个管道:发送方把对象(数据位)压入管道的一端,接收方 在管道的另一端将它们取出来。在绝大多数情况下,数据位保持原来的顺序,所以数 据位都会按照发送的顺序到达。
②无连接服务:按照邮政系统建模进行服务。每个(数据)包都携带了完整的目标地址, 每个包都由系统中的中间节点路由,而且路由独立于后续包。
③区别:面向连接服务往往数据传递更可靠,传递时难以发生数据位丢失,但是这种方 式需要双方建立单独的链接,数据传输后还要撤销连接。无连接服务不需要建立连接 就能通信,只要知道对方的地址就行,但是在传输过程中数据包可能会出现丢失,乱 码等现象,需要用户重新传递数据。
物理层
传输介质:
同轴电缆比非屏蔽双绞线有更好的屏蔽特性和更大的贷款,所以他能以很高的速率传输相当长的距离。
光纤与铜线比较:光纤有更高的带宽,更低的信号衰弱,不易受干扰,安全性高等特点
学会区别无线通信和移动通信:
- 无线通信:指多个节点间不经由导体或缆线等物理介质传播进行的远距离传输通讯,利用收音机、无线电等都可以进行无线通讯,其主要信息传输载体为电磁波。
- 移动通信:沟通移动用户与固定点用户之间或移动用户之间的通信方式,通信双方有一方或两方处于运动中的通信。
- 区别:无线通信是相对于传输介质而言提出的,通信双方无需物理介质即可传输信息。移动通信是相对于信息交互的双方状态而提出的,信息交互双方可以随意的改变自己的地理位置信息通信。
调制和复用的基本含义
调制(modulation):通信系统中发送端的原始电信号通常具有频率很低的频谱分量,一般不适宜直接在信道中进行传输。因此,通常需要将原始信号变换成频带适合信道传输的高频信号,这一过程被称为调制。
其方法包括:
(1) 基带传输
1)不归零 (NRZ)
2)不归零逆转 (NRZI)
3)曼彻斯特 (Manchester) 编码
4)交替标记逆转 (AMI)
(2) 通带传输
1)幅移键控(ASK)/调幅
2)频移键控(FSK)/调频
3)相移键控(PSK)/调相
4)正交调幅(QAM):调幅+调相
基带传输(baseband transmission)和带通传输(passband transmission)有什么不同?
- 基带传输 (baseband transmission):即信号的传输占有传输介质上从零到最大值之间的全部频率,而最大频率则取决于信令速率。
- 通带传输 (passband transmission):即信号占据了以载波信号频率为中心的一段频带。其传输频率可以不从 0 算起,并且有比基带传输更大的频率范围。
复用(multiplexing): 指一条信道被多个信号共享。毕竟,用单根线缆传送几个信号比为每个信号铺设一根线缆要便利得多。
其方法包括:
(1) 频分复用(FDM):按频率划分不同的信道
(2) 时分复用(TDM):按时间划分,固定分配时间片
(3) 波分复用(WDM):按波长划分
(4) 码分复用(CDM):按地址划分
(5) 码分多址(CDMA)允许每个站利用整个频段发送信号,而且没有任何时间限制。它的关键在于:能够提取出期望的信号,同时拒绝所有其他的信号,并把这些信号当做噪声。
交换
电路交换(Circuit-Switching,Circuit switched networks)与分组交换(Packet-Switching,Packet-switched networks)有什么不同?
- 电路交换(circuit-switching based):当你或者你的计算机发出一个电话呼叫时,电话系统的交换设备就会全
力以赴地寻找一条从你电话通向接收方电话的物理路径。 - 分组交换(包交换package-switching based):没有固定的路径,不同的数据包可以走不同的路径,路径的选
择取决于它们被传输时的网络状况,所以它们到达接收端的秩序可能出现混乱。
数据链路层
成帧
- 字节计数法
- 字节充填的标志字节法
- 比特充填的标志比特法
海明码
是一种纠错码
海明距离:两个码字的不相同位的个数为海明距离
要检测n位错误,则需要海明距离为n+1的编码方案
要纠正n位错误,则需要海明距离位2n+1的编码方案
海明码校验位长r,数据位长m,需满足
m
+
r
+
1
≤
2
r
m+r+1\leq 2^r
m+r+1≤2r
生成汉明码过程:
汉明码纠错过程:
数据链路层一个帧由一个内嵌的数据包,一些控制信息(头中)和一个校验和(在尾部)组成
帧头字段 | 意义 |
---|---|
kind | 指出帧中工是否有数据 |
seq | 序号 |
ack | 确认 |
info | 包含数据包 |
差错控制:
确保所有帧都被传递到网络层,并且保持正确顺序(网络传输,有时是分段传输)
实现流程
在数据链路层中引入计时器。当发送方发出一帧时,启动一个计时器。计时器的超时值应该设置得足够长以保证在正常情况下该帧能够到达接收方,并在接收方进行处理后再将确认返回到发送方。一般情况下,在计时器超时前,该帧应该被正确地接收,并且确认帧也被传了回来,此时计时器被取消。当帧确认被丢失,则计时器被触发,从而警告发送方存在一个潜在的问题。解决方案是重新发送该帧,为避免接收方多次将同一帧传递给网络层,需要给发送出去的帧分配序号,这样接收方可以根据帧的序号来有效区分原始帧和重传帧。管理好计时器和序号,以便保证每一帧最终都恰好一次地被传递给目标机器的网络层,这是数据链路层(以及上层)工作的重要组成部分。
(使用seq字段和计时器解决分段传输时,部分错误)
流量控制
流量控制的途径有两种:
- 基于反馈的流量控制(本章讨论):接收方给发送方送回信息,允许发送更多数据,或者告诉发送方它的情况。
- 基于速率的流量控制(传输层讨论):限制发送方传输数据的速率,无需利用接收方的反馈信息。
在数据链路层已经有差错控制了,为什么在提供可靠传输服务的传输层协议中还需要有差错控制功能?
- 数据链路层的数据传输为点到点,传输层协议控制传输为端到端,因此数据链路层的校验是保护一个穿过单条链路的帧,而传输层校验保护跨越整个网络路径的段,故数据链路层差错控制只保护一条链路上经过的数据包,没有考虑路由器内部出错的情况。即使每条链路校验正确,该数据包仍可能被不正确传递
- 数据链路层主要针对单一帧,或字节本身的对错,而传输层是对所有传输内容的总体控制。
全双工数据传输时利用kind字段判断是数据帧还是确认帧
停-等式办法:发送方收到上一帧的确认帧后才继续发送下一帧
滑动窗口协义:
在滑动窗口协议中,发送方只要收到了确认帧,就会刷新计时器,其等待的确认帧序号也会刷新,那么退回n和选择重传是如何让发送方重传的呢?
回退n:接受方直接将出错的帧及之后所有帧全部丢弃,发送方计时器超时直接从第一个出错的帧开始重发。
选择重传:由于接收方发现了错误帧,则不会回复确认帧(或者回复一个否定确认NAK),接受缓存管道中正确的帧,而发送方察觉到出现错误后,也只会重发一个帧(即错误的帧),接收方接受后返回确认帧并捎带返回之前接受的全部确认帧。因此发送方便不会再重传已被接受的帧。
发送窗口和接收窗口
- 发送窗口(sending window):在任何时刻发送方总是维持着一组序号,分别对应于
允许它发送的帧。我们称这些帧落在发送窗口内。发送端口用来对发送端进行流量控
制,而发送窗口的大小代表在还没有收到接收方确认的条件下发送端最多可以发送多
少个数据帧。 - 接收窗口(receiving window):接收方也维持着一个接收窗口, 对应于一组允许它接
受的帧。接收窗口是为了控制哪些数据帧可以接收,哪些数据帧不能接收。接收端只
有当收到的数据帧的发送序号落入接收窗口内才能将该数据帧收下,否则一律丢弃。
参考连接:http://blog.csdn.net/xcl119xcl/article/details/6732960
MAC
MAC地址(物理地址)长度位6字节,48bit
APR=Address Resolution Protocol 地址解析协议 负责将IP地址映射到MAC地址上
MAC子层的重要性
在广播网络中,关键问题是当多方竞争信道的使用权时如何确定谁可以使用信道,而MAC子层就是用来确定多路访问信道的下一个使用者的协议。
说明EthernetMAC地址与网络层的IP地址有什么区别
区别:
- 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址永远唯一且不能由用户改变。
- 长度不同。IP地址为32位,MAC地址为48位。
- 分配依据不同。IP地址的分配是基于网络拓朴,MAC地址的分配是基于制造商。
- 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。
MAC帧结构
- 前导码(8位):每个字节包含比特模10101010 除了最后一个字节的最后 位为 11) 。这最后一个字节称为 802.3 的帧起始定界符 (Start of Frame, SOF) 。比特模式是由曼彻斯特编码产生的 10MHz 方波,每个波6.4 微秒,以便接收方的时钟与发送方同步。最后两个 “1” 告诉接收方即将开始一个帧。
- 标识目的地址(6位):。如果传输出去的目标地址第一位是 o, 则表示这是一个普通地址;如果是 1, 则表示这是一个组地址。组地址允许多个站同时监听一个地址。当某个帧被发送到一个组地址,该组中的所有站都要接收它。往一组地址的发送行为称为组播 (multicasting) 。由全组成的特殊地址保留用作广播 (broadcasting) 。如果一个帧的目标地址字段为全 1, 则它被网络上的所有站接收。组播是更多的选择,但它涉及确定组内有哪些成员的组管理。相反,广播根本不区分站,因此不需要任何组管理机制。
- 源地址(6位):站的源地址具有全球唯一性,地址字段的前 个字节用作该站所在的组织唯一标识符 (OUI, Organizationally Unique Identifier) 。该字段的值IEEE 分配,指明了网络设备制造商。制造商获得一块大小为 224 的地址。地址字段的最个字节由制造商负责分配,并在设备出厂之前把完整的地址用程序编入 NIC。
- 类型或长度(2位)
- 数据字段(DATA 0-1500)
- 填充字段(0-46):为了更加容易地区分有效帧和垃圾数据,以太网要求有效帧必须至少64字节长。如果一个站试图传送非常短的帧,则可以想象,虽然发生了冲突,但是在突发噪声回到发送方(2t)之前,传送已经结束。
- 校验和(4)
MAC地址
MAC 地址采用十六进制数表示,共 6 个字节(48 位),长度为 48bit。整个地址可以分为前 24 位和后 24 位,代表不同的含义。
前 24 位称为组织唯一标识符(Organizationally Unique Identifier,OUI),是由 IEEE 的注册管理机构给不同厂家分配的代码,区分了不同的厂家。
后 24 位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中 MAC 地址后 24 位是不同的。
经典以太网(Classic Ethernet)和交换型以太网(Switched Ethernet)的数据链路层协议有什么不同?
- 在经典以太网中,每个站都有一条专用电线连接到一个中央集线器。在集线器中,所有站都位于同一个冲突域,它们必须使用 CSMA/CD 算法来调度各自的传输。
- 在交换式以太网中,所有站连接在交换机上,通过交换机传输数据。在交换机中,每个端口有自己独立的冲突域,冲突不可能发生,因而 CSMA/CD 也就不需要了。
无线局域网WLAN
其主要标准是802.11
802.11网络其使用两种模式:
- 有架构模式
每一个客户端都与一个接入点(AP)关联,该接入点又与其他网络连接,客户端发送和接收数据包都要通过一个成为分布式系统的有线网络连接在一起,形成一个扩展802.11网络。 - 自组织模式
网络又一组相互关联的计算机组成,他们相互之间可以直接向对方发送帧,没有接入点。
所有802协议共有的特点是将数据链路层分为了多个小层:
- 介质控制子层:决定如何分配信道
- 逻辑链路控制子层: 隐藏802系列协议之间的差异,使他们在网络层看来毫无差别
802.11数据帧的格式
请描述 WLAN 网络中隐藏终端(Hidden Terminal)问题和暴露终端(Exposed Terminal)
考虑如下 4 个无线站的情形。无线电的覆盖范围是这样的:A 和 B 都在对方的范围内,
可能潜在地相互之间有干扰;C 也可能潜在地干扰到 B 和 D,但不会干扰 A。
- 当 A 和 C 向 B 传送数据时,如下图(a)所示。如果 A 开始发送,然后 C 立即进行侦听介质,它将不会听到 A 的传输,因为 A 在它的覆盖范围之外。因此 C 错误地得出结论:它可以向 B 传送数据。如果 C 传送数据,将在 B 处产生冲突,从而扰乱 A 发来的帧。由于竞争者离得太远而导致站无法检测到潜在的竞争者,这个问题称为隐藏终端问题。
- B 向 A 传送数据,同时 C 想给 D 发送数据,如下图(b)所示。如果 C 侦听介质,它会听到有一个传输正在进行,从而会错误地得出结论:它不能向 D 发送数据。事实上,C 所听到的传输只会搞坏 B 和 C 之间区域中的接收,但是,两个接收方都不在这个危险区域。这个问题称为暴露终端问题。
解决问题的方法:RTS/CTS协议(鸡肋)
CSMA/CD和CSMA/CA的区别
CSMA/CD:当一个站有数据要发送时,它先侦听信道,如果信道空闲就发送数据。
传输时站的硬件继续侦听信道,如果它读回的信号不同于它放到信道上的信号,则知道
发生了碰撞,要重新发送数据。
CSMA/CA:需要发送帧的站以随机后退开始,而且他不等待冲突的发生。通过侦听确定在一个很短的时间内没有信号(等待空闲),然后倒计时空闲时间槽,当有帧在发送时则暂停计时器,当计时器到达0时,该站就发送帧,如果发送成功,接受站就立即发送一个短确认。如果没有收到确认,则可断定传输出现了错误,无论是冲突还是其他错误,此时,发送方都要加倍后退选择的时间槽数,在重新试图发送,如此反复,连续像以太网那样以指数后退,直到成功发送帧或到达重传的最大次数。
请说明网桥(Bridge)、交换机(Switch)转发帧的工作原理,并说明什么是学习型网桥(Learning Bridge)
-
网桥转发帧的工作原理:
接受隶属于每个端口的站发送的帧。对于一个入境帧,它在网桥中的路由过程取决于它的源端口和目标端口。整个转发过程如下:- 如果去往目标地址的端口与源端口相同,则丢弃该帧。
- 如果去往目标地址的端口与源端口不同,则转发该帧到目标端口。
- 如果目标端口未知,则使用泛洪法,将帧发送到所有的端口,除了它入境的那个。
-
交换机转发帧的工作原理:
交换机有三种转发数据帧的方式:- 直通式:交换机在收到数据帧后,不进行缓存和校验,而是直接转发到目标端口。
- 存储转发:交换机首先在缓冲区中存储接收到的整个数据帧,然后进行 CRC 校验, 检查数据帧是否正确,如果正确,再进行转发。如果不正确,则丢弃。
- 碎片隔离:交换机检查数据包的长度是否够 64 个字节,如果小于 64 字节,说明是假包,则丢弃该包;如果大于 64 字节,则发送该包。
-
学习型网桥:
网桥所用的算法是后向学习法。对于每个发向未知目的地址的入境帧,网桥会把这个数据包广播到除了源端口以外的所有端口,目标主机收到广播后,就会把自己的 MAC地址送回给网桥,网桥就知道了这个设备在这个端口上,并且把这个信息记录到转发表。随着时间的推移网桥会学习到每个目标地址对应的端口,之后每接受到一个数据帧,就通过对应的端口发送,而不是广播发送。
四种协议和标准的作用
- HDLC:高级数据链路控制
HDLC协议是一种面向比特的高效链路层协议。一般情况下,HDLC通信协议IP核分 为三个部分,即外部接口模块、数据发送部分和数据接收部分。在这类面向比特的数 据链路协议中,帧头和帧尾都是特定的二进制序列,通过控制字段来实现对链路的监 控,可以采用多种编码方式实现高效的、可靠的透明传输。故其最大特点是不需要数 据必须是规定字符集,对任何一种比特流,均可以实现透明的传输。 - DHCP:动态主机配置协议
DHCP是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登 录服务器时就可以自动获得服务器分配的IP地址和子网掩码。 - ARP:地址解析协议
ARP是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的 物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定 时间,下次请求时直接查询ARP缓存以节约资源。 - STP(Spanning Tree Bridges):生成树网桥
STP的作用是通过阻断冗余链路,使一个有回路的桥接网络修剪成一个无回路的树形拓扑结构。逻辑上断开环路,防止二层网络的广播风暴的产生。 - IEEE 802.1Q标准
标准化VLAN实现方案,目的是使得一组逻辑上的设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中。
能否在以太网的帧中携带 IPv6 分组(IPv6 Packet)?请解释说明其中的原因?
可以。以太网帧中 IP 数据报的长度限制为:46-1500,只要 IPv6 分组的长度在该范围内就可以被以太网帧携带。
网络层
TCP/IP分析参考:https://www.cnblogs.com/sunev/archive/2012/06/23/2559389.html
无连接服务的实现:数据报——分组datagram
面向连接的服务:虚电报——基电路virtual circuit
数据报网络(Datagram Network)和虚电路网络(Virtual-circuit Network)有哪些不同之处?
①如果提供的是无连接的服务,那么,所有的数据包都被独立地注入到网络中,并且每个数据包独立路由,不需要提前建立任何设置。在这样的上下文中,数据包通常称为数据报,对应的网络称为数据报网络。所传送的分组可能出错、丢失、重复和失序(即不按顺序到达终点),属于不可靠交付。
②如果使用了面向连接的服务,那么,在发送数据包之前,必须首先建立起一条从源路由器到目标路由器之间的路径。这个连接称为虚电路, 它类似于电话系统中建立的物理电路,对应的网络称为虚电路网络。数据分组都将沿着这条线路有序可靠地传输,属于可靠交付。
③数据报网络 vs. 虚电路网络
路由算法:
路由和转发的区别
答:
- 路由:即对使用哪一条路径做出决策,
- 转发:当一个数据包到达时该采取什么动作。
路由算法分为两类:
- 非自适应算法:不会根据当前测量或者估计的流量和拓扑结构,来调整它们的路由决策。在离线时就下载到路由器中,也叫静态路由
- 自适应算法:会改变它们的路由决策以便反映出拓扑结构的变化,通常也会反映出流量的变化情况。
最优化原则:如果路由器了在从路由器I到路由器K的最优路径上,那么从了到K 的最优路径也必定遵循同样的路由。
汇集树(sink tree):最优化原则的一个直接结果,从所有的源到一个指定目标的最优路径的集合构成了一棵以目标节点为根的树。
注意: 汇集树不是唯一的,有可能存在具有相同路径长度的其他汇集树。如果我们允许选择所有可能路径,则树就变成了一般的结构,有向无环图DAG( Directed acyclic graph)。
最短路径算法
测量路径长度的方法有: 跳数 (hop),距离 (km) ,一个标准测试包的平均延迟,带宽,平均流量,通信成本等其他因素。
Dijkstria算法:每一个节点都标出了(在圆括号内)从源节点沿着已知的最佳路径到达本节点的距离;随着算法的不断进行,陆续有一些路径被找到,于是节点的标记可能发生变化,以便反映出更好的路径;当发现一个标记代
表了从源节点到该节点的最短可能路径,该标记就变成永久,以后不再改变。
泛洪算法
把每一个入境数据包发送到除了该数据包到达的那条线路以外的每条出境线路。
抑制泛洪过程:
- 在每个数据包的头中设置一个跳计数器,每经过一跳该计数器减一,当计数器到达时就丢弃该数据包。(理想状态下,初始值等于路径长度)
- (更优) 让路由器跟踪已经泛洪过的数据包,从而避免第二次发送它们。实现方式是在每个源路由器在接受来自主机的数据包时填上一个序号,每个路由器为每个源路由器准备张表,记录已经观察到的来自源路由器的序号。如果入境数据包在这个表中,就不再被泛洪到其他路由器。为了防止该表无限膨胀,使用一个计时器k,表示直到k的所有序列号都已经被观察过了。
泛洪的优点:
3. 确保数据包被传送到网络中的各个节点——有效的广播手段
4. 鲁棒性好 (如战争区域)
5. 安装很少
6. 最短的延迟
动态算法如下
距离矢量路由算法(分布式Bellman-Ford路由算法/RIP协议):
每个路由器维护一张路由表,表中列出了当前已知的到每个目标的最佳距离,以及所使用的链路,这些表通过邻居之间的相互交换信息而不断被更新,最终每个路由器都了解到达每个目的地的最佳链路。
每个路由器维护一张路由表,它以网络每个路由器为索引,每个路由器对应一个表项,表项包含两部分:到达该目标路由器的首选出境线路,以及到达该目标路由器的距离估计值。
无穷计算问题:整个网络最佳路径的寻找过程称为收敛,虽然该算法总能收敛到正确答案,但速度非常缓慢。对于好消息的反应非常迅速,而对于坏消息的反应异常迟缓。
链路状态路由算法:
当网络拓扑结构分发生变化后,距离矢量算法需要太长的时间才能收敛到稳定的状态。
-
发现它的邻居节点,并了解其网络地址
-
设置到每个邻居节点的距离或者成本度量
-
构造一个包含所有刚刚获知的链路信息包:
构造数据包的时机:- 周期性的创建数据包。
- 每当发生某些重要的事情时才创建数据包。
-
将这个包发给所有其他的路由器,并接受来自所有其他路由器的信息包
问题1:泛洪:为了控制泛洪的规模,每个数据包都包含一个序号,序号随着每一个新数据包发出而逐一递增,路由器记录下它所看到的所有(源路由器,序号)对,当一个新的链路状态数据包到达时,路由器检查这个新来的数据包是否已经出现在上述观察到的列表中,如果是一个新的数据包,则把它转发到除入境线路之外的所有其他线路上。如果这是一个重复的数据包则丢弃;如果数据包的序号小于当前所看到的来自该源路由器的最大序列号,则它将被当做过时数据包而拒绝接受。
问题2:
- 如果序列号绕回,可能会产生混淆;
- 如果一个路由器崩溃了,那么它将丢失所有的序号记录表,如果它再从0开始,那么,下一个数据包将被作为重复数据包而拒绝;
- 如果一个序号被破坏了,会被当做过时数据包而被拒绝接受。
解决方案:在每个数据包的序号之后包含一个年龄字段,并且每秒钟年龄减1,值为0时丢弃.
健壮性改进:当一个数据包被泛洪到一个路由器,首先放在保留区中等待一段时间,若此时同一源地址的数据包来了,比较他们的序号,丢弃重复包或老包。 -
计算出到每个路由器的最短路径(新路由)(在本地使用Dijstra算法)
层次路由
随着网络规模的增长,每个路由器不太可能为其他路由器维护一个表项,所以路由器不得不层次进行,就像电话网络中那样。路由器被划分为区域,对其他区域内部的结构毫不知情。
分多少层:对于一个包含N个路由器的网络,最优的层数是ln(n),每个路由所需要的路由表项是eln(n)项。
拥塞控制算法
拥塞 (congestion): 数据包延迟或丢失,传输性能降低,由网络层和传输层处理
拥塞崩溃 (congestion collapse) : 传输层注入的负载超出网络层的容量,性能骤减。
拥塞控制和流量控制之间的区别:
流量控制指在发送端和接收端之间的点对点通信量的控制,就是抑制发送端发送数据的速率,以便接收端来得及接收;
拥塞控制必须确保通信子网能够传达待传达的数据,涉及网络中所有主机路由器以及导致网络传输性能下降的所有因素,是一个全局性的问题。
拥塞控制的途径:
- 建立一个与流量匹配良好的网络 增加供给 (provisioning): 动态增加网络资源/使用高带宽链路
- 充分利用现有的网络容量流量感知路由 (traffic-aware routing): 把流量分到多个路径
- 降低负载——准入控制(admission control) : 在一个虚电路网络中,如果新的连接将导致网络变得拥挤不堪,那么就拒绝这种连接。
- 流量调节——拥塞避免
如何通知源端减缓速度? ——路由器参与到源端的反馈循环中。
显示拥塞通知 (ECN,Explicit Congestion Notification) : 发送抑制包隐式拥塞: 发送端监视确认包回送的时间:
逐跳后压:其实际效果是拥塞点上的拥塞现象很快得到了缓解,但是其代价是上游路径需要消耗更多的缓冲区空间。 - 负载脱落 (load shedding)): 一切努力都失败,网络丢弃无法传输的数据包。
如何确定网络何时开始拥塞?
路由器可以检测平均负荷,排队延迟或丢包情况。
随机早期检测: 路由器要维护一个运行队列长度的平均值。当某条链路上的平均队列长度超过某个阙值时,该链路就被认为即将拥塞,因此路由器随机丢弃一小部
分数据包
服务质量
流 (flow):从一个源端发到一个接收方的数据包流
每个流的需求可由四个主要参数来表示:带宽、延迟、抖动和丢失。
抖动 (jitter):延迟的变化(即标准方差)或者数据包到达时间的变化称
流量整型
流量整形 (trafic shaping)是指调节进入网络的数据流的平均速率和突发性所采用的技术。它的目标是允许应用程序发送适合它们需求的各种各样流量。
客户与服务提供者之间的约定叫做服务登记约定SLA
超出约定模式之外的数据包可能会被丢弃,或者被打上低优先级标记。对一个流进行监测称为流量监管
漏桶算法
令牌桶算法
数据包调度算法
- 先入先出
- 公平队列算法
网络互联
这一节可能不是重点
即讨论不同的网络之间如何互联,如以太网,WLAN,PAN等。
网络互联的两种方式:
- 制造能够将每种类型的数据包转换为其他网络类型的数据包的设备
- 在不同网络的上面增加一个间接层,并构建一个公共层来解决网络互联问题。
现在使用第二种方式,将这种公共层融入到了TCP/IP协议中。
数据包分段
数据包受硬件,OS,协议标准,期望的影响,会被限制最大长度
为了确保一个大数据包在网络互联中传输是不会超过网络的最大数据包尺寸的问题,有两种解决方案:
- 设置路径最大传输单元MTU
- 另一种解决办法是允许路由器将数据包拆分成段,将每个段作为一个独立的网络层数据包发送
分段策略:
如何将分段重新组成原始的数据包?
透明分段:由“小数据包“网络引起的分段过程对于沿途后续的网络都是透明的(沿途中的网络都会将分段重组再分段)。
问题: 出口路由器必须知道什么时候它已经接收到了全部的段,所以每个分段中必须提供一个计数字段或者一个“数据包结束”标志位,其次由于所有的数据包必须经过同一个出口路由器才能进行重组,因此路由受到了限制,不允许“兵分两路”,损失了性能
非透明分段(如IP): 避免在任何一个中间路由器上重新组合分段,只在目标主机上重组
问题: 开销高,任何一个段的丢失都导致整个包的丢失。
优点:路由器所做的工作少。
路径MTU发现
每个 IP 数据包发出时在它的头设置一个比特,指示不允许对该数据包实施分段操作。如果一个路由器接收的数据包太大,它就生成一个报错数据包并发送给源端,然后丢弃该数据包。当源端收到报错数据包 它就使用报错数据包携带的信息重新将出错数据包分段,每个段足够小到报错路由器能处理。如果沿着路径前进又遇到一个 MTU 更小的路由器,那么重复上述过程。
优点:源端知道该发送多长的数据包
缺点:增加了发送数据包的启动延迟
请说明下列协议、标准的作用:HDLC、DHCP、ARP、STP(Spanning Tree Bridges)、IEEE 802.1Q 标准
①HDLC:高级数据链路控制
HDLC协议是一种面向比特的高效链路层协议。一般情况下,HDLC通信协议IP核分 为三个部分,即外部接口模块、数据发送部分和数据接收部分。在这类面向比特的数 据链路协议中,帧头和帧尾都是特定的二进制序列,通过控制字段来实现对链路的监 控,可以采用多种编码方式实现高效的、可靠的透明传输。故其最大特点是不需要数 据必须是规定字符集,对任何一种比特流,均可以实现透明的传输。
②DHCP:动态主机配置协议
DHCP是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登 录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
③ARP:地址解析协议
ARP是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP 地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的 物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定 时间,下次请求时直接查询ARP缓存以节约资源。
④STP(Spanning Tree Bridges):生成树网桥
STP的作用是通过阻断冗余链路,使一个有回路的桥接网络修剪成一个无回路的树形 拓扑结构。逻辑上断开环路,防止二层网络的广播风暴的产生。
⑤IEEE 802.1Q标准
标准化VLAN实现方案,目的是使得一组逻辑上的设备和用户并不受物理位置的限 制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们 在同一个网段中。
在以太局域网中,一个主机配置有两种地址:MAC地址、IP地址。请说明在以太局域网的设计中,为什么不能仅使用IP地址,还必须使用MAC地址?
在早期的以太网中,以太网内通过MAC地址通信。但是随着以太网发展变为互联网时, MAC地址本身的缺陷就暴露了出来——MAC地址虽然唯一但是不能表明用户在整个互 联网中的位置。除非维护一个超级大MAC地址对应表,那寻址效率非常低下,而且会 占用极大的存储空间,另外获取MAC地址是通过ARP协议来完成的,如果用MAC地 址通信,那么广播风暴是个难题。
因此IP地址被发明了出来并解决了这个问题。IP地址前几位用于锁定目的主机所在网 络,后几位用于确定目的主机是网络中具体的哪一台设备。但由于IPv4地址的个数有 限,于是有了私网地址的概念以及NAT技术,因此不同网络的不同主机可以使用相同 的私网IP地址。此时IP地址无法唯一标识某一台设备,必须使用MAC地址。
数据报网络(Datagram Network)和虚电路网络(Virtual-circuit Network)有哪些不同之处?
①如果提供的是无连接的服务,那么,所有的数据包都被独立地注入到网络中,并且每 个数据包独立路由,不需要提前建立任何设置。在这样的上下文中,数据包通常称为 数据报,对应的网络称为数据报网络。所传送的分组可能出错、丢失、重复和失序(即 不按顺序到达终点),属于不可靠交付。
②如果使用了面向连接的服务,那么,在发送数据包之前,必须首先建立起一条从源路 由器到目标路由器之间的路径。这个连接称为虚电路, 它类似于电话系统中建立的 物理电路,对应的网络称为虚电路网络。数据分组都将沿着这条线路有序可靠地传输, 属于可靠交付。
③数据报网络 vs. 虚电路网络
计算机网络中的网络层中的转发(Forwarding)和路由(Routing)有何不同?
路由器的基本功能就是路径的选择与数据包的转发。路由就是路径的选择,转发就是将 数据包从选定的路径发送出去。
可以把路由器想象成内部有两个进程:其中一个进程在每个数据包到达的时候对它进行 处理,它在路由表中查找该数据包所对应的出境线路,这个进程即为转发进程;另一个 进程负责生成和更新路由表,这正是路由算法发挥作用的地方。
链路状态路由算法和距离矢量路由算法有哪些不同之处?
①距离矢量路由(distance vector routing)
距离矢量路由算法是这样工作的:每个路由器维护一张表(即一个矢量),表中列出了当前已知的到每个目标的最佳距离,以及所使用的链路。这些表通过邻居之间相互交换信息而不断被更新,最终每个路由器都了解到达每个目的地的最佳链路。
②链路状态路由(link state routing)
链路状态路由算法的设计思想非常简单,可以用五个部分加以描述。每一个路由器必 须完成以下的事情,算法才能正常工作:
(l) 发现它的邻居节点,并了解其网络地址。
(2) 设置到每个邻居节点的距离或者成本度量值。
(3) 构造一个包含所有刚刚获知的链路信息包。
(4) 将这个包发送给所有其他的路由器,并接收来自所有其他路由器的信息包。
(5) 计算出到每个其他路由器的最短路径。
实际上,算法将完整的拓扑结构分发给了每一个路由器。然后每个路由器运行Dijkstra 算法就可以找出从本地到每一个其他路由器的最短路径。
③区别:
- 距离矢量路由算法周期性更新,完整路由表更新。路由器向邻居发送路由条目。
- 链路状态路由算法让路由器自动学习到其他路由器的网络,并且网络拓扑发生改变后 自动更新路由表。网络中的路由器并不向邻居传递路由表项,而是通告给邻居一些链 路状态,其它路由器会根据链路状态,改变自已的拓扑数据库,重新计算路由条目。
请说明IP分组中IP头(IP Header)的Version字段、IHL字段、Total Length字段、Identification字段、DF字段、MF字段、TTL(Time To Live)字段、Protocol字段、Source Address字段、Destination Address字段的作用。
①Version:版本号,记录了数据报属于协议哪个版本。
②IHL:包头长度,指明了头到底有多长(以32位字长度为单位)。
③Total Length:总长,含包头和数据。
④Identification:分段标识,让目标主机确定一个新到达的分段属于哪一个数据报。同 一个数据报的所有段包含同样的标识值。
⑤DF:不分段标识,不允许路由器分割该数据报。
⑥MF:分段标识。
⑦TTL:分组生存时间。是一个用于限制数据包生存期的计数器,计数单位为秒。在每 一跳上该计数器必须被递减,当它递减到0时,数据包就被丢弃,并且路由器给数 据包的源主机发回一个报警包。
⑧Protocol:协议类型,指明了该将它交给哪个传输进程(TCP/UDP)。
⑨Source address:发送端的IP地址。
⑩Destination address:接收端的IP地址。
有以下四个IP地址前缀(IP Prefix):
- 192.168.0.0/23
- 192.168.2.0/23
- 192.168.4.0/22
- 192.168.8.0/21
请分别写出这四个IP地址前缀的网络掩码(netmask)。
若将这四个IP地址前缀进行聚合(aggregation),聚合后得到的IP地址前缀(IP Prefix)是多少?请写出计算过程。
1)(pdf P354 网络掩码)
①192.168.0.0/23的网络掩码是:1111 1111 1111 1111 1111 1110 0000 0000, 即255.255.254.0。
②192.168.2.0/23的网络掩码是:1111 1111 1111 1111 1111 1110 0000 0000, 即255.255.254.0。
③192.168.4.0/22的网络掩码是:1111 1111 1111 1111 1111 1100 0000 0000, 即255.255.252.0。
④192.168.8.0/21的网络掩码是:1111 1111 1111 1111 1111 1000 0000 0000, 即255.255.248.0。
2)(pdf P357 CIDR)
192.168.0.0/23对应的CIDR地址范围:192.168.0.0~192.168.1.255
192.168.2.0/23对应的CIDR地址范围:192.168.2.0~192.168.3.255
192.168.4.0/22对应的CIDR地址范围:192.168.4.0~192.168.7.255
192.168.8.0/21对应的CIDR地址范围:192.168.8.0~192.168.15.255
将CIDP地址范围聚合后的范围:192.168.0.0~192.168.15.255
因此聚合后的IP地址前缀是:192.168.0.0/20。
(重点看后两部分:
范围为0.0~15.255,即0000 0000 0000 0000~0000 1111 1111 1111
故前缀有8+8+4=20位。)
在基于Ubuntu Linux的路由器中,通过route命令和ip route命令打印出来的此路由器的路由表如下。上面这两个命令输出的路由项是等价的。
(注:截图中的“ens 38 proto kernel scope link src 192.168.21.128”中的这个IP地址为此路由器的网络接口(iface)ens38的IP地址)
请说明当此路由器接收到的IP分组中的目的IP地址分别为下列IP地址时,此路由器将分别会怎样处理这些IP分组。如果路由器转发这些分组的话,请写出用于将分组转发出去的网络接口的名字、下一跳设备的IP地址。
- 192.168.21.153
- 192.155.105.5
- 192.155.111.8
- 192.59.68.69
- 192.59.114.9
答:
1)192.168.21.153 AND 255.255.255.0=192.168.21.0(取前24位)。查询路由表可知该 表项Flags取值为U,即该路由可用。又因为其网关为0.0.0.0,所以本机与IP地址 前缀为192.168.21.0的子网中的计算机是直连的,不需要通过路由器转发,因此下 一跳IP地址就是目的主机地址。
所以:通过网络接口ens38转发,下一跳设备的IP地址为192.168.21.153。
2)192.155.105.5 AND 255.255.248.0=192.155.104.0(取前21位)。查询路由表可知该 表项Flags取值为UG,即该路由可用,对应网关为192.168.106.129。
所以:通过网络接口ens33转发,下一跳设备的IP地址为192.168.106.129。
3)192.155.111.8 AND 255.255.254.0=192.155.110.0(取前23位)。查询路由表可知该 表项Flags取值为UG,即该路由可用,对应网关为192.168.21.129。
所以:通过网络接口ens38转发,下一跳设备的IP地址为192.168.21.129。
4)192.59.68.69无法通过与表中任一网络掩码进行AND操作提取出已有IP地址的网络部分,即无法在路由表中找到对应表项。因此进入默认网关。
所以:通过网络接口ens39转发,下一跳设备的IP地址为192.168.238.129。
5)192.59.114.9 AND 255.255.240.0=192.59.112.0(取前20位)。查询路由表可知该表项Flags取值为UG,即该路由可用,对应网关为192.168.119.129。
所以:通过网络接口ens40转发,下一跳设备的IP地址为192.168.119.129。
请说明NAT设备的作用。为什么存在NAT穿越(NAT traversal)的问题?
- 作用:允许一个整体机构以一个公有IP地址出现在Internet上。是一种把内部私有 IP地址翻译成合法的公有IP地址的设备,NAT在一定程度上,能够有效的解决公 网地址不足的问题。
- NAT穿越问题:
由于各种协议的应用各有不同,有的协议是无法通过NAT的。对于没有中间服务器 的纯P2P应用来说,如果主机都位于NAT设备之后,双方是无法建立连接的。因为 没有中间服务器的中转,NAT设备后的P2P程序在NAT设备上没有映射条目,对方无法向你发起一个连接,因此就需要面对NAT穿越问题。
域内路由(Intra-Domain Routing)和域间路由(Inter-Domain Routing)各起什么作用?这两种类别的路由有何不同?
①Internet由大量的独立网络或自治系统(AS, Autonomous System)构成,并由不同 的组织运营,这些组织通常是公司、大学或ISP。
AS内部的信息交换路由,称为域内路由(intra-domain routing),通过AS内部 的路由器进行域内设备的信息交换。目前比较流行的域内路由协议为RIP协议和 OSPF协议,或者在一个较小的AS内可以人工分配路由。
跨越AS的信息交换路由,称为域间路由(inter-domain routing),通过域间路由协 议每个自治系统的边界路由器交换路由信息。Internet采用的域间路由协议是BGP 协议。
②不同之处:
- 实现域间路由要求所有的独立网络必须使用相同域间路由协议和外部网关协议, 而域内路由不要求这样,每个独立网络可以根据实际情况选择合适的路由协议。
- 域内路由所需要做的只是尽可能有效的将数据包从源端传送到接收方,它不必考 虑政治因素,而域间路由则必须要考虑大量的政治因素。
典型的域内路由协议、域间路由协议有哪些?
域内路由协议/内部网关协议:RIP,OSPF(开放最短路径优先)。
域间路由协议/外部网关协议:BGP(边界网关协议)。
请对比在线视频会议、文件传输(FTP)应用分别对时延(Delay)、抖动(Jitter)、可靠性(Reliability)、带宽(Bandwidth)的要求程度。
服务质量 | 在线视频会议 | 文件传输 |
---|---|---|
时延 | 要求低时延,消息从发出到送达所有在线端的延时在毫秒级。 | 要求中等时延,数据传输实时性不高。 |
抖动 | 要求网络稳定,发生抖动概率低,保证视频不卡顿。 | 对网络稳定性要求不高,可以接纳一定的网络抖动。 |
可靠性 | 可靠性要求中等,视频的几帧丢失不会对会议效果有影响。 | 要求可靠传输,文件的一个数据报丢失可等导致整个文件不可用。 |
带宽 | 带宽要求高,需要传输大量语音、图片、等信息。 | 带宽要求中等,只要能够在用户预期的时间内完成传输即可。 |
传输层
传输服务
传输层的最终目标: 充分利用网络层提供的服务,向应用层进程提供efficient,reliable, and cost-efectiveservice
传输实体 (transport entity) : 完成上述工作的硬件或软件
- 网络层和传输层的功能如此相似,为什么还要分为两个层:
传输层的代码完全运行在用户机上,而网络层的代码则在运营商的路由器上运行,用户对网络层没有完全的控制权。 - 传输层的作用:
由于传输层的存在,使得传输服务比网络服务更加可靠,而且传输服务原语可以通过调用库程序来实现,使得这些原语独立于网络层服务原语,将网络层服务隐藏在一组传输原语之后(好处: 一旦改变了网络服务,只需替换一组库程序即可,使用不同的底层网络服务,实现相同的传输服务原语)传输层把上层与技术,设计和缺陷隔离。 - 网络服务与传输服务的区别:
- 网络服务毫不掩盖的按照实际网络提供的服务构造模型,实际网络可能会丢失数据包。与此相反面向连接的传输层服务是可靠的——在不可靠的网络上提供可靠的服务。
- 两者的服务对象不同: 网络服务仅仅被传输实所引用,而传输服务是裸露于用户的
- 术语段 (segment) /传输协议数据单元 (Transport Protocol Data Unit,TPDU):段 (传输层) 被包裹在数据包中 (网络层) ,数据包又被包裹在中 (数据链路层)
传输层上,发送的每个数据包 (最终) 都要被确认。
中断连接有两种方式:
- 对称的: 连接的两个方向彼此独立。一方DISCONNECT后,仍愿接受另一方的数据:
- 非对称的:任一方发出DISCONNECT连接被释放。
Berkeley套接学(socket原语)
原语 | 含义 |
---|---|
SOCKET | 创建一个新通信端点 |
BIND | 将套接字与一个本地地址关联 |
LISTEN | 声明愿意接受连接:给出队列长度 |
ACCEPT | 被动创建一个入境连接 |
CONNECT | 主动创建一个连接 |
SEND | 通过连接发送一些数据 |
RECEIVE | 从连接上接收一些数据 |
CLOSE | 释放连接 |
- SOCKET:创建一个新端点 (end point) ,并在传输实体中为他分配相应的表空间,SOCKET调用成功则返回一个普通的文件描述符,供后续调用使用;
- BIND: 为新创建的套接字分配地址 (仅服务器使用,客户端不需要分配地址) ;
- LISTEN:为入境呼叫分配队列空间(一遍多个用户同时请求连接时,排入队列依次处理,并不是一个阻塞用) ;
- ACCEPT: 阻塞自己等待连接请求 (服务器端) ;
- CONNECT: 阻塞调用方,主动建立连接 (客户端),CONNECT调用完成(接收到服务器的确认段)客户端解除阻塞,连接建立
- 现在双方都可以使用SEND和RECEIVE;
- CLOSE: 在套接字模型中,连接的释放是对称的。双方都使用了CLOSE原语后,连接释放
传输协议的要素:
- Addressing寻址
- Connection Establishment连接建立
- Connection Release连接释放
- Flow Control and Buffering差错控制和流量控制
- Multiplexing多路复用 (略,知道就行)
- Crash Recovery崩溃恢复 (略)
传输协议与数据链路协议不同:
环境不同——数据链路层中两个路由器通过物理信道 (physical communication channel) 进行通信;传输协议中通过整个网络。
- 在点到点链路上,数据链路协议不需要指明它要与哪一台路由器进行通信,因为每条出境线路直接通向一台特定路由器,而传输层必须显式的指出接受方的地址。
- 在链路上建立连接非常简单,而传输层的初始连接的建立非常繁琐
- 网络存在着潜在的存储容量,传输层中可能有“看风景的包”(延迟)4.程度上的差别,缓冲和流量控制的问题。
寻址 (Addressing)
传输服务访问点(TASP,Transport Service Access Point) /网络服务访问点(NSAP)——即端口port
IP地址是NSAP的一个实例;
应用进程把自己关联到一个本地TSAP上,以便与一个远程TSAP建立连接,这些连接运行在每台主机的NSAP上。每台计算机只有一个NSAP,但被多个TSAP共享。
主机1上的用户如何知道服务器1关联到了TSAP 1522?
- 固定的TSAP端点能解决少数永不改变的关键服务。
- 端口映射器(portmapper) 是一种特殊进程——就像114一样。用户先与端口映射器建立连接,获取目标TSAP的地址,释放连接后,再与所需服务器建立新的连接。
- 初始连接协议 (initial connection protocol) :一个特殊的进程服务器,充当那些不频繁使用的服务器代理。 (只适用于服务器可按需创建的场合)
连接建立 (Connection Establishment) :
拒绝重复的数据包:
- 使用一次性的传输地址;
- 为每个连接分配一个唯一标识:
数据包的生存期限定
- 限制网络设计;
- 每个数据包放一个跳计数器,转发一次计数器减一,到零丢弃; (比较推荐? )
- 打时间戳(数据包携带创建时间),路由器根据这个丢弃数据包;
基于数据包生存期限定的方法: 源端用序号作为段的标签,使得该段在T秒内不被重用。 (TCP是这个方法的变种)
一台机器崩溃后丢失所有内存——日时钟 (time-of-day clock) ,解决了无法区分重复段的问题
连接建立过程中依然存在问题——三次握手协议 (three-way handshake) :
(a). 正常操作:
1. 主机1选择一个序号x,发送一个CR连接请求;
2. 主机2回应一个ACK段作为确认,并宣告它的序号y;
3. 最后主机1在它发送的第一个数据段中,对主机2的初始序号y进行确认。
(b). 出现老的重复CR
(c). 重复CR和重复ACK
连接释放(Connection Release)
传输实体将有关该连接的信息从它的内部表中删除,并通知该连接的所
有者
- 对称释放:法太冒失,可能导致数据的丢失
- 非对称释放:每个方向被单独释放,两个方向的连接释放相互独。因而,即使当主机发送了 DISCONNECT 段以后,它仍然可以接收数据。
三次握手来释放连接过程及可能的情况:
差错控制和流量控制 (Flow Control and Buffering)
动态滑动窗口可以同时实现:
- 差错控制:确保数据传输的可靠性,
- 流量控制: 防止快速发送端淹没慢速发送端;
链路层的差错流量控制与传输层的区别:
- 功能上,链路层保护单条链路,传输层是端到端的校验机制
- 程度上,传输协议通常使用较大的滑动窗口
TCP连接承载的流量类型: 接收端有专用的满窗口的缓冲区,允许数据流以最大速率发送
组织缓冲池:(a)段的长度都差不多(b)内存利用率高,管理复杂©只有连接重载时效果才好
缓冲与确认机制分离:。动态的缓冲区管理实际上意味着一个可变大小
的窗口。初始时,发送端根据它期望的需求,请求一定数量的缓冲区。然后,接收端根据它的能力分配尽可能多的缓冲区。每次发送端传输一段,它必须减小分配给它的缓冲区数,当分配给它的缓冲区数达到0时,完全停止发送。然后,接收端在逆向流量中捎带上单独的确认和缓冲区数。
这种机制在数据报网络中,控制段丢失会导致潜在的死锁——发送端缓冲区用完不再发送数据,等待确认帧携带的新分配的缓冲区。接收端未收到数据因此不会发送确认帧。持续死锁,知道发送端的计时器超时,重发丢失的数据帧,死锁解除。
多路复用
一个网络地址被很多个连接使用
逆向多路复用 (inverse multiplexing) : 以轮询的方式把一个连接上的流量分摊到多条网络路径,如流控制传输协议 (SCTP)也可用在链路层,把几条并发的低速率链路当一条高速率链路使用。
崩溃恢复 (略)
Internet传输协议
UDP
TCP
为了在不可靠的互联网上提供(按序递交的)可靠的 端到端 字节流 而设计的传输协议
TCP传输实体: 可以是一个库过程,一个用户进程,或者是内核的一部分
TCP传输实体A接收本地进程的用户数据流,将他们分割成不超过64KB的段 (segment) ,并以IP数据报形式发送到另一机器的传输实体B.B重构原始字节流。
应用层
DNS
电子邮件
邮件业务是运行在传输层TCP传输协议之上的
用户代理
传输代理
邮件格式
RFC5322
ASCII字符
MIME
多钟类型文件
邮件传送
SMTP(简单邮件传输协议)
- ASCII协议
- 在计算机的25号端口
- TCP连接
pop3
IMAP
以服务器为核心的邮件管理协议,所有邮件都是存储在服务器中,以此能够在公共管理邮件,从而能够在多个终端读取邮件。
万维网
一个分布式的超媒体系统
- HTTP 超文本传输协议
- URL 统一资源定位符
- HTML 超文本标记语言
- 超链接