PS:结合老师屁屁踢复习吧,图片丢失太多懒得改了
-
point
单播:只有一个发送方和一个接收方的点到点传输。
组播:将一个数据包发送给一组机器,即所有机器的一个子集。
广播:将一个数据包发送给所有的目标机器。
面向连接的服务:按照电话系统建模,服务用户首先必须建立一个连接,然后使用该连接传输数据,最后释放连接。
无连接服务:按照邮政系统建模,每个报文都携带了完整的目标地址,每个报文都由系统中的中间节点路由,而且路由独立于后续报文。
服务:由一组原语正式说明,用户可以通过这些原语来访问该服务。
频分复用(FDM):将频谱分成几个阶段,每个用户完全拥有其中的一个频段来发送自己的信号。
波分复用(WDM):整个波长频带被划分为若干个波长范围,每个用户占用一个波长范围来传输。
时分复用(TDM):每个用户周期性的获得整个带宽非常短的一个时间。
对等通信(P2P):对等链接是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方,只有两个主机都运行了对等链接连接,他们就可以进行平等的对等连接通信。
DNS:一种层次的,基于域的将主机名(域名)映射成 IP 的命名方案。
计算机网络:表示一组通过单一技术相互连接起来的自主计算机集合。
TCP/IP 协议:TCP/IP 是一组协议的代名词,它还包括许多别的协议,组成了TCP/IP 协议簇。TCP 提供运输层服务,而 IP 提供网络层服务。TCP/IP 协议作为一个网络体系结构,它分为四个层次,自底向上依次为数据链路层,网络层,运输层和应用层。
ARP:地址解析协议,根据 IP 地址获取以太网地址的协议。主机 A 通过广播请求拥有目标 IP地址的主机,目标主机返回一个包含自己以太网地址的应答,这个广播和应答的过程所用的协议就是 ARP 协议.
ICMP:控制消息协议,通过向数据包的源地址报告有关事件使网络运行正常.
TTL:time to live,生存时间,IP 头里面用来限制数据包生存期的计数器。
汇集树:依照最优化原则,从所有的源到一个指定目标的最优路径的集合构成的一棵以目标节点为根的树。
多路复用:一种信道的共享形式,用单根线缆传递多个信号。
带宽:单位时间内可以传递的数据位数,或对于介质而言没有明显衰减的一段频率范围。
协议:通信双方为了正常通信所进行的一组规则或约定的集合。
NAT:网络地址转换协议.在网络内部使用私有地址,在网络外部使用共有地址。使用源端口号+私有 IP 地址映射为新的原端口号,私有 IP 转换为公有 IP。解决 IP 短缺问题。
ADSL:非对称用户数字线路。将线路带宽划分为多个信道,其中一大部分用于下行数据,一小部分用于上行数据,保留单独的语音信道,并使用几个信道隔离数据信道和语音信道。
隧道技术:当两端网络属于同一种网络时,中间网络采用的一种封装技术。在网络中间使用新的协议头驱动,在两端网络使用原有协议头驱动。
HDLC:高级数据链路控制,是一组用于在网络结点间传递数据的协议,各项数据和控制信息都以比特为单位,采用“帧"的格式传输.
交换机:数据链路层,多端口的网桥.根据帧目的地址转发,常被用来链接独立计算机。
路由器:网络层,当一个分组进入到一个路由器中的时候,帧头和帧尾被剥掉,位于帧的 IP分组被传递给路由软件,路由软件利用分组的头信息来选择一条输出路线.
网关:传输层,应用层.应用网关是一个网络和另一个网络进行相互连通,提供特定应用的网际间设备。设在传输层的叫传输层网关。
链路:链路指的是网络中两个设备之间的物理或逻辑连接,分为物理链路和逻辑链路,物理链路指实际的物理媒介如光纤,交换机等物理设备,逻辑链路指的是通过某种形式的信号协议在物理媒介上建立的通信路径
-
question
-
1、计算机网络中使用两种主要的交换技术,简述这两种交换技术的工作原理。
(虚)电路交换和分组交换。 电路交换的原理:首先建立一个连接;在所建立的连接上传递数据;数据传输完毕之后拆除连接。 分组交换的原理:每个分组携带者完整的目的地址,独自选择路径。
-
2、试简述 CSMA/CD 协议的工作原理?
CSMA/CD 协议即载波监听,多点接入,碰撞检测。 首先,每个站点发送数据之前必须侦听信道的忙、闲状态。如果信道空闲,立即发送数据,同时进行冲突检测;如果信道忙,站点继续侦听总线,直到信道变成空闲。 如果在数据发送过程中检测到冲突,将立即停止发送数据并等待一段随机长的时间,然后重复上述过程。 即:先听后发,边听边发;冲突检测,延时重发。
-
3、TCP 协议是面向连接的,但 TCP 使用的 IP 协议却是无连接的。这两种协议都有哪些主要的区别?
IP 协议提供的是不可靠的、“无连接”的服务。 TCP 协议提供的是可靠的、“面向连接"的服务。 TCP 协议实现的是主机应用程序之间的通信,IP 协议只实现主机之间的通信。
TCP 协议是以IP 协议为基础实现的,给应用层提供服务;
IP 协议为 TCP 协议提供服务。
简单来说,IP 协议负责将数据从一台主机传输到另一台主机,而 TCP 协议保证传输的正确性。
-
4、假定所有的路由器和主机都正常工作,所有软件也都正常运行。那么是否还可能会把分组投递到错误的目的地址?
有可能。 因为分组在传输过程中可能遭到破坏,分组的校验和并不能检查出所有的差错。如果分组的目的地址字段在传输过程中改变,但整个分组的校验和检验仍然正确,分组将会被投递到错误的目的地址,并可能被接收为正确的分组。尽管这种可能性非常小,但仍可能发生。
-
5、请简述因特网中某一个路由器的 IP 层所执行的分组转发算法。
(1)从 IP 数据报的首部提取目的地址 D,得出网络地址 N; (2)若 N 是与路由器直接相连的网络地址,则直接交付给D;否则(3); (3)若路由表中有 D 主机路由,则数据报传送给下一跳路由器;否则(4); (4)若路由表中有到网络 N 的路由,则数据报传送给下一跳路由器;否则(5); (5)若路由表中有默认路由,则数据报传送给默认路由器,否则(6); (6)报告分组转发出错。
-
6、简述数据链路层使用的一种滑动窗口协议的工作过程,并具体说明其如何实现差错控制和流量控制来达到可靠的数据传输的目的。
发送窗口大小为 1,接收窗口大小也为 1。一般来说,两个数据链路层一个先开始,发送第一帧.初始启动的机器从它的网络层获取第一个分组,然后根据分组创建第一帧,并将它发送出去。当这一帧到达时,接收方的数据链路层检查该帧,看它是否为重复帧。如果它正式所期望的那一帧,就将它传递给网络层.然后接收窗口向前滑动,并发送一个确认帧,确认域包含了最后收到的无错误的帧序列号,如果该序列号和正在发送的帧序列号一致,则发送方知道存储在 buffer 中的帧已经处理完毕。于是它从网络层获取下一帧。无论什么时候,只要发出一帧就要返回一帧. 差错控制:接受方发送反馈信息来确保可靠;引入计时器防止丢失某一帧导致发送方持续等待;通过序号保证每一帧顺序和防止重复接收. 流量控制:基于反馈的流量控制,返回确认,才可以发送下一帧。
-
7、ARP 协议建立 IP 地址与 MAC(物理)地址的映射,支持数据在网络内的传输。根据所学知识,回答下述问题: 1)简述通信双方在同一个网络内的 ARP 工作过程。 2)简述通信双方不在同一个网络时的 ARP 工作过程。
假设主机 A 给主机 B 发消息 1)先查询ARP高速缓存,若缓存表中存在主机B的IP地址和MAC地址,则直接将其传给主机A;若不存在则主机 A 广播,该广播包携带 B 的 IP 地址,一旦 B 发现自己的 IP 地址与其一致,它就会用自己的 MAC 地址作为应答,使 A 得到自己的 MAC 地址。 2)主机 A 广播,但是发现目的IP 地址和自己不在一个子网。于是它转而请求路由器的MAC地址,把数据传送过去,再由路由器与子网外的主机进行交互.在路由表找到对方所属的子网后,在该子网内广播找到 B 的 MAC 地址.
-
8、简述网桥(交换机)的工作原理。
网桥工作在数据链路层,将多个 LAN 连接起来,通过检查数据链路层地址转发帧。 网桥内部配备着一个大的表,这个表列出了所有的可能目的地址和它隶属的输出端口。
当一帧到达时,网桥对目的地址进行查询
- 如果目的地址端口和源端口相同,则丢弃该帧;
- 如果不同,就转发该帧到目的端口;
- 如果目的端口未知,则使用洪泛算法将帧发送到所有的端口,除了它入境的那个。
-
9、简述 DNS(域名服务器)的工作原理。
DNS的实际功能就是将域名映射到资源记录上。
应用程序调用名为解析器的库程序,将名字作为参数传递给此程序。解析器向本地 DNS 服务器发送一个包含该名字的请求报文;本地 DNS 服务器查询该名字,并且返回一个包含该名字对应 IP 地址的响应报文给解析器。
查询报文和响应报文都作为 UDP 数据包发送。
-
10、典型的电话系统是一个分层系统,主要包括本地回路、交换局和主干线.根据所学知识,回答下列问题: 1)本地回路使用到的主要技术是什么?有哪些实现方式? 2)主干线使用到的主要技术是什么?有哪些实现方式? 3)交换局使用到的主要技术是什么?有哪些实现方式? 4)电话系统为什么不使用平面系统,而是使用分层系统?
1)数字信号:不归零、不归零逆转、曼彻斯特编码、差分曼彻斯特编码。 模拟信号:幅移键控、频移键控、相移键控、相对调相。
2)多路复用:时分复用、频分复用、波分复用。
3)交换局:电路交换、报文交换、分组交换。
4)因为将每台电话和其他所有电话都连接起来的模式是不现实的,使用平面系统,电话难以管理,浪费人力物力。
-
11、漏桶和令牌桶是网络中用于流量整形的主要方法。根据所学知识,回答下面问题: 1)漏桶的工作原理是什么? 2)令牌桶的工作原理是什么? 3)两种算法的区别是什么?
1)在每个主机连接到网络的接口处都包含一个漏桶,即一个有限长度的内部队列.如果当队列满的时候,又有一个分组到来,则该分组被抛弃。每经过一个常数时间才允许把一个分组放到网络上.
2)令牌桶中保存的是令牌,这些令牌由时钟产生,每隔T 产生一个。要使一个分组被传送出去它就必须要抓住并销毁一个令牌,令牌桶允许将令牌保存起来,直至达到桶的最大尺寸 n,当令牌桶满后,令牌桶丢弃令牌,不丢弃分组。
3)流量整形策略不同:漏桶法不允许将空闲的主机许可权保存起来以便将来发送更大的突发数据,而令牌法则允许将许可权保存起来,直至达到桶的最大尺寸。
丢弃对象不同:当令牌桶满了之后,丢弃令牌,但是不丢弃分组;相反的,在漏桶算法中丢弃分组。
-
12、链路状态路由协议是常见的一类动态路由协议,每台路由器基于完整的网络拓扑信息计算路由表。根据所学知识,回答下面问题: 1)链路状态路由协议的工作原理是什么? 2)采用了什么方法来提供较少代价、可靠的信息扩散?
1)每台路由器周期或触发地将自己的邻接信息发送给网络上所有其他路由器。每台路由器根据来自所有节点的邻接信息形成一张完整的网络拓扑图,求取自己到所有节点的最短路径,完成自己的路由表。 2)接受方发送反馈信息来确保可靠;引入计时器防止丢失某一帧导致发送方持续等待;通过序号保证每一帧顺序和防止重复接收.
年龄字段
-
13、论述题:CSMA/CD 是经典以太网中使用的介质访问控制技术。根据所学知识,简答下述问题 1) 什么是介质访问控制问题? 2) 简述 CSMA 协议的工作原理。 3) 简述 CD 协议的工作原理. 4) CSMA/CD 协议可以直接应用到无线局域网吗?为什么?
1)用于在多路访问信道问题上确定下一个使用者的问题。 2)当有一个站想发送数据时,先侦听信道上是否有其他站正在传递数据,如果没有,它就发送数据,如果有,就等到信道变成空闲,然后发送一帧,如果发生冲突,就随机等待一段时间再重复上述过程。 3)不仅在发送前侦听信道,在发送过程中也侦听信道,一旦检测到冲突就立即停止传输信息,等待一段时间再发送. 4)不能。无线通信系统通常不能检测出正在发生的冲突。;无线电传输范围有限,无线局域网中的站无法给其他所有站发送帧,也无法接收到来自所有站的帧;无线局域网信息传输会出现隐藏端问题和暴露端问题,CSMA/CD解决不了。
-
14、简述内部网关协议 RIP 的工作原理。
RIP(路由信息协议) 是基于距离矢量路由算法的一个内部网关协议,工作原理如下:每台路由器周期性地将自己的距离矢量发送给所有邻居。每台路由器根据邻居的路由矢量计算自己新的路由表。
-
15、简述传输层中伪首部的作用。
有助于检测出被错误递交的数据包.
-
16、路由器属于哪一层的设备?
网络层
-
**17、介质访问控制是基于广播的局域网中必须解决的问题。根据所学知识,回答下面问题:
-
以太网中采用的介质访问控制协议是什么?简述其工作原理。
-
无线局域网中采用的介质访问控制协议是什么?简述其工作原理。**
1)CSMA/CD: 2)CSMA/CA:
-
18、路由器是网络层的一种主要设备,依赖其中维护的路由表进行数据转发。路由表由路由协议(算法)来建立和维护.根据所学知识,回答下述问题: 1) 列举所学主要的动态路由协议(算法),并说明其工作过程。 2) 说明一个 IP 分组到达一台路由器后,其主要的转发过程。 3) 分布于路由器的路由表中可能存在环路,IP 协议是如何应对这一问题的?
1)距离矢量算法:每台路由器维护一张表,表中列出了当前已知的到每个目标的最佳距离。路由器周期性地将自己的距离矢量发送给所有邻居.每台路由器根据邻居的路由矢量计算自己新的路由表。 链路状态协议:每台路由器周期或触发地将自己的邻接信息发送给网络上所有其他路由器。每台路由器根据来自所有节点的邻接信息形成一张完整的网络拓扑图,球去自己到所有节点的最短路径,完成自己的路由表. 2)当新的消息进入路由器时,首先进入等待队列,通过一定的调度策略进行调度.调度到这个消息时,获取其目的地址,将目的地址分别与路由表中的每一项网络号的子网掩码进行比对,选取最长匹配的网络表项进行转发。当然,没有查询到匹配的时候,转发到缺省表项,也就是上一层路由,继续寻找。 3)设置一个最大跳数,使得跳数减为 0 时,数据包丢弃,防止陷入环路。
-
**19、TCP 协议实现端到端的可靠的数据传输,其数据发送速率取决于两个方面:网络传输能力,通信双方的处理和缓存能力。这两种能力分别使用拥塞窗口、流量控制窗口来描述。根据所学知识,回答下面问题:
-
流量控制窗口大小的取值是如何实现的? 2) 拥塞窗口大小的取值是如何实现的? 3) 如何使用这两个窗口的取值来确定当前数据的发送速率的?**
1)接收端可以缓冲的字节数 2)发送端可以往网络发送的字节数 3)取两者之间的最小值然后除连接往返时间。
-
20、滑动窗口协议是数据链路层的一个重要协议 ,提供在一条不可靠的线路上可靠的数据递交.根据所学知识,回答下述问题: 1) 发送窗口和接收窗口的含义是什么? 2) 滑动窗口是如何提供流量控制的?
1)发送窗口:已经发送,没有收到确认的帧的集合;接收窗口:可以接受的帧的集合。 2)发送方可以一直发送至发送缓冲区满,此时发送方必须停止发送,只有发送缓冲区的一部分为空时才能继续发送。而缓冲区的清空依赖于接收方发回的确认。接收方可以通过控制发送确认的速率来实际控制发送方的发送速率,从而避免被过快的发送方淹没达到流量控制的目的.
-
21、拥塞控制是网络一个重要的研究课题,当网络负载过重时,网络会执行相应的协议来避免、处理拥塞的发生.这些协议包括网络层的 RED 协议和传输层的 TCP 慢启动协设。根据所学协议知识,回答下面问题 1)RED 协议的工作原理是什么 2)TCP 慢启动协议的工作原理是什么? 3) 为什么两者的配合能够在一定程度上解决拥塞?
1)当某条链路上的平均队列长度超过某个阈值时,该链路就被认为即将拥塞,因此路由器随机丢弃一小部分数据包。 2)一开始将拥塞窗口大小设为 1,然后成倍增加(指数级)拥塞窗口的大小来试探网络连接状况,主要过程为发送一个数据段停下来等待应答,每收到一个应答,拥塞窗口大小就增大一倍,直到到达所设定的阈值。 3)当网络中路由器的被使用缓冲区大小到达路由器的阈值的时候,路由器开始执行RED 协议,随意丢弃一些分组,被丢弃的分组的发送方会因此超时,这时通过 TCP 慢启动会降低发送方速率.
-
22、IP 包与路由表的匹配过程,如果有多个匹配结果怎么办。
使用子网掩码长度最长的那个表项
-
23、ARP 的目的
完成 IP 地址到 MAC 地址的转换
-
计算机网络复习
第一章 概述
1.1 计算机网络的定义
计算机网络定义 P2P
计算机网络是自主(自治)的计算机通过通信技术**(通信线路和通信设备)**互连起来的集合体 autonomous interconnected collection
Internet由⽹络通信设备、通信线路及基于共同通信协议TCP/IP的多个计算机⽹络系统互联⽽构成的全球性计算机⽹络,是⽆特定⽹络疆界的⽹络互联的集合。前身是ARPANET实验⽹。
-
P2P
对等网络(Peer-to-Peer)的缩写,也称为点对点网络。它是一种计算机网络架构,其中参与网络的计算机或设备彼此平等地连接并共享资源,而不依赖于中央服务器。在P2P网络中,每个节点既可以充当客户端,也可以充当服务器,它们之间作为对等实体直接通信并交换数据。
-
功能
- 数据通信
- 资源共享
- 分布式处理
- 提高可靠性
- 负载均衡
-
分层结构
我们把计算机网络的各层及其协议的集合称为网络的体系结构,其通常都具有可分层的特性,分层的基本原则为
- 每层都实现一种相对独立的功能,降低大系统的复杂度
- 各层之间界面自然清晰,易于理解,相互之间交流尽可能少
- 各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术实现
- 保持下层对上层的独立性,上层单向使用下层提供的服务
- 整个分层结构应能促进标准化工作
1.2 网络硬件
broadcasting multicasting unicasting LAN MAN WAN Internet packet switching
-
传输技术角度:
广播式链路(广播,多播或组播)和点对点链路(单播)
(其中广播更适合小网络,点对点更适合大网络)
-
距离尺度角度:
个域网,局域网,城域网,广域网,互联网
-
PAN
个域网,允许设备围绕着一个人进行通信。一个常见的例子是计算机通过无线网络与其外围设备进行连接。
-
LAN
局域网,三个特征:范围、传输技术、拓扑结构
- 范围:限定在一个相对较小的地理区域范围
- 传输技术:有限局域网大多使用铜线作为传输介质,也有使用光纤 无限局域网的一个标准为IEEE 802.11(俗称WIFI)
- 拓扑结构:有线局域网以点到点链路为基础。最常见的有线局域网为IEEE 802.3(以太网)。常见的局域网拓扑结构包括总线型(Bus)、星型(Star)、环型(Ring)和混合型(Hybrid)等
每台计算机按照以太⽹协议规定的⽅式运⾏,通过⼀条点到点链路连接到⼀个盒⼦,这个盒⼦称为交换机(switch)。这就是交换式以太⽹名字的由来。⼀个交换机有多个端⼝(port),每个端⼝连接⼀台计算机。
-
MAN
城域网,最有名的城域网例子是许多城市都有的有线电视网。
-
WAN
广域网。每个办事处都有专⻔运⾏⽤户(即应⽤)程序的计算机。我们将按照传统的说法把这些机器称为主机(host) ,然后把连接这些主机的⽹络其余部分称为通信⼦⽹ (communication subnet) ,或简称为⼦⽹(subnet)。⼦⽹的⼯作是把信息从⼀个主机携带到另⼀个主机。 ⼦⽹由两个组成部分:传输线路和交换元素。传输线路负责在机器之间移动⽐特;交换元素或称为交换机是专⻔的计算机,负责连接两条或以上的传输线路。当数据到达⼀条⼊境线路时,交换元素必须选择⼀条出境线路把数据转发出去。称为路由器。 如果两个想通信的路由器没有 共享同⼀条传输线路,那么它们必须通过其他路由器间接地进⾏通信。⽹络中可能存在许多条路径都可以连接这两个路由器。⽹络如何决定使⽤哪条路径的策略称为路由算法(routing algorithm),这样的算法有许多。每个路由器如何决定把⼀个数据包发送到哪个位置的策略称为转发算法(forwarding algorithm)
-
Internet
Internet由⽹络通信设备、通信线路及基于共同通信协议TCP/IP的多个计算机⽹络系统互联⽽构成的全球性计算机⽹络,是⽆特定⽹络疆界的⽹络互联的集合。前身是ARPANET实验⽹。
-
数据交换
- 电路交换:在源节点和目标节点之间建立一条专用的通路用于数据传输,包括建立连接,传输数据和断开连接三个阶段。
- 报文交换:用户数据加上源地址、目标地址、校验码等辅助信息,然后封装成报文。整个报文传输到相邻结点,全部存储后在转发给下一个结点,重复这一过程直到达到目标结点。
- 分组交换:将数据分成较短的固定长度的数据块,在每一个数据块中加上目的地址、源地址等辅助信息组成分组(包),以存储转发。
1.3 网络软件
protocol layer interface service 错误控制 //补充 流量控制 //补充 面向连接与无连接的服务 可靠和不可靠的服务 服务与协议的关系 OSI参考模型 TCP/IP参考模型
-
protocol
协议,为了进行网络中数据的交换而在同一层的对等实体之间建立的规则、标准或约定(水平的)
- 是对等实体通信的规则,对等实体(peer)使用同一个协议
- 不同层有不同的协议
- 每层可能有多个协议
<aside> 💡 层和协议的集合被称为网络体系结构,一个特定的系统使用的一组协议,即每一层一个协议,称为协议栈
</aside>
-
layer
层,在计算机网络中,层(Layer)的概念是网络体系结构的基础,在计算机网络的层次结构中,每一层都建立在其下一层的基础之上,每一层的目的都是为了向上一次提供特定的服务
-
interface
接口,在每对相邻层次之间的是接口,定义了下层向上层提供哪些原语操作和服务,也是相邻两层间交换信息的连接点。
-
service
服务,服务是下层为紧邻的上层提供的功能调用,它是垂直的。对等实体在协议的控制下,使得本层能为上一层提供服务,但要实现使用下一层所提供的服务。
服务原语:
上层使用下层所提供的服务时必须与下层交换一些命令,这些命令在OSI中被称为服务原语。
⼀个服务通常是由⼀组原语的操作来描述的,⽤户进程通过这些原语操作,可以访问该服务。
-
层次设计问题
- 差错控制:检错、纠错
- 路由选择
- 寻址和命名:标识发送方和接收方
- 多路复用:根据主机的短期需求变化动态共享网络带宽
- 流量控制:保持快速发送方不会把慢速接收方淹没
- 服务质量:调和竞争需求机制
-
数据传输规则
- 单工通信:单向
- 半双工通信:双向,但不能同时
- 全双工通信:双向,且可同时
-
面向连接与无连接
-
面向连接
先建立连接,再通信,最后释放连接。在数据传输过程中,各分组可以不携带⽬的节点的地址。类似于⼀个通信管道,发送者在⼀端放⼊数据,接收者从另⼀端取出数据。收发数据顺序不变,传输可靠性好,但是协议复杂,通信效率不⾼。
-
无连接服务
按照邮政系统建模。每个报⽂都携带了完整的⽬标地址,每个报⽂都由系统中的中间节点路由,⽽且路由独⽴于后续报⽂。数据分组在传输过程中,⽬的结点接收的数据分组可能出现乱序、重复与丢失的现象。⽆连接服务的可靠性不好,但是协议相对简单,通信效率⾼
-
-
服务与协议的关系
服务是指某⼀层向它上⼀层提供的⼀组原语,服务与两层之间的接⼝有关,低层是服务提供者,而上层是服务⽤户。类似于Java中类的定义,定义了执⾏什么操作,但并未定义如何执行操作。 协议是⼀组规则,规定了同⼀层上对等实体之间所交换的数据包或者报⽂的格式和含义。类似Java中类成员函数的具体实现
-
QoS服务质量
每个服务都可以用一个服务质量(quality of service)来表述其特征。有些服务是可靠的,意味着它们从来不丢失数据。一般情况下,一个可靠服务是这样实现的:接收方向发送方确认收到的每个报文,因而发送方可以据此保证报文已经到达接收方。确认过程本身要引入额外的开销和延迟,通常这是值得的,但有时也不一定需要。
-
通讯协议的四种类型
- 面向连接与确认服务
- 面向连接与不确认服务
- 无连接与确认服务
- 无连接与不确认服务
参考模型:
-
OSI(开放系统互联)参考模型
物理层
- 利⽤传输介质为通信的⽹络结点之间建⽴、管理和释放物理连接;
- 实现⽐特流的透明传输,为数据链路层提供传输数据服务;
- 数据传输单元是⽐特。
数据链路层
- 在物理层提供的服务基础上,数据链路层在通信的实体间建⽴数据链路连接;
- 传输以帧为单位的数据包;
- 采⽤差错控制与流量控制⽅法,使有差错的物理线路变成⽆差错的数据链路。
网络层
- 通过路由选择算法为分组通过通信⼦⽹选择最适当的路径;
- 为数据在结点之间传输创建逻辑链路;
- 实现拥塞控制、保证⽹络服务质量等功能。
传输层
- 向⽤户提供可靠端到端服务;
- 处理数据包错误、数据包次序,以及其它⼀些关键传输问题;
- 传输层向⾼层屏蔽了下层数据通信的细节,是计算机通信体系结构中关键的⼀层。
会话层
- 负责维护两个结点之间的传输链接,以便确保点到点传输不中断;
- 管理数据交换。
表示层
- 处理在两个通信系统中交换信息的方式;
- 数据格式交换;
- 数据加密与解密;
- 数据压缩与恢复。
应⽤层
- 为应⽤程序提供网络服务;
- 需要识别并保证通信双方的可⽤性,使得协同⼯作的应用程序之间的同步;
- 建立传输错误纠正与保证数据完整性的控制机制。
-
TCP/IP参考模型
OSI与TCP/IP的⽐较 OSI 明确了三个主要概念:服务、接⼝、协议,并且定义清晰; 协议有很好的隐藏性;(服务与协议的分离) 产⽣在协议发明之前; 共七层。⽹络层:连接和⽆连接;传输层:⾯向连接。 TCP/IP 没有明确区分:服务、接⼝、协议; 产⽣在协议发明之后; 共四层。⽹络层:⽆连接(IP);传输层:⾯向连接(TCP)和⽆连接(UDP)。
1.6 802协议、网络标准化
-
电信领域
国际电信联盟ITU,邮电部PTT,公⽤电信公司AT&T。
-
国际标准领域
国际标准化组织ISO,美国国家标准协会ANSI,国家标准和技术协会NIST,电气和电子工程师协会IEEE。
-
IEEE的802标准
- 802.3 以太网Ethernet
- 802.11 无线LAN(WI-FI)
- 802.15 个域网(蓝牙)
- 802.16 宽带无线
第二章 物理层
2.1 数据通信的理论基础
bandwidth 尼奎斯特定理 香农定理
-
bandwidth
带宽,原指信号具有的频带宽度,单位为赫兹(Hz),在实际网络中,由于数据率是信道最重要的指标之一,而带宽与数据率存在数值上的互换关系,因此常用来表示网络的通信线路所能传输数据的能力。
因此,带宽表示单位时间内从网络中某点到另一点所能通过的“最高数据率”,单位为bps(每一秒多少比特)
-
尼奎斯特定理
在理想低通(没有噪声,带宽有限)的信道中,带宽为B,V表示每个码源离散电平的数量(信号级数)
$$ Max.data.rate=2B\log_{2}V\ \ bits/sec $$
如果⼀个任意信号通过了⼀个带宽为 B 的低通滤波器,那么只要进⾏每秒 2B 次(确切)采样,就可以完全重构出被过滤的信号。由于通过样值能恢复出来的⾼频成分⼰经被滤掉了,所以⾼于每秒 2B 次的采样毫⽆意义
-
香农定理
在带宽为B的有噪音信道中(有限带宽,有噪声),信噪比为S/N,则信道的最大数据传输率
$$ Max.data.rate = B \log_2 (1+S/N)\ \ \ \ bits/sec $$
实际中,信噪比常用dB表示,即$10\lg{S\over N}$ 例如:模拟电话系统中,话音信道信噪比的典型值为$30 dB=10\lg{S\over N}$ ,即${S\over N} =1000$,那么信道的数据传输率$£3400×\log_21001≈34000 bps$
比特率:$(bit \ per \ second, bps,b/s)$,信道的传输速率 信道的噪声度量: $\frac SN\ \ \ Signal-to-noise ratio$ 信道的噪声单位:分贝$(dB) = 10lgS/N$
<aside> 💡 注意两个定理均只适用于铜线,不适用于光纤
</aside>
2.2 有导向的传输介质
-
磁介质
将数据从一台机器传输到另一台机器的最常见办法是将数据写到磁带或其他可擦写介质上(例如可刻录 DVD),然后用物理的方法将磁带或者磁盘运送到目标机器,再将数据从磁带或磁盘里读出来。
-
双绞线
双绞线由两根相互绝缘的铜线组成。当两根线绞在一起后,不同电线产生的干扰波会相互抵消,从而能显著降低电线的辐射。
屏蔽双绞线:STP
非屏蔽双绞线:UTP
-
同轴电缆
-
光纤
原理:全反射
三要素:光源,传输介质,检测机
优点:带宽高、衰减小、抗干扰
缺点:成本高、技术陌生、全/半双工取决于接口
-
非导向的传输介质
2.6 PSTN电话系统
Modem的调制方式(调幅;调频) ADSL 干线与复用(FDM;WDM;TDM) 电路交换 分组交换 三种交换方式的比较
-
电话系统结构:
电话系统由本地回路,主干线,交换局组成
-
全连通网络
-
中心交换网络
-
两层体系网络
-
-
本地回路:
-
Modems
调制解调器
要在本地回路或任何其他物理信道上发送比特,必须把比特转换为可在信道上传输的模拟信号。在信道的另一端,模拟信号被还原成比特。执行数字比特流和模拟信号流(代表这些数字比特)之间转换的设备称为调制解调器modem。
调制解调器的调制⽅式:振幅调制AM、频率调制FM、相位调制PM。
-
DSL(不属于)
**数字用户线路,**用铜介质或双绞线传输信号时,随着传输距离的增加,信号不但会发生衰减,传输速度也会变慢,所以每隔一段距离都要对信号进行加强。
-
ADSL
**非对称数字用户回路,**ADSL(Asymmetric Digital Subscriber Line)是一种利用普通电话线传输数据的宽带接入技术。在ADSL中,使用了离散多音调调制(DMT)来实现数据的传输和调制。
本地回路的1.1MHz频谱被分成256条,信道0用于老式电话服务,信道1-5空闲(防止语言信号和数据信号相互干扰),剩下的250条信道中,一条用于上行流控制,一条用于下行流控制,其他全部用于用户数据。
-
光纤到家
-
-
多路复用(干线)
-
FDM
频分多路复用,频谱被分成多个频段,每个用户单独拥有某个频段
-
WDM
波分多路复用,光纤使用,不同波长的光信号经过组合器在一起于光纤上进行传输,终点处解复用器将光进行分离,恢复原始信号
波分复用就是光的频分复用
-
TDM
时分多路复用,时分多路复用是将信道用于传输的时间划分为若干个时间片,每个用户分得一个时间片;在其占有的时间片内,用户使用通信信道的全部带宽。
-
-
交换技术(交换局)
-
电路交换
在源节点和目标节点之间建立一条专用的通路用于数据传输,包括建立连接,传输数据和断开连接三个阶段。
- 数据直接传送,时延小;但线路利率用率低,不便于进行差错控制
-
报文交换
用户数据加上源地址、目标地址、校验码等辅助信息,然后封装成报文。整个报文传输到相邻结点,全部存储后在转发给下一个结点,重复这一过程直到达到目标结点。存储-转发Store and Forward
- 可以充分利用线路容量,可以实现不同链路之间不同数据传输速率的转换,可以实现格式转换,可以进行差错控制;但增大了系统开销,时延大,缓冲区难以管理
-
分组交换
将数据分成较短的固定长度的数据块,在每一个数据块中加上目的地址、源地址等辅助信息组成分组(包),以存储转发。
- 除了报文交换的优点,还有缓冲易于管理,包的平均时延小,网络占用的平均缓冲区小,更易标准化。
目前主流网络基本使用分组交换
路由器使⽤存储-转发传输技术,把经过它的每个数据包发送到通往该包⽬的地的路径上。这个转发过程与电路交换不同。在电路交换中,连接的建⽴过程预留了从发送端到接收端⼀路上的带宽资源,该条电路上的所有数据将⾛相同的路径。另⼀⽅⾯,让所有的数据遵循同样的路径意味着它们到达接收端的秩序不可能出现混乱。⽽在数据包交换中,没有固定的路径,不同的数据包可以⾛不同的路径,路经的选择取决于它们被传输时的⽹络状况,所以它们到达接收端的秩序可能出现混配。 因为在数据包交换中没有为传输数据预留带宽,数据包可能不得不等待⼀段时间才能被转发。这样就引⼊了排队延迟( queuing delay),如果许多包要在同⼀时间被发送出去还会引⼊拥塞
-
第三章 数据链路层
概况
数据链路层在物理层提供服务的基础上向网络层提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
数据链路层的传输单元是帧,其功能可以概括为:
- 成帧 向网络层提供一个定义良好的服务接口
- 差错控制 处理传输错误
- 流量控制和传输管理 调节数据流,确保慢速的接收方不会被快速的发送方淹没
**链路帧:**帧头+净荷域(分组,Payload)+帧尾
帧的长度受硬件的限制,一个分组可能要分成多个帧。
数据链路层的可靠传输——确认和重传机制
数据链路层通常会提供以下3种可能的服务:
-
无确认的无连接服务
源机器发送数据帧时不需先建立链路连接,目的机器收到数据帧时不需发回确认,对丢失的帧,数据链路层不负责重发而是交给上层进行处理,适用于实时通信或误码率较低的通信信道,如以太网。
-
有确认的无连接服务
源机器发送数据帧时不需先建立链路连接,但目的机器收到数据帧时必须发回确认,源机器在所规定的时间内未收到确定信号时,就重传丢失的帧,以提高传输的可靠性,该服务适用于误码率较高的通信信道,如无线通信。
-
有确认的有连接服务
帧的传输过程分为三个阶段:建立数据链路、传输帧,释放数据链路。目的机器对收到的每一帧都要给出确认,源机器收到确认后才能发送下一帧,因而该服务的可靠性最高,适用于通信要求(实时性,可靠性)要求较高的场合。
3.1.2 成帧(Framing)
位填充 字节填充
帧的两个问题:
-
帧的边界问题(定界与同步)
-
帧的透明传输(填充)问题
-
字符计数法
利用每个帧的第一个字节作为计数位,标记该帧的长度(包括计数位本身)
在传输过程中计数位一旦发生错误,整个帧可能存在较大误差
-
字节填充法(字节填充的标志字节法)
在帧的首尾插入标识字符flag,但在二进制中只只有0,1,无法找到特殊的标志字符。所以才在flag前填充一个转义字符ESC,接收方接收到ESC后,会将ESC删除处理。如果ESC本身作为帧的数据,同样在ESC前面添加一个ESC,接收方也会在同样的处理。
- 考虑了重新同步问题,每一帧采用一个特殊的字节作帧界,即帧的开始和结束。
- 特殊字节即为标记字节 (Flag Byte),常用于 PPP (点对点) 协议中。
- 问题 1:传输的数据中有标记字节。
- 解决 1:转义符,在特殊数据前加转义符。(扫描到转义符时,会删除转义符并取后一个字符)
- 问题 2:任意比特数的帧不适用,必须是 8 位整数倍。
- 解决 2:比特标记法。(比特填充的标志比特法)
-
位填充法(比特填充的标志比特法)
当帧内容中出现一个与帧标志相同的位串 01111110 时,则在 5 个 1 后插入一个 0,即变成 01111101,接收方将自动删除第 5 个 1 后的 0。这种方法为位填充法 (零比特填充法),也称为透明传输
-
物理层编码违例法
考虑具体使用的编码方法,如曼彻斯特编码,在这种冗余编码的条件下,可以使用无意义的编码来表示帧的边界
Bit “1” 高-低电平对, Bit “0” 低-高电平对, 帧的边界(高-高,低-低)
3.2 错误检测和纠正(差错控制)
-
奇偶校验
仅用于差错检测,规则为由n-1个信息元和1个校验元组成n个码元
奇校验:在附加校验元之后,n个码元中“1”的个数为奇数
偶校验:在附加校验元之后,n个码元中“1”的个数为偶数
-
循环冗余校验
多项式和二进制数有直接对应关系:
$$ 110001:1x^5+1x^4+0x^3+0x^2+0x^1+1x^0 $$
生成多项式$G(x)$:接收方和发送方的约定,在整个传输过程中不变(最高位和最低位系数必须为1)
信息多项式$R(x):$校验码=生成多项式位数—1
接收方用帧$f(x)$ 除以生成多项式$G(x)$ , 后应补G的位数减⼀位。
异或运算做完后获得对应位数的校验码,将数据和校验码⼀起传送到接收方。接收方用数据拼上校验码,再用生成多项式去做异或,如果余数是零就校验成功。
只要得出的余数 R 不为 0,就表示检测到了差错。//一定有差错
若余数 R 为 0,不一定没有差错 ??
正确的概率接近 100%(与 G(x)多项式有关)
(仅能差错检查、不能100%正确检查)
但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
一旦检测出差错,就丢弃这个出现差错的帧。需要重传机制。
只要经过严格的挑选,并使用位数足够多的除数 G(x),那么出现检测不到的差错的概率就很小很小。
-
海明码
海明码是一种纠错编码,实现原理是在信息位中加入多个校验位,并把海明码的每个二进制位分配进几个奇偶校验组里,从而实现检错和纠错。
以数据码1010为例介绍海明码的编码原理好过程
-
确定海明码的位数 设n为有效信息的位数,k为校验位的位数,则n,k应该满足:
$$ n+k\le2^k+1 $$
tips:这种情况只针对一位出错,多位出错要用更多的校验位
在这个例子里k=3时满足条件,设信息位为$D_4D_3D_2D_1(1010)$校验位为$P_3P_2P_1$,对应的海明码为$H_7H_6H_5H_4H_3H_2H_1$
-
确定校验位的分布 规定校验位在海明位为$2^{i-1}$的位置上,其余各位为信息位,故各位分布如下
$$ H_7\ H_6\ H_5\ H_4\ H_3\ H_2\ H_1\\ D_4\ D_3\ D_2\ P_3\ D_1\ P_2\ P_1 $$
-
分组以形成校验关系 每个数据位用多个校验位进行校验,条件为被校验数据位由校验位组合形成,校验位的位和等于被校验位的位数
-
校验位取值 校验位$P_i$的取值为第i组的所有数据位求异或
-
海明码的校验原理 每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,构成k个校验方程,在这个例子里
$$ S_1 = P_1 \oplus D_1 \oplus D_2 \oplus D_4 \\ S_2 = P_2 \oplus D_1 \oplus D_3 \oplus D_4 \\ S_3 = P_3 \oplus D_2 \oplus D_3 \oplus D_4 \\ $$
若$S_3S_2S_1$的值为“000”,则说明无错,否则说明出错,且这个数就是出错的位号,如$S_3S_2S_1=001$,说明第1位即$H_1$出错,将该位取反则达到纠错的目的。
-
3.3 基本数据链路协议(停等协议)
-
无限制的单工协议
不考虑出错也不考虑流量
假设条件:
-
数据只能单向传输
-
数据链路层之间的通信信道永远不会损坏或丢失帧(不考虑出错)
-
两端的网络层就绪
-
处理时间忽略
-
缓冲区空间无穷大(不考虑流量控制)
-
code
-
-
单工停等协议
不考虑出错但考虑流量
仍然假设信道不会出错且是单向传播,但缓存空间不是无穷大,即可能出现发送方将接收方淹没的情况。
常用的解决方法是,接收方在接收一组数据后,接收方会发送给发送方一个确认帧,一般称为哑帧,从而允许发送下一个帧。
-
code
-
-
有噪声信道的单工协议
考虑出错和流量
帧可能被破坏或者丢失
解决方法:在发送方添加一个计时器,计算一个帧发出后确认帧的到达时间。
接收方接收到数据后,如果已经损坏,则丢弃该数据,不返回确认帧,发送方等待 确认帧超时后会重新发送该数据。
超时同样可能因为确认帧丢失,导致发送方重复发送。
解决方法:发送方在发送帧的开头加上一个序列号,帮助接收方判断是新的帧还是重复的帧。序列号位数1位,选择0或1.(因为只需要确保不重复)
-
code
-
-
总结-ARQ
ARQ自动请求重传:
实用的 CRC 检验器都是用硬件完成的。CRC 检验器能够自动丢弃检测到的出错帧。因此所谓的“丢弃出错帧”,对上层软件或用户来说都是感觉不到的。所以,我们在程序中看不到生成CRC,校验CRC。
发送端对出错的数据帧进行重传是自动进行的,因而这种差错控制体制常简称为 ARQ (Automatic Repeat request),直译是自动重传请求,但意思是自动请求重传。
停等协议的问题:
只能有一个没有被确认的帧在发送中,信道利用率很低
解决方法:使用更大的帧(但帧越大,出错概率越大,将导致更多的重传)
3.4 滑动窗口协议(流量控制)
捎带确认 发送窗口 接收窗口 一位滑动窗口协议 回退N 选择性重发协议
捎带确认:在一对一的通信中,当接收方接收到数据帧时,通常会发送一个确认帧(ACK)来告知发送方数据已成功接收。而在捎带确认中,接收方可以将确认信息放置在自己要发送的数据帧中,以便在发送数据的同时回应确认。
双工传输:
-
滑动窗口:
-
接收窗口:接收方维持一组连续的允许接收帧的序列号
-
发送窗口:任何时候,发送方维持一组连续的允许发送的帧的序列号
发送窗口用于对发送方进行流量控制,发送方窗口大小代表在未接收到确认信息的情况下发送方最多发送的帧数;
同理,接收窗口为了控制哪些为可以接受的帧和哪些是不可以接受的帧;只有帧的序号在接收窗口的序列内,才可以接收否则丢弃。
滑动窗口是如何提供流量控制的?
发送方可以一直发送直到发送缓冲区满,此时发送方必须停止发送,只有发送缓冲区的一部分为空时才能继续发送。而缓冲区的清空依赖于接收方发回的确认。接收方可以通过控制发送确认的速率来实际控制发送方的发送速率,从而避免被过快的发送方淹没达到流量控制的目的。
-
-
1位滑动窗口协议
滑动窗口大小为1,使用3位序列号。 (a) 初始状态。 (b) 第一个帧发送后。 (c) 第一个帧接收后。 (d) 第一个确认帧接收后。
在正常情况下,发送方按序发送数据包,并收到接收方的确认。接收方按序接收数据包,并发送确认。数据包编号递增,表示发送顺序。
在异常情况下,A和B同时发送第一帧,则他们第一帧会交错。即使没有传输错误,也会有至少一半的帧是重复的。
-
code
-
-
回退N和选择重传
保持多个帧同时在传输的技术是**管道化。**出现问题:
- 某个数据流中间的一个帧丢失或损坏
数据链路层有责任按正确的顺序把数据包传递给网络层
接收窗口size 为1 :回退N
接收窗口size 很大:选择回传
回退N:
接收方只是简单丢弃所有达到的后续帧,而且针对这些丢弃的帧不做返回确认。
数据链路层除了接收下一帧外,拒绝接收一切帧。最终发送方超时,并按顺序重传所有未被确认的帧,从那个受损或被丢失的帧开始。
如果信道的出错率很高,会浪费大量带宽
选择回传:
使用这种策略,接收方会将受到的坏帧丢弃,但接收并缓存坏帧后面的所有好帧。当发送方超时,它只重传那个最早的未被确认的帧。如果该重传的帧正确到达接收方,接收方就可按序将它缓存的所有帧递交给网络层。选择重传对应的接收方窗口大于 1。如果窗口很大,则这种方法对数据链路层的内存需求很大。
-
code
第四章 介质访问子层
为了使数据链路层能更好地适应多种局域网标准,802 委员会就将局域网的数据链路层拆成两个子层:
- 逻辑链路控制 LLC (Logical Link Control)子层
- 介质访问控制 MAC (Medium Access Control)子层。
与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关,不管采用何种协议的局域网对 LLC 子层来说都是透明的
关键的问题是当多方竞争信道的使用权时如何确定谁可以使用信道
介质访问控制所要完成的主要任务是,为使用介质的每一个结点隔离来自同一信道上其他结点所传送的信号,以协调活动节点的传输。
用来决定广播信道中信道分配协议属于数据链路层的一个子层,称为介质访问控制子层(MAC)
4.1 静态和动态信道分配
-
静态信道分配
FDM,TDM,WDM
-
频分多路复用(FDM):将多路基带信号调制到不同频率载波上再进行叠加形成一个复合信号的多路复用技术。在物理信道的可用带宽超过单个原始信号所需带宽的情况下,可将该物理信道的总带宽分割成若干个与传输单个信号带宽相同(或略宽)的子信道,每个子信道传输一种信号,这就是频分多路复用。
优点:充分利用了传输介质的带宽,系统效率高;由于技术比较成熟,实现也比较容易。
-
时分多路复用(TDM):将一条物理信道按时间分成若干个时间片,轮流地分配给多个信号使用,每一时间片由复用的一个信号占用,而不像FDM那样,同一时间同时发送多路信号,这样,利用每个信号在时间上的交叉,就可以在一条物理信道上传输多个信号。
-
波分多路复用(WDM): 就是光的频分多路复用。在一根光纤中传输多种不同波长的光信号,由于波长不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
静态分配的缺点
- 无法应对发送方的数量非常多而且经常不断变化的情况。
- 无法应对流量的突发性
- 将单个信道划分为多个静态子通道的做法本质上也是低效的。
-
-
动态信道分配
五个假设:
- 站模型,流量独立
- 单信道
- 冲突可检测
- 时间连续或分槽
- 载波侦听或者不侦听
4.2 多路访问协议
ALOHA CSMA CSMA/CD 最小帧长 MACAW
-
ALOHA—先说后听
Pure(纯)ALOHA:
当网络中的任何一个站点需要发送数据时,可以不进行任何检测就发送数据。如果在一段时间内没有收到确认,该站点就认为传输过程发生了冲突,发送站点需等待一段时间后再发送数据,直至发送成功。
帧时:假设帧的长度相同,因为在同一个信道上传输速度是固定的,所有成功传输的时间也是相同的 。
冲突危险期为$2\tau$,其系统吞吐量为$S=G*e^{-2G}$其中$G$是每帧时产生的帧数
最好的信道利用率为0.184
Slotted(分槽)ALOHA:
把所有各站在时间上都同步起来,并将时间划分为一段段等长的时隙,固定只能在每个时隙开始时才能发送一个帧,从而避免了用户发送数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率。 冲突危险期为$\tau$,其系统吞吐量为$S=G*e^{-G}$
最好的信道利用率为0.368(是pure ALOHA 的2倍)
-
CSMA—载波检测多路访问—先听后说
基本思想:检测其它站点,调整自己的动作,大大提高利用率
(1)1-坚持:
当一个结点要发送数据时,首先侦听信道;如果信道空闲就立即发送数据;如果信道忙则等待,同时继续侦听直至信道空闲;如果发生冲突,则随机等待一段时间后,再重新开始侦听信道。
1-坚持的含义是指当侦听到信道忙后坚持继续侦听信道,当侦听到信道空闲后,发送帧的概率为1,即立即发送数据
(2)非坚持:
当一个结点要发送数据时,首先侦听信道;如果信道空闲就立即发送数据;如果信道忙就放弃侦听,等待一个随机的时间后再重复上述过程。减少了多个结点等待信道空闲后同时发送数据导致冲突的概率,但这也使得数据在网络中的平均延迟增加了。
信道利用率的提高是以增加数据在网络中的延迟时间为代价的。同时这也是针对高负载网络的情况,对于低负载网络来讲,延迟提高的同时可能也会带来信道利用率的下降。
(3)p-坚持:
当一个结点要发送数据时,先侦听信道,如果信道忙,则等待下一个时隙再侦听;如果信道空闲,便以概率p发送数据,以概率1-p推迟到下一个时隙;如果在下一个时隙信道仍然空闲,则仍以概率p发送数据,以概率1-p推迟到下一个时隙;这个过程一直持续到数据发送成功或者因其他结点发送数据而检测到信道忙为止,若是后者,则等待一个随机的时间后再重新开始侦听。
二进制指数后退算法:
基于时间分槽的情况
二进制指数后退算法用于确定等待的随机时间的范围:
在第i次冲突后,等待的时间槽数在$0$~$2^i-1$之间随机选择一个数;
到达10次冲突之后,随机数的选择空间被固定在最大值1023,以后不再增加;
在16次冲突后,控制器放弃努力,发送失败。
在重负载的情况下能有效地分解冲突。
-
CSMA/CD—载波检测多路访问/碰撞检测—边听边说
无法避免冲突,一旦检测到发生冲突立刻停止传输帧,等待随机时间再次发送
在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
4个步骤 三个状态:
其工作流程可以简单概括为:先听后发,边听边发,冲突停发,随机重发
三个状态:冲突、传输、空闲, CSMA/CD是半双工通讯
争用期:
最先发送数据帧的站,在发送数据帧后至多经过时间 $2\tau$(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
最小帧长:
$$ 最小帧长=总线传输时延\times数据传输速率\times 2 $$
以太网(802.3)规定了最小帧长为 64 字节(64 bytes or 512 bits ),低于这个长度需要使用pad域进行填充。凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧
优点:原理比较简单,技术上易实现,网络中各工作站处于平等地位 ,不需集中控制,不提供优先级控制。
缺点:在网络负载增大时,发送时间增长,发送效率急剧下降。
-
无冲突位图协议&有限竞争协议
基本位图法:
- 竞争周期由$N$个时隙组成
- 站点$j$可以通过在时隙$j$内填入1位,以声明有一帧要发送
- 然后按照声明的顺序发送数据
特点:预定协议-发送之前,先声明
可以完全避免冲突,但声明期的引入会降低信道利用率
性能:
- 效率=$d/(N+d)$, N-每帧的开销,d-数据量/帧
- 高负荷下,效率=$d/(d+1), (N=1)$
有限竞争协议:
低负载时用竞争法,使时延较短
高负载时用无冲突协议,使信道利用率较高
在负载较轻的情况下,竞争⽅法(即纯ALOHA 或者分槽ALOHA)更为理想,因为它的延迟较短(冲突很少发生)。随着负载的增加,竞争方法变得越来越缺乏吸引力,因为信道仲裁所需要的开销变得越来越大。⽽对于无冲突协议,则结论刚好相反。在低负载情况下,它们有相对高的延迟,但是随着负载的增加,信道的效率反而得到提高(因为开销是固定的)。
-
MACAW
见4.4
4.3 以太网
二进制指数后退算法(见4.2 CSMA) 最小帧长 曼彻斯特编码 差分曼彻斯特编码 802.3帧格式
在局域网中,硬件地址又称为物理地址,或 MAC 地址。MAC地址是烧录在Network Interface Card(网卡, NIC)里的 ,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。802 标准所说的“地址”严格地讲应当是每一个站的“名字”或标识符。但鉴于大家都早已习惯了将这种 48 bit 的“名字”称为“地址”,所以本书也采用这种习惯用法,尽管这种说法并不太严格。
-
以太网的两个重要措施——(无连接 无确认)
- 采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。
- 以太网对发送的数据帧不进行编号,也不要求对方发回确认。
这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。
-
以太网特性
- 以太网提供的服务是不可靠的交付,即尽最大努力的交付。
- 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送
DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约。 IEEE 的 802.3 标准。 DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网
常用的以太网MAC帧格式有两种标准 : DIX Ethernet V2 标准 IEEE 的 802.3 标准 最常用的 MAC 帧是以太网 V2 的格式
-
曼彻斯特编码
曼彻斯特编码:将一个码元分成两个相等的间隔,前一个间隔为低电平后一个间隔为高电平表示码元0,码元1相反。
- 低 -高 0
- 高 -低 1
优缺点:
- 优点:中间的跳变即可做时钟信号,又能做数据信号,使发送方和接收方同步。
- 缺点:每个码元都被调成了两个电平,所要求的带宽是直接二进制编码的两倍,数据传输速率只有调制速率的1/2
差分曼彻斯特编码:在边界处,电平有突变是0,没突变是1(初始位自己决定)
若码元为1,则前半个码元的电平与上一个码元的后半个电平相同,若为0,则相反。
-
以太网帧&802.3帧格式
以太网 V2 的 MAC 帧格式:
类型字段用来标志上一层(网络层)使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议
数据字段的正式名称是 MAC 客户数据字段
数据字段 46 ~ 1500 字节,当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的 MAC 帧长不小于 64 字节。 最小长度 64 字节 -18 字节的首部和尾部 = 数据字段的最小长度
在帧的前面插入的 8 字节中的第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC 帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是MAC 帧。
802.3帧格式(SOF帧开始定界符,Length帧的长度):
4.4 WLAN
隐藏站和暴露站问题 CSMA/CA 802.11 MAC子层协议
-
隐藏站暴露站问题:
关键问题是:在开始一个传输之前,一个站真正希望知道的是接收方的周围是否有活动情况
隐藏站问题:由于竞争者离得太远而导致站无法检测到潜在的竞争者。
- 当 A 和 C 检测不到无线信号时,都以为 B 是空闲的,因而都向 B 发送数据,结果发生碰撞。
暴露站问题:检测到本跟自己没关系的信号从而影响自己的传输
-
B 向 A 发送数据,而 C 又想和 D 通信。C 检测到媒体上有信号,于是就不敢向 D 发送数据
处理隐藏站问题:
使用请求发送RTS(Request To Send)和允许发送CTS(Clear To Send)
-
CSMA/CA (MACA)协议:
MACAW (Multiple Access with Collision Avoidance for Wireless)
-
MACA(早期协议):
- 发送方发送一个RTS帧给接收方,从而发起发送请求。RTS帧包含发送方要发送的数据帧的长度。
- 接收方接收到RTS帧,如果判断此时信道可以传输,则向发送方发送一个CTS帧进行确认。CTS同样包含发送方要发送的数据帧的长度。
- 发送方接收到CTS帧,开始发送数据
其他站:
如果接收到接收方发出的CTS帧,则表示他们离接收站点很近,需要根据后续数据帧长度保持一段时间的安静,不发送数据。
CSMA/CA(802.11采用的协议):
- 发送方发送一个RTS帧给接收方,从而发起发送请求。RTS帧包含整个通讯过程需要的时间NAV
- 接收方接收到RTS帧,如果判断此时信道可以传输,则向发送方发送一个CTS帧进行确认。CTS同样包含发送方要发送的数据帧的长度。
- 接收方接收到CTS帧,开始发送数据。
- 接收方接收完数据帧后,向发送方返回一个ACK帧确认。
其他站:
无论是接收到RTS还是CTS帧,都根据其中的NAV字段安静一段时间
区别: 为什么CSMA/CA不能解决暴露站问题: 两个协议都可以解决隐蔽站问题,解决这个问题的关键在于离接收方近的站要保持安静。这个通过CTS就可以实现,只要接收到CTS的站保持安静就可以了。 而解决暴露站问题的关键在于,离发送方近的站点不需要保持安静,也就是说不需要对RTS做出任何反应,就像MACA所做的这样。而CSMA/CA中接收到RTS帧的站点也需要保持安静,这就导致了暴露站问题。 那么就到了下一个问题,为什么CSMA/CA要这样做呢,不是自讨苦吃吗。 为什么CSMA/CA中需要对RTS做出反应(安静) 最关键的区别在于,MACA是一个不可靠的协议,他只管发送,不管发送出去的东西有没有被正确接收。而CSMA/CA增加了一个ACK帧进行确认,是可靠的通讯协议。而在NAV这段时间里面,发送方同样有可能接受数据->ACK帧。**为了保证发送方能无冲突接收到ACK,所有离发送方近的站点同样需要保持安静。**所以所有站点无论是接收到RTS还是CTS都需要保持安静一段时间。这也导致CSMA/CA的效率比较低。
-
-
802.11协议:
两种模式选择:
-
DCF(分布式协调功能):不使用中央控制。
-
PCF(点协调功能):使用基站来控制其所在蜂窝网络范围内的所有活动。
所有设备必须支持DCF,但PCF是可选的。
为了减少究竟哪个站在发送的模糊不清,801.11定义了信道监听包括物理侦听和虚拟侦听:
-
物理侦听:检查介质,是否存在有效的信号
-
虚拟侦听:每个站可以保存一个信道何时要用的逻辑记录,通过NAV(网络分配向量获得)
每个帧携带一个NAV字段,说明这个帧所属的一些系列数据可以传输多长时间,当一个数据帧的NAV给出了发送一个确定所需要的时间,所有听到该数据的站都将在发送确认期间推迟发送,而不管他们是否能听到确认的发送。
NAV用于解决隐藏站问题
A想要发送给B,C是A范围内的一个站点,D是B范围内的一个站点,但不在A的范围内:
DCF帧间隔:
为了尽量避免碰撞,802.11规定,所有的站在完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。这段时间的通称是帧间间隔IFS。
802.11帧结构:
持续时间(Duration):通知本帧和其确认帧会占用信道多长时间,按微秒计时。该字段会出现在所有帧中,包括控制帧,其他站使用该字段来管理各自的NAV机制。 序号(Sequence)字段:用于重复帧的检测 帧检验序列(Frame Check Sequence):CRC Frame Control字段: MF:后续将有更多片段(more fragments will follow) Retry:重传(retransmission) Pwr:睡眠状态(sleep state) More:额外的帧(additional frames) W:使用WEP加密 O:严格按顺序处理(processed strictly in order)
管理帧的格式:
- 有Frame control, Duration , Frame Check Sequence字段
- 只有一个地址,而且没有数据部分,大多数关键信息被换成Subtype字段(如ACK、RTS、CTS)
-
4.8 数据链路层交换
网桥 (散列表,flooding算法,逆向学习,动态拓扑结构变化) 生成树网桥 中继器 集线器 交换机 路由器 网关
-
网桥(bridge)
概念:连接多个以太网的桥梁,原来的每个以太网成为一个网段。
网桥监听它所连接的每个网段,建立一个表来反映物理地址位于哪个网段。当数据在网桥会查看数据的目标地址,与路由表进行比较。如果目标地址属于一个网段上传输时,发送数据的网段,网桥就忽略这个数据。如果目标地址在不同的网段,网桥就把数据转发到适当的网段。如果目标地址不在路由表里,网桥就会把数据转发到除源网段之外的全部网段。
Bridges from 802.x to 802.y:
困难:
每个局域网使用不同的帧格式。 相互连接的局域网不一定以相同的数据传输速率运行。 不同的802局域网具有不同的最大帧长度。
网桥工作过程:
网桥的具体转发过程为:
每个网桥都有一个散列表(就是转发表),记录着目的地址(物理地址)对应的端口号和更新时间。当一个帧到达时,查询网桥的散列表。
a.目的地址的端口与源端口相同(即目标LAN与源LAN相同),则丢弃该帧
b.目的地址的端口与源端口不同,则将该帧转发到目的端口
c.目标地址端口未知,则使用泛洪算法,将帧发送到所有的端口,除了他入境的那个。
散列表通过自学习建立,通过不断刷新维护。
泛洪(扩散算法):对于每一个发向未知目标地址的进入帧,网桥将它输入到所有的LAN中(除了他到来的那个LAN之外),随着时间的推移,这些网桥将会学习到每个目标地址都往哪里去。
逆向学习法(backward learning):网桥工作在混杂模式下,所以,它们可以看到每个端口上发送的所有帧,通过检查这些帧的源地址,网桥就可以获知通过那个端口能访问的那些机器。
动态拓扑结构变化:定期扫描哈希表,将几分钟以前的表项都清除掉。
-
生成树网桥:
最低标识符(基于MAC地址)的网桥作为生成树的根。
为了提高可靠性,有人在LAN之间设置了并行的两个或多个网桥,但是,这种配置引起了另外一些问题,因为在拓扑结构中产生了回路,可能引发无限循环。
解决上面所说的无限循环问题的方法是让网桥相互通信,并用一棵到达每个LAN的生成树覆盖实际的拓扑结构。使用生成树,可以确保任两个LAN之间只有唯一一条路径。一旦网桥商定好生成树,LAN间的所有传送都遵从此生成树。由于从每个源到每个目的地只有唯一的路径,故不可能再有循环。
为了建造生成树,首先必须选出一个网桥作为生成树的根。实现的方法是每个网桥广播其序列号(该序列号由厂家设置并保证全球唯一),选序列号最小的网桥作为根。(经过足够的消息交换和扩散)接着,按根到每个网桥的最短路径来构造生成树。结果,从每个LAN到根建立了一条唯一的路径,因而从每一个LAN到其他任何一个LAN也建立了一条唯一的路径。如果某个网桥或LAN故障,则重新计算。
设备层次:
物理层:
- 中继器:模拟设备,用于连接两根电缆段,放大信号。原理是信号再生(不理解帧,数据包和TCP)
- 集线器:有许多输入线路,它将这些输入线路连接起来,在任何一条线路上到达的帧都被发送到其他线路上,可以将多个结点连接成一个共享式的局域网
数据链路层:
- 网桥:连接不同种类的局域网
- 交换机(现代网桥的另一称谓)多端口的网桥。根据帧的目的地址转发,常被用来连接独立计算机。
网络层:
路由器:当一个分组进入到一个路由器中的时候,帧头和帧尾被剥掉,位于帧的IP分组被传递给路由软件,路由软件利用分组的头信息来选择一条输出线路。
传输层:
传输网关,将两台使用了不同的面向连接传输协议的计算机连接起来
应用层:
应用网关,理解数据的格式和内容,并且将消息从一种格式转译为另一种格式
网桥和路由器的区别主要体现在:
-
网桥只能连接两个逻辑相同的网络(它相当于一个二层交换机),而路由器可以连接不同网络;
网桥就是把不同物理位置的机器组成一个大的局域网,连接的多个网络属于同一个局域网;
-
网桥基于 MAC 地址转发,路由器基于 IP 转发;
-
网桥不隔离广播,而路由器可以隔离广播;
-
网桥工作在链路层,路由器工作在网络层;
第五章 网络层
概述
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输
网络层关注的是如何将源端数据包一路送到接收方。为了数据包送到接收方,可能沿途要经历很多跳(hop)中间路由器。这个功能显然和数据链路层的功能不同(数据链路层这是将帧从线路一边传送到线路另一边)。
因此,网络层是处理端到端数据传输的最底层。
网络层必须知道网络拓扑结构(所有路由器和链路的集合),并从中选择出适当的路径。
网络层协议(IP)
-
网络层的主要问题
网络层向传输层提供怎样的服务(“可靠传输”还是“不可靠传输”) 数据包在传输过程中可能会出现误码,也有可能由于路由器繁忙而被路由器丢弃,还有可能出现按序发送的数据包,不能按序到达接收方。如果网络层对于上述传输错误不采取任何措施,则提供的是不可靠传输服务。如果网络层对于上述传输错误采取措施,并使得接收方能正确接收发送方所发送的数据包,则提供的是可靠传输服务。
网络层寻址问题
路由选择问题
-
中继系统
- 物理层中继系统:转发器,集线器
- 数据链路层中继系统:网桥或交换机
- 网络层中继系统:路由器
- 网络层以上中继系统:网关
5.1 网络层设计要点
虚电路子网(虚拟电路) 数据报子网
存储转发数据包交换:
网络中最主要的组件是网络服务提供商 (ISP)的设备(通过传输线路连接的路由器)和客户端设备,在图中ISP 的设备位于阴影椭圆内,而客户设备位于椭圆之外。
向传输层提供的服务:
一个重要的问题是明确网络层向传输层提供什么类型的服务。在设计网络层服务时,一定要牢记下面这些目标: (1 )向上提供的服务应该独立于路由器技术。 (2 )应该向传输层屏蔽路由器的数量、类型和拓扑关系。 (3 )传输层可用的网络地址应该有一个统一编址方案,甚至可以跨越LAN和WAN。
给定这些目标后,网络层设计者有很大的自由度来编写提供给传输层的详细服务规范。 这种自由度通常演变为两个竞争派别之间的激烈争斗。最终讨论的焦点集中在网络层应该提供面向连接的服务还是提供无连接的服务。
-
无连接服务的实现
在无连接服务中,数据包通常被称为数据报,对应网络称为数据报网络。
所有的数据包都被独立地注入到网络中,并且每个数据包独立路由,不需要提前建立任何设置。
管理这些路由表并做出路由选择的算法称为路由算法(routing algorithm)
IP协议是整个Internet的基础,是无连接网络服务的重要范例。每个数据包携带一个目标IP地址。路由器使用该地址来单独转发每一个数据包。
-
面向连接服务的实现
对于面向连接的服务,在发送数据包之前,必须首先建立起一条从源路由器到目标路由器之间的路径。这个连接被称为虚电路,对应网络被称为虚电路网络
虚拟电路和数据报子网的比较:
对比:
- 建立时间和地址解析时间
- 路由器内存所要求的表空间的数量
- 服务质量和避免网络拥塞
- 虚电路具有脆弱性,一旦某个路由器崩溃,那么这个虚电路就会崩溃。
当一个IP分组到达路由器其主要的转发过程:
1)当有一个IP分组到达路由器,进入等待队列,通过某种调度方式进行调度。2)调度到这个消息时,取出其目的地址,并将其与路由表中所有的网络号的子网掩码进行匹配,选取最长匹配的地址进行转发。3)如果没有匹配的表项,发送到缺省表项继续转发。
5.2 路由算法
最优化原则 sink tree 最短路径路由 距离矢量路由及无穷计算问题 链路状态路由 距离矢量路由和链路状态路由的比较 分级路由 广播路由 移动路由
-
最优化原则
如果路由器J在从路由器I到K的最佳路由上,那么J到K的最佳线路就会在同一路由上
-
汇集树
从所有源端到目的端的最佳路由集合,形成了以目的地为根的树
路由算法的目标是为所有的路由器找到并使用汇集树
-
最短路径路由
测量路径长度的方法依据:
站点数量、距离、信道带宽、平均通信量、通信开销、队列平均长度、测量到的时延
采用Dijkstra算法计算最短路径
-
泛洪算法
原理:将收到的每个分组,从除了分组到来的线路外的所有线路上发出
但是这样会导致大量的重复数据包。其中⼀项措施是在每个数据包的头中设置⼀个跳计数器,每经过⼀跳该计数器减⼀,当计数器到达 0 时就丢弃该数据包。理想情况下,跳计数器的初始值应该等于从源端到接收⽅之间路径的⻓度。
-
距离矢量路由及无穷计算问题
原理:
-
每个路由维护一张表,表中列出当前已知的到每个目标的最佳距离,以及所使用的链路。这些表通过邻居之间相互交换信息而不断被更新,最终每个路由器都了解到达每个目的地的最佳链路。
整个⽹络最佳路径的寻找过程称为收敛(算法收敛过慢)。但实际上它有⼀个严重的缺陷:虽然它总是能够收敛到正确的答案,但速度可能⾮常慢。尤其是,它对于“好消息”的反应⾮常迅速,⽽对于“坏消息”的反应异常迟缓。
无穷计算问题:
如果A突然停机了或A与B之间链路断了
无穷计算问题:当某个机器停机时,会可能导致无穷计算,(原因:X告诉Y某个路径并不能告诉Y,Y是否在这条路径上。) 导致无穷计算问题的一个重要原因是把从对方获知的,但在对方已不再有效的信息当成有效信息再传送给对方,使对方当成有效信息使用。因此只要不把从某邻居节点获得的路由信息再发送给该邻居节点,就能基本上避免无穷计算问题。
环路的产生 路由器B认为可以通过路由器C去往A,路由器C认为可以通过路由器B去往A,就形成了环路
环路的补救与避免 1.定义最大值:在RIP (Routing Information Protocol)路由协议中,允许跳数最大值为16 ,这个方案只是补救措施,不能避免环路产生 2.水平分割:水平分割的思想就是在路由信息传送过程中,不再把路由信息发送给接收此路由信息的接口上
-
-
链路状态路由
步骤:
-
发现邻居节点,及其网络地址
- 通过发送HELLO分组实现
-
测量线路开销或延迟
- 发送ECHO分组,延迟估算值=1/2 *测量往返时间
-
构造链路状态分组
- 发送方的标识符、序号(Seq),年龄(Age) ,每个节点邻居列表
- 困难:何时构造:定期创建或出现重大事件时创建
-
发布链路状态分组
- 利用扩散法发布链路状态分组;每个分组包含一个顺序号;每次发送新分组时顺序号加1
- 问题:顺序号的循环使用、路由器崩溃,造成顺序号丢失、顺序号传送错误
- 解决:每个分组的顺序号后加年龄字段
- 算法改进:路由器将分组先存储,比较后再发送,所有链路状态分组都被确认
-
计算新最短路由
- Dijkstra
-
-
距离矢量路由和链路状态路由的比较
- 链路状态路由算法需要更多的内存和计算
- 但是不存在慢收敛问题
- 链路状态路由某个路由将自己的路由状态告诉全部路由器,而距离矢量只是将路由状态告诉给邻居路由器即可。
(1)链路状态路由算法向本自治系统中的所有路由器发送消息,这里使用的是泛洪法(路由器通过所有端口向相邻路由器发送信息,而每一个相邻路由器又发给所有相邻路由器,但不再发给刚才发来信息的路由器)。而距离矢量路由算法是仅仅向自己相邻的几个路由器发送信息。
(2)链路状态路由算法发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”。而在距离矢量路由算法中,发送的信息是本路由器所知道的全部信息,即整个路由表。
(3)只有当链路状态发生状态时,链路状态路由算法路由器才用泛洪法向所有路由器发送此信息,并且更新过程收敛得快,不会出现距离矢量路由算法“坏消息传得慢”的问题。而在距离矢量路由算法中,不管网络拓扑是否发生变化,路由器之间都会定期更换路由表的信息。
相比之下, 距离矢量路由算法容易出现环路问题。
-
分级路由
随着网络规模的增长,路由器的路由表也成比例增长,结果是路由器效率下降,成为网络服务的瓶颈。解决之道是将网络分级,采用分级路由之后,路由器被划分成区域,每个路由器知道如何将数据包路由到自己所在区域内的目标地址,但是对于其他区域的内部结构毫不知情。
-
广播路由
将消息广播给所有的机器,然后让那些感兴趣的机器读取数据
-
简单的给每一个目标单独发送一个分组
-
扩散法
-
多目标路由
-
汇集树/生成树
-
逆向路径转发,当一个广播分组到达一个路由器的时候,该路由器对他进行检查,看他到来的那条线路是否是通常用来给广播源发送分组的那条线路。如果是,那就很有可能该广播分组是沿着最佳路径转发过来的,因而是到达当前路由器的第一份副本,则路由器将该分组转发到除了到来的那条线路之外的所有其他线路上,否则就被当作一个可能的重复分组而丢弃。
-
-
移动路由
静态用户 –从不移动的用户 非静态用户(迁移用户、漫游用户) 移动用户 外地代理 – 管理所有来当地的动态用户 本地代理 – 管理本属本区域,但当时正在外地的用户
过程;
- 外地代理定期广播分组,宣布自己的存在及地址;同时,移动主机可以广播,问“这里有没有外地代理?”
- 移动主机登录到外地代理
- 外地代理与移动主机的本地代理联系
- 本地代理检查安全性信息
- 外地代理得到本地代理的确认后,建立一个表项,并通知移动主机已经登录了
5.3 拥塞控制
RED
-
拥塞:
网络中存在太多的数据包导致数据包被延迟和丢失,从而降低了传输性能,这种情况被称为拥塞。拥塞崩溃表现为随着注负载的增加到超出网络的容量,网络性能骤降。
网络层直接经历着拥塞由它最终确定如何处理过载的数据包。
控制拥塞的最好方法是减少传输层注入网络的负载。
虚电路子网中的拥塞控制:1.准入控制 2.资源预留 数据报子网中的拥塞控制:1.警告位 2.抑制分组 3.逐跳抑制分组
a、抑制包只影响源端
b、抑制包影响途径的每一跳
-
RED
(随机早期检测)
思想:在缓冲区真正耗干之前开始丢弃数据包
阈值:指示拥塞问题的阈值
具体过程;
路由器要维护一个运行队列长度的平均值,当某条链路上的平均队列长度超过某个阈值时,该链路就被认为即将拥塞,因此路由器随机丢弃一小部分数据包。(受到影响的发送方会发现丢包,然后传输协议将放慢速度。)
采用随机丢包而不采用抑制包的原因:当拥塞时,若路由器向发送方发抑制包,那么大量的抑制包反而会加重拥塞。所以网络层解决拥塞的思路就是防患于未然,在局面变得毫无希望前让路由器舍弃负担。
5.4 服务质量
资源预留 缓冲 抖动 漏桶算法 令牌桶
实时性:带宽高,可靠性要求低,延迟要求高,抖动要求高
流量整形:漏桶,令牌桶(问过他们之间的区别)很少让算
调度策略:FIFO,Drop tail,Fair queueing (大概了解)
-
应用需求:
从⼀个源端发到⼀个接收⽅的数据包流称为⼀个流。每个流的需求可由四个主要参数来表示:带宽、延迟、抖动和丢失。总之,这些参数决定了⼀个流要求的服务质量(QoS, Quality of Service)。
过度配置(overprovisioning):
提供良好服务质量的⼀个简单解决⽅案,就是建设有⾜够容量的⽹络,⽆论扔给它什么样的流量都能承担。
延迟的变化(即标准⽅差)或者数据包到达时间的变化称为抖动jitter。
-
流量整形:
流量整形(traffic shaping)是指调节进⼊⽹络的数据流的平均速率和突发性所采⽤的技术。它的⽬标是允许应⽤程序发送适合它们需求的各种各样流量,包括带有某种程度的突发,但要有⼀个简单⽽有⽤的⽅式向⽹络描述可能的流量模式。
缓冲:
- 客户端缓冲:缓冲数据包
- 服务端缓冲:漏桶和令牌桶算法
(1)缓冲数据包:
(2)漏桶和令牌桶:
漏桶算法:
需要发送的数据放到一个称为漏桶的缓冲区,无论注入桶内的速率是大是小,出桶的速率总是恒定的。一旦达到桶的容量,又有一个分组到来时,丢弃该分组。
令牌桶算法:
桶内存放发送数据的令牌,每单位时间获得一定量的令牌,发送数据时取出令牌,流量大小受限于积累的令牌数量。如果桶中令牌为空则必须等待。
区别:
1.漏桶算法能够强行限制数据的传输速率,令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输。因此,漏桶算法对于存在突发特性的流量来说缺乏效率。
2.漏桶满时丢弃的是数据包,令牌桶满时丢弃的是令牌。
令牌桶最大速率传输时间的计算:
$$
MS=B+RS $$
(s最大速率传输时间,M最大传输速率,B桶的容量,R令牌的产生速率)
5.5 网络互连
隧道技术
出过简答题:出过隧道技术的原理
网络并非一个同质的,存在许多不同的网络(包括PAN,LAN,MAN和WAN等而且大量协议应用于不同层)
网络互联: 将两个或者多个网络连接起来形成
事实上,引入网桥的目的就是用它们将不同类型的网络联结起来,或者至少把不同类型的局域网联结在一起。它们的做法是把一个LAN 的帧翻译成另一个LAN的帧。然而,这样的工作并不理想,出于同样的原因网络互联是很困难的。
IP提供了⼀种通⽤的数据包格式,所有路由器都认识这种数据包,因⽽这种数据包⼏乎可以通过所有的⽹络传递
-
隧道技术:
当两端网络使用相同的网络,中间网络使用的一种封装技术。在中间传输时使用新的协议头驱动,在两端网络传输时使用原有的协议头驱动。
是一种通过使用互联网络的基础设施在不同网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便通过互联网传递被封装的负载数据。
隧道被⼴泛⽤于连接那些因使⽤其他⽹络⽽被隔离的主机和⽹络。结果⽣成的⽹络就是所谓的覆盖⽹络,因为它有效地覆盖在基础⽹络之上。部署⼀个具有新特性的⽹络协议是采⽤隧道的⼀个共同原因,就像我们说明的“IPv4之上的IPv6”例⼦。
5.6 Internet的网络层
IPv4协议 IP地址 子网 子网掩码 子网划分 CIDR 地址聚合技术 NAT ICMP ARP工作过程 DHCP OSPF BGP
-
TIPS
IP(每个字段的含义)整个地址的结构需要知道 前缀+主机号
子网掩码的表示方法 (注意位数标识)
子网划分技术
ip地址的类型(A,B,C,D类还有E类) 特殊的ip地址 有效的ip地址范围
CIDR:无类域间路由 线路匹配
NAT(必考 操!):ip地址在内部有效,出去之后换成公共的port映射 (违背网络体最初原则)
ipv6:
因特网控制协议:
OSPF:链路状态路由协议 开放的最短路径优先协议(age 生存时间)五个步骤
BGP(边界网关协议):去年错的很多 网关和网关之间的协议
基于链路状态的 改进了距离矢量路由协议 用于自治域
-
概况
Internet是互相连接的许多网络,将整个Internet黏合在一起的正是网络层协议,即IP协议(Internet Protocol)
Internet中通信:
传输层获取数据流,并将数据流拆分成段,以便作为IP数据包发送。理论上,每个数据包最多包含64KB(但实际中通常不超过1500字节以便可以放入一个以太网帧中)
IP路由器转发每一个数据包穿过Internet,沿着一条路径把数据包从一个路由器转发到下一个路由器,直到数据包到达目的地。
在接收端,当所有数据段到达后,它们被网络层重新组装还原成最初的数据报;网络层将数据交给传输层,再由传输层交给进程。
-
IPV4协议
每个IP数据包分为头部和净荷域; 头部 :20字节-60字节
Version:版本号(协议版本号)
IHL:协议头部长度(单位32位(4字节)的个数 则 最小值为5最大值为15)
Type of service:服务的类型(前6位用来标记数据包的服务类别,后两位携带显式拥塞通知)
Total length:总的长度(最长65535字节)(以太网的最大传送单元MTU为1500字节,因此当一个IP数据报封装成帧时,数据报的总长度不能超过下面数据链路层的MTU值)
Identification:标识,分段是否属于同一个数据包
DF:不分段标志位,DF=0允许分片
MF:更多的段(除数据包中最后一个段外,其余皆为1,表示后面还有分片)
Fragment offset:段偏移(指明该段在数据报中的位置;每个数据包最多8192个段,占13位,以8个字节为偏移单位,因此除最后一个段,每个分片的长度一定是8字节(64位)的整数倍)
Time to live:生命周期(255秒),(即数据报在网络中可通过的路由器数的最大值。路由器在转发分组之前,先把TTL减1,若TTL被减为0,则该分组必须丢弃)
Protocol:传输层使用的协议(即分组的数据部分应该交给哪个传输层协议,TCP为6,UDP为17)
Header checksum:头部校检和(只校检头部)
**Source address , Destination address:**原地址和目的地址(IP地址)
**Options:**选项(允许后续版本包含新的信息),填充项
-
IP地址
Internet上的每台主机和每个路由器都有一个IP 地址,可用在IP数据包的Source address和Destination address 字段。重要的是要注意,一个IP地址并不真正指向一台主机,而是指向一个网络接口,所以如果一台主机在两个网络上,它必须有两个IP地址。然而,大多数主机都连在一个网络,因而只有一个IP地址。与此相反,路由器有多个接口,从而有多个IP地址。
IPv4的⼀个明确特征是它的32位地址,包括前缀和主机号
同⼀⽹络上(⽐如以太局域⽹)的所有主机,其地址的⽹络值是相同的。这意味着⼀个⽹络对应⼀块连续的IP地址空间,这块地址空间就称为地址的前缀(prefix)。前缀中包含⽹络号和⼦⽹号,⼦⽹号位数标识了⼦⽹的数量,这样便于管理,且可以做到⼦⽹屏蔽
每个使⽤⼦⽹的⽹点都选择32位的位模式,对应IP地址⽹络位(前缀)的位置为1,对应IP地址主机位的位置为0。为了使⽤⽅便,常常使⽤“点分十进制表示法”来表示⼀个IP地址和⼦⽹掩码。
因为前缀⻓度仅从IP地址⽆法推断出来,路由协议必须把前缀携带给路由器。有时候,前缀很简单地由⻓度描述,⽐如“/16”。⼦⽹掩码与⼀个IP地址进⾏AND操作,就可以提取出该IP地址的⽹络部分
子网掩码:
- 将IP地址与子网掩码两个二进制数逻辑与(AND)运算后得出的结果即为网络前缀部分
- 将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分
分类和特殊寻址:
-
子网
在内部将一个网络块分成几个部分供多个内部网络使用,但对外部世界仍然像单个网络一样。这就是所谓的子网划分(subnetting),分割一个大型网络得到的一系列结果网络(比如以太网〉称为子网(subnet)。
<aside> 💡 子网在第一章是指网络中的所有路由器和通讯线路的集合
</aside>
当一个IP数据包到达主路由器,查看目标地址,检查它属于哪个子网:
路由器把数据包的目标地址与每个子网的掩码AND操作
路由聚合(route aggregation):
把多个小前缀的地址块合并成一个大前缀的地址块。这个合并过程称为路由聚合。由此产生的较大前缀的地址块被称为超网
最长前缀匹配(最佳匹配):
使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳”组成。在查找路由表时可能会得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因为路由就越具体。
CIDR——无类域间路由:
以可变长分块的方式分配所剩的C 类网络地址,并且可以在软件的支持下实现构造超网的一种IP地址的划分方法。
原理:
- 聚合:方法是将子网网络号最大公共部分聚合为新网络号
- 转发:将目的地址分别与路由表中的每一项网络号的子网掩码进行比对,选取最长匹配的网络表项进行转发。(如果没有匹配项,路由器将该分组转发给一台有更多扩展表的默认路由器)
斜线记法:IP地址/网络前缀所占比特数
-
NAT(网络地址转换)
通过将专用网络地址转换为公用地址,从而对外隐藏了内部管理的IP地址。
NAT的基本思想是ISP为每个家庭或每个公司分配⼀个IP地址(或者,最多分配少量的IP地址),用这个IP地址来传输Internet流量。在客户网络内部,每台计算机有唯⼀的IP地址,该地址主要用来路由内部流量。然而,当⼀个数据包需要离开客户⽹络,发向其他ISP时,它必须执⾏⼀个地址 转换,把唯⼀的内部 IP 地址转换成那个共享的公共 IP 地址。
NAT的实际做法:
大多数IP数据包携带的要么是TCP有效载荷,要么是UDP有效载荷。这两个协议的头都包含了一个源端口和一个目标端口字段。
出境数据包进入NAT盒子时,其源地址被客户真实IP地址所取代;TCP的source port 字段被一个索引值取代(该索引值指向NAT盒子的地址转换表中的一项表项,该表项包含了原来的内部IP地址和原来的端口号)
入境数据包进入NAT盒子时,Source port 从TCP头中提取出来,用于作为索引值查询NAT盒子中的映射表。找到对应的表项后,从该表项中提取出内部的IP地址和原来的的TCP Source port,并将它们插入数据包。
问题:
- NAT违反了IP的结构模型,多个主机可以使用一个IP地址
- NAT将Internet从一个无连接网络变成一个面向连接网络特有的形式
- 违反了最基本的协议分层原则,传输层的数据不再对网络层透明
- 一旦进程不适用TCP或UDP协议,NAT将无法准确定位
- 端口号是16位的所以最多可以将65,536台机器映射到一个IP地址
-
Internet控制协议:
除了用于数据传输的 IP 协议外, Internet 在网络层还有几个辅助控制协议。它们包括 ICMP 协议、 ARP 协议和DHCP协议。
-
ICMP(Internet控制消息协议):Internet Control Message Protocol
当路由器在处理一个数据包的过程中发生了意外,向数据包源端报告有关事件。每一种ICMP消息类型都被封装在一个IP分组中。
-
ARP——地址解析协议 IP -> MAC
地址解析协议。用于完成IP地址到MAC地址的映射。
工作的过程:
IP层协议通过目标机器的IP地址和自己的子网掩码,检查它跟自己是否属同一网络:
(1)同一个网络
如果属于同一网络,就直接在本网络内查找这台机器的MAC。检查ARP高速缓存,如果以前两机有过通信,在A机的ARP缓存表应该有B机IP与其MAC的映射关系,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,则同一局域网所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存。
(2)不同网络:
如果IP协议通过计算发现目标地址与自己不在同一网段内,就直接将交由路由处理,也就是将路由的MAC取过来(于怎样得到路由的MAC:先在ARP缓存表找,找不到可以利用广播);路由得到这个数据帧后,再跟目标主机进行联系,如果找不到,就向主机A返回一个超时的信息。
ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果要找的这个主机和源主机不在同一个局域网上,那么就要通过ARP协议找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。
ARP的优化:
- 缓存(IP,MAC)
- 每个主机开机时广播(IP,MAC)
-
DHCP——动态主机配置协议
计算机启动时,仅有一个嵌入NIC的内置以太网地址或其他链路层地址,没有IP地址。计算机在自己的网络广播请求分配地址。
计算机启动时向DHCP服务器请求IP地址,DHCP服务器给主机分配一个空闲的IP地址。服务器用MAC地址标识该主机。
租赁技术:为每个分配的IP地址制定一个固定的时间,租赁期满前,主机必须重新请求续订。
-
-
OSPF——开放的最短路径优先协议(一种内部网关路由协议):
Internet由大量的独立网络或自治系统(AS)组成,一个组织可以使用自己的域内路由算法。域内路由协议也称为内部网关协议。
OSPF 协议(开放最短路径优先),是一个被普遍实际使用的内部网关路由协议,属于链路状态路由协议的一种。
OSPF 的工作方式本质上是对一张图进行操作:将一组实际网络、路由器和线路抽象到一个有向图中,图中的每条弧有一个权值(距离、延迟等)。两台路由器之间的点到点连接可以用一对弧来表示,每个方向上一个,两个方向上的权值可以不同。广播网络用一个节点表示,加上网络上每台路由器用一个节点表示,从网络节点到路由器节点之间的弧段权值为 0。尽管如此,它们是重要的,因为没有它们就没有通过网络的路径。其他网络只有主机,因此只需要一条到达网络的弧,没有返回弧。这种结构使得路由可以到达主机但不能穿过主机。
OSPF 协议从根本上做了两件事情
首先用一个类似这样的图来表示实际的网络,然后每个路由器使用链路状态方法计算从自身出发到所有其他节点的最短路径。有可能协议会发现多个同样短的路径,在这种情况下, OSPF 记住最短路径集合,并在报文转发期间把流量分摊到这些路径上。这种多路径路由方法有助于负载均衡。
OSPF 可以将这样的AS划分成编号的区域(area),每个区域是一个网络,或者一组互连的网络。区域不能相互重叠,但是也不必面面俱到,也就是说有些路由器可能不属于任何一个区域。全部属于一个区域的路由器称为内部路由器(internal router)。区域是单个网络的一种泛化形式。在区域外部,能见到的是它的目的地而不是拓扑结构。
-
BGP——边界网关:
在一个AS 内部,推荐使用的路由协议是OSPF和IS-IS。在AS 之间,则可以使用另 一个协议,称为边界网关协议(BGP, Border Gateway Protocol)
用于连接自治域。是一种外部网关路由协议。是一种改进了的距离矢量路由协议,保存完整的路由信息。
第六章 传输层
概况:
传输层目标是给它的用户提供从源端到目的端高效的、可靠的和成本有限的数据传输服务,它的用户通常是应用层的进程。
传输服务:
- 传输实体(Transport Entity):完成传输层功能的硬软件
- 传输实体利用网络层提供的服务向高层提供有效的、可靠的服务
传输层的服务类型也分为两种:
- 面向连接的服务
- 面向无连接的服务
<aside> 💡 传输层提供的服务与网络层极为相似。但分层的关键在于,传输层代码完全运行在用户的机器上,但网络层代码主要运行在运行商操作的路由器上。用户对网络层没有真正的控制权,只能在网络层上再加上一层传输层,来提高网络的服务质量。
</aside>
段(segment)来表示传输实体之间发送的消息
6.2 传输协议的要素
寻址 建立连接三次握手 释放连接三次握手 流控制和缓冲
传输服务是由传输协议实现的。
-
寻址
TSAP(传输服务访问点)
NSAP(网络服务访问点)
远方客户程序获得服务程序的TSAP:
- 预先约定,广为人知的TSAP (如Telnet 23; Web Server 80); 适用于永久不变的服务-浪费资源
- 初始连接协议(Initial Connection Protocol):由进程服务器(Process Server)充当代理按需创建服务器--一些服务必须独立于进程服务器(e.g. 文件服务器)
存在⼀个特殊进程称为端口映射器,⽤户需要与端口映射器(它总是在监昕⼀个知名的 TSAP)建⽴⼀个连接;然后,⽤户通过该连接发送⼀条消息指定它想要的服务名字;端口映射器返回相应的 TSAP 地址。之后,⽤户释放它与端口映射器之间的连接,再与所需的服务建立⼀个新的连接。
-
建立连接
关键问题在于确保可靠性,尽管数据包可能丢失,延迟,损坏和重复
解决方法:
-
使用一次性的传输地址
-
连接发起方为每个连接分配一个唯一标识符,并将该标识符放在每个段中
缺陷:每个传输实体长时间保存历史信息。如果系统崩溃,将造成信息丢失
三次握手方案:
-
A发出序号为X的CR Segment;
-
B发出序号为Y的ACK Segment并确认A的序号为X的CR Segment;
-
A发出序号为X的第一个数据 Segment,并确认B的序号为Y的 CR Segment.
-
-
释放连接
- 非对称释放:一方释放连接,整个连接断开,存在丢失数据的危险-
- 对称释放 :适用于固定数量的数据发送,且知道何时完毕。每个方向单独释放,连接释放相互独立。
三次握手释放连接:
-
发送端发送一个DR段启动释放连接
-
当该段到达时,接收端也发送一个DR端,并启动一个计时器
-
当这个DR到达时,最初的发送端发回一个ACK段,释放连接
(接收端接收ACK释放连接 或计时器超时释放连接)
半连接(half-open):
初始的DR和N次重传全部丢失,发送端N次发送DR超时后强行释放连接,而另一方对所有释放连接尝试一无所知,它的连接仍处于活跃状态。
解决:
如果在规定时间的一段时间没有段到来,该连接自动断开
-
差错控制和流量控制
缓存:
由于网络层服务是不可靠的,传输层实体必须缓存所有连接发出的Segment,而且为每个连接单独缓存,以便用于错误情况下的重传。接收方的传输层实体既可以做也可以不做缓存
缓存的方法: 固定大小;可变大小;循环缓冲区
流量控制:滑动窗口协议;不用停等,使用累计确认
6.4 UDP
Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP, User Datagram Protocol)。 UDP 为应用程序提供了一种无需建立连接就可发送封装的 IP 数据报的方法。
特点:
- 不需要建立连接,延迟小
- 简单,没有连接状态
- 报文头小
- 可以尽快地发送,没有拥塞控制,差错控制,不会重传出错的数据段
无连接:
- 收发双方不需要握手
- 每个UDP报文的处理的处理都独立于其他报文
- 经常用于流媒体应用(可以忍受丢包,速率敏感)
UDP数据端:
8字节头+数据部分
UDP length:UDP段(头加数据)的长度,最小8字节,最大65515字节(IP头最小20字节)
6.5 TCP
TCP服务模型 TCP协议 TCP连接建立 TCP连接释放 TCP滑动窗口协议 Nagle算法 愚笨窗口综合症 TCP拥塞控制 slow start
传输控制协议(TCP, Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。
特点:
- 面向连接,全双工,点到点(不支持组播和广播)
- 字节流而不是消息流
- Segment<64KB
- 超时重传
- 按正确顺序重新装配数据报
-
TCP服务模型
(1)套接字Socket:
TCP服务由发送端和接收端创建一种称为套接字的端点获得。
套接字地址: IP地址+端口(port,16bits) 端口是TCP 的TSAP 名字
每个连接可以用两端的套接字标识符来标识,即(socket1, socket2)
1024 以下的端口号被保留,只能用作由特权用户(比如UNIX系统的root)启动的标准服务。这些端口称为知名端口(well-knownport)。
1024~ 49151 之间的其他端口可以通过IANA注册,由非特权用户使用,但是应用程 序可以选择自己的端口号。
-
TCP协议
关键特征:TCP连接上的每个字节都有它自己独有的32位序列号
限制TCP数据段长度的原因:
- 协议的有效载荷
- 网络的最大传输单元(MTU)(1500字节——以太网帧的有效载荷)
TCP 实体使用的基本协议是具有动态窗口大小的滑动窗口协议。当发送端传送一段时,它启动一个计时器。当该段到达接收方时,接收端的TCP实体返回一个携带了确认号和剩余窗口大小的段(如果有数据要发送的话,则包含数据,否则就不包含数据〉,并且确认号的值等于接收端期望接收的下一个序号。如果发送端的计时器在确认段到达之前超时,则发送端再次发送原来的段。
TCP协议头:
固定的头(20字节)+0或多个数据字节组成(选项)(0或32位倍数)+数据(可选)
没有任何数据的TCP段也是合法的,通常被用作确认和控制消息。
-
源端口(Sourceport)和目标端口(Destination port)字段:
标识了连接的本地端点。
-
序号(Sequence number):
发送的第一个字节的序号
-
确认号(Aclmowledgement number):
下一个期待的字节(属于累计确认,用一个数字概括了收到的所有数据)
-
TCP头长度(TCPheader length):
指明了 TCP 头包含多少个 32位的字。
-
8个1比特的标志位:
-
CWR和ECE:拥塞控制信号
-
UGR:紧急指针
-
ACK:被设置为1表示确认号字段是有效的
-
PSH:被PUSH的数据,特此请求接收端一旦接收数据立即递交给应用程序
-
RST:用于突然重置一个己经变得混乱的连接,也可以被用来拒收一个无效的段,或者拒绝一个连接请求。
-
SYN:用于建立连接
SYN=1,ACK=0:连接请求 SYN=1,ACK=1:连接接受
SYN=0,ACK=1 (第三次握手)
-
FIN:用于释放一个连接
-
-
窗口大小(Window size):
指定了从被确认的字节算起可以发送多少个字节
-
Checksum校检和:
提供差错控制(TCP头,数据和伪头部)
-
TCP连接建立和释放
TCP通过三次握手建立连接:
- 连接请求方选择一个合法的序列号请求建立连接
- 连接应答方选择一个合法的序列号并且确认请求方的序列号
- 连接请求方确认应答方的序号。
释放连接:
为了释放一个连接,任何一方都可以发送一个设置了FIN标志位的TCP段,这表示它己经没有数据要发送了。
-
TCP滑动窗口协议
TCP 实体使用的基本协议是具有动态窗口大小的滑动窗口协议。当发送端传送一段时,它启动一个计时器。当该段到达接收方时,接收端的TCP实体返回一个携带了确认号和剩余窗口大小的段(如果有数据要发送的话,则包含数据,否则就不包含数据〉,并且确认号的值等于接收端期望接收的下一个序号。如果发送端的计时器在确认段到达之前超时,则发送端再次发送原来的段。
TCP 的窗口管理将**正确接收段的确认(ACK)和接收端的接收缓冲区(WIN)**分配分离开来。
流量控制包括两个窗口:反应接收方接收能力的window size,以及反映网络传输能力的拥塞窗口,依据慢启动算法赋值。最终发送的最大速率取两个窗口的最小值。
Nagle算法:
解决发送端发送很多小数据包的问题
发送端只是发送第一次到达的数据字节,然后将其余后面到达的字节缓冲起来,直到发送出去的那个数据包被确认然后将所有缓冲数据放到一个TCP段中发送出去,然后继续开始缓冲
愚笨窗口综合症:
发送端发送大块的数据,接收端一次只读一个字节,读完后立即将窗口更新发送给发送方。
Clark:
解决方案是禁止接收端发送只有 1 个字节的窗口更新段。相反,它强制接收端必须等待一段时间,直到有了一定数量的可用空间之后再通告给对方。特别是,当只有接收端能处理它在建立连接时的最大数据段,或它的缓冲区一半为空时,才发送窗口更新段。
-
TCP拥塞控制-(慢启动)
TCP协议中,一个端点发送数据的速率是由两个方面决定的:一个是接收方的窗口字段的大小,另一个是网络实际的传输能力。慢启动算法主要是用于在对方允许的发送速率范围内,探测实际可以发送的数据速率,主要用于反应当前的网络状况。
初始设置拥塞窗口为一个数据包字段长度MSS,设置慢启动阈值为接收窗口大小,首先发送一个数据包,若在规定时间返回确认,则发送二个数据包,由此按照指数增加并修改拥塞窗口大小;直到到达阈值,按线性增长,发生拥塞,则慢启动阈值设为当前拥塞窗口的一半再进行。
第七章 应用层
7.1 DNS、HTTP
-
(1)DNS——域名系统:
DNS定义:一种分布式储存和访问的域名系统,支持将域名映射为相应的IP地址(域名到IP地址的解析)
域名系统是因特网使用的命名系统,用来把便于人们记忆的含有特定含义的主机名转换为便于机器处理的IP地址
过程 :
应用程序调用名为解析器的库程序,将名字作为参数传递给此程序。解析器向本地DNS服务器发送一个包含该名字的请求报文;本地DNS服务器查询该名字,并且返回一个包含该名字对应IP地址的响应报文给解析器。查询报文和响应报文都作为UDP数据包发送。
DNS名字空间:
顶层域分为两大类:通用域和国家域
- 每个域由它往上到根的路径命名,成员由句点“.”分隔。 cs.zju.edu.cn
- 域名对大小写不敏感(case insensitive):
- edu,Edu和EDU相同
- 成员名最长63个字符,路径名不能超过255个字符
域名资源记录:
DNS的基本功能就是将域名映射到资源记录。
(每个域都有一组与它相关联的资源记录,这些资源组成了DNS数据库,最常见的资源记录是它的IP)
域名服务器:
为了避免由于单个信息源带来的各种问题, DNS名字空间被划分为一些不重叠的区域 (zones )
解析过程:(某客户机想知道域名为y.abc.com主机的IP地址)
-
客户机向其本地域名服务器发出DNS请求报文。
-
本地域名服务器收到请求后,查询本地缓存,假设没有该记录,则以DNS客户的身份向根域名服务器发出解析请求。
-
根域名服务器收到请求后,判断该域名属于.com域,则将对应的顶级域名服务器com的IP地址返回给本地域名服务器。
-
本地域名服务器向顶级域名服务器com发送解析请求报文。
-
顶级域名系统com收到请求后,判断该域名属于abc.com域,故将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器。
-
本地域名服务器向授权域名服务器abc.com发送解析请求报文。
-
授权域名服务器abc.com收到请求后,将查询结果返回给本地域名服务器。
-
本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。
-
(2)HTTP——超文本传输协议:
HTTP 是一个简单的请求.响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。