《计算机网络 自顶向下》吐血万字整理 - 附下载地址及思维导图

前言

我看的是这本,豆瓣9.4,很经典的教材书,在文章末尾我附上了网盘链接
这篇博客是重要的前六章的读书笔记,面试需要掌握的部分,读了之后脑子里能有一个整体的框架,还是收获很大的。但是如果要应付面试,应该还需要多看面经多整理细枝末节的知识
思维导图和笔记更适合唤起回忆,串起来已经掌握的知识,不建议作为学习使用,这里只做分享
在这里插入图片描述

思维导图
在这里插入图片描述

一 计算机网络和因特网

1.1 什么是因特网

一个世界范围的计算机网络,互联了遍及全世界计算设备的网络

一个为应用程序提供服务的基础设施

因特网广泛的使用了协议以完成不同的通信任务

1.2 网络边缘

接入网,是将端系统物理连接到边缘路由器的网络

家庭接入:DSL,光缆,光纤,拨号和卫星

企业和家庭:以太网(交换机),wifi

广域无线接入:3G,LTE

1.3 网络核心

网络链路和交换机移动数据有两种方法:电路交换,分组交换

电路交换–预留,不考虑需求,预先分配了链路的使用,利用率低;分组交换按需分配链路,效率更高。

因特网是一个网络的网络,十多个第一层ISP和无数低层ISP组成,高层ISP互联。用户和内容提供商是低层ISP的客户,低层ISP是高层ISP的客户

1.4 分组交换网中的时延,丢包和吞吐量

时延:节点处理时延,排队时延,传输时延,传播时延

流量强度的概念(La/R)很好的展示了排队时延,并且流量强度大于1,将会导致排队队列已满,最终导致丢包

端到端的时延还要考虑每台路由器的处理时间

吞吐量的选取一般为服务器和客户之间路经的瓶颈链路速率(防止排队过多丢包);除此之外,链路的其他数据流也会影响当前链路的吞吐量。

1.5 协议层次及服务模型

第n层的协议分布在构成网络的端系统,分组交换机和其他组件中

应用层:网络应用程序及他们的应用层协议存留的地方,位于应用层的信息分组为报文message

运输层:在应用程序端点之间传送应用层报文,可以使用TCP(面向连接,有拥塞控制)和UDP(无连接服务,无可靠性)传送应用层报文,运输层分组为报文段segment

网络层:负责将数据报datagram从一台主机移动到另一台主机,由运输层提供报文段和目的地址。网络层包括IP协议,路由选择协议。

链路层:网络层将数据报下传给链路层,链路层沿着路经将数据报传递给下一个节点。链路层提供的服务可能根据协议的不同而不同,链路层分组为帧frame

物理层:物理层任务是将帧中的比特从一个节点移动到下一个节点,协议总是相关于实际传输媒体。

在这里插入图片描述

1.6 面对攻击的网络

自我复制病毒,拒绝服务攻击Dos威胁,分组嗅探器(获取分组副本),IP哄骗

二 应用层

2.1 应用层协议原理

客户-服务器体系结构:有一个打开的服务器,服务于来自许多其他客户主机的请求

P2P体系结构:对数据中心专用服务器依赖很小,应用程序在主机之间直接通信

发起通信的进程被标为客户,会话开始时等待联系的进程是服务器

进程可以通过一个套接字向网络发送报文,从网络接收报文。套接字也称为应用程序编程接口

报文发送需要目的地主机地址,和接收主机上的接受进程(套接字)

可供应用程序使用的传输服务:

  1. 可靠数据传输
  2. 吞吐量(发送进程能够向接受进程交付比特的速率)
  3. 定时
  4. 安全性

因特网为用户提供两种运输层协议TCP,UDP;很多需要可靠数据传输服务的应用会选择TCP,但是因特网电话应用会选择UDP,但是失效后会以TCP为备份

TCP:在握手阶段后,建立TCP链接;可靠的数据传送服务;拥有拥塞控制机制

UDP:无连接,不可靠数据传送服务,无拥塞控制

应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文,应用层协议只是应用层的一部分

2.2 Web和HTTP

Web页面是由对象组成的,例如HTML文件和JPEG图形,HTML基本文件通过对象的URL地址引用页面中的其他对象

Web的应用层协议是超文本传输协议(HTTP),HTTP定义了web客户向web服务器请求web页面的方式,服务器向客户传送web页面的方式

HTTP的基本思想是用户请求一个web页面,浏览器向服务器发出对该页面中所包含对象的HTTP请求报文,服务器接受请求并请求响应
在这里插入图片描述

HTTP使用TCP作为它支撑运输协议,HTTP客户与服务器建立TCP链接后,浏览器和服务器进程就可以通过套接字访问TCP,TCP为HTTP提供可靠的数据传输服务

HTTP是一个无状态的协议,不保存关于客户的任何信息

HTTP可以采用非持续连接和持续连接

  1. 非持续连接

    每个TCP连接在服务器发送一个对象后关闭,连接并不为其他对象而持续下来,一个连接仅传输一个请求报文和响应报文

    我们可以控制浏览器的TCP连接并行度,默认为5-10个TCP连接

    每个连接都要分配TCP缓冲区保持TCP变量,对服务器负担很大

  2. 持续连接

    在服务器响应后,TCP连接持续打开,后续请求和响应报文能通过相同的连接进行传送;一条链接一段时间未被使用,HTTP服务器就关闭该链接

HTTP报文格式

  • HTTP请求报文:请求行,首部行,实体行

在这里插入图片描述

  • HTTP响应报文:状态行,首部行,实体行
    在这里插入图片描述

cookie

为了将用户身份和内容联系起来,HTTP使用了cookie,cookie有4个组件:HTTP响应报文首部行,HTTP请求报文首部行,用户端系统保留cookie文件,Web站点后端数据库

cookie可以用来标识一个用户,标识之后无状态的HTTP上可以建立一个用户会话层,这种方式下,服务器可以跟踪用户在当前站点的活动

Web缓存

安装web缓存器可以大大减少客户请求的响应时间,还可以大大减少一个机构的接入链路到因特网的通信量(响应时间减少,减少成本)

web缓存器总是和客户连接在同一个高速局域网上,如果命中,响应时间会很低。

如果web缓存器中的内容很久没有更新,下次客户请求的时候web缓存起会发送一个get命令和服务器确认当前的内容是不是最新的

配置HTTP请求先指向web缓存器后:

  1. 浏览器先会向web缓存器创建TCP连接,向web缓存器发出HTTP请求
  2. web缓存器进行检查,查看本地是否有当前对象副本,如果有则返回
  3. 如果没有,web缓存器就打开与服务器的TCP连接,并发送一个HTTP请求,服务器向web缓存起发送HTTP响应
  4. web缓存起先备份然后用HTTP相应报文发送副本回客户

2.3 因特网中的电子邮件

因特网电子邮件由3部分组成:用户代理,邮件服务器,简单邮件传输协议SMTP

在这里插入图片描述

一个用户代理传输到发送方的邮件服务器,再传输到接受方的邮件服务器,然后在这里被分发到接受方的邮箱中。当接受方想在邮箱中读取该报文时,包含它邮箱的邮件服务器来鉴别接收者。

当发送方检测到邮件服务器故障,无法交付给接收者的服务器时,发送者的邮件服务器中的报文队列会保持该报文并尝试再次发送,多次仍然失败后,删除该报文并发通知给发送方

SMTP使用TCP可靠数据传输服务的,SMTP有两部分:客户端,服务器端。一个邮件服务器既可以是客户端也可以是服务器端

SMTP客户和SMTP服务器之间也是使用TCP进行的连接

SMTP和HTTP的不同:

HTTP主要是在拉取信息,TCP是由想要获取信息的机器发起的;SMTP主要是将文件推向接受的服务器,TCP是由要发送文件的机器发起的

SMTP要求报文采用7比特ASCII码,HTTP无限制

处理多种文件格式的文档时,SMTP将所有放进同一个报文中,HTTP会将每个对象封装在响应报文中

接受方如何通过自己的用户代理获得邮件服务器上的邮件呢?

  • POP3

    用户打开一个到邮件服务器的TCP连接后,有三个阶段工作:特许(验证身份),事务处理,更新

    POP3协议不给用户提供任何创建远程文件夹的方法,所以无法用任意设备直接访问报文

  • IMAP

    IMAP 服务器把每个报文与 一个文件夹联系起来;当报文第一次到达服务器时,它与收件人的INBOX 文件夹相关联 。收件人则能够把邮件移到一个新的、用户创建的文件夹中,阅读邮件,删除邮件等。

  • 基于Web的电子邮件

    用户代理就是普通的浏览器,用户和远程邮箱之间的通信通过HTTP进行。

    这种情况下,发件人从浏览器发送到邮件服务器也使用了HTTP,但是邮件服务器和其他邮件服务器之间仍使用SMTP

2.4 DNS:因特网的目录服务

识别主机可以通过主机名和IP地址,DNS域名系统的主要任务就是,能进行主机名和IP地址转换的目录服务。

DNS:将主机名转换为其背后的IP地址

用户输入主机名之后,浏览器会将主机名传给DNS服务器,然后客户会收到一份回答报文,其中包含了主机名对应的IP地址,然后浏览器就可以向该IP地址的HTTP服务器发起一个TCP连接

除去主要功能,DNS还包含功能:主机拥有多个别名,邮件服务器拥有多个别名,负载分配(繁忙的站点拥有一个IP地址集合,每台服务器运行在不同的端系统上)

工作机理:

DNS是一个实现分布式数据库的精彩范例

DNS服务器包括 根DNS服务器,顶级域DNS服务器,权威DNS服务器
在这里插入图片描述

本地DNS服务器一般临近主机,主机请求IP地址会先向本地DNS服务器发送DNS查询报文。如果没有缓存,查询过程为:

主机–本地服务器–根服务器–本地服务器–顶级域服务器–本地服务器–权威DNS服务器–本地服务器–主机
在这里插入图片描述

为了改善时延性能并减少传输的DNS数量,DNS广泛的使用了缓存技术,而这些信息也不是永久的,隔一段时间就会丢弃缓存信息

所有DNS服务器存储了资源记录(RR),而报文中的首部区域也大部分包含了回答RR,权威RR,附加RR等等。

2.5 P2P文件分发

P2P体系结构对服务器有着最小的依赖,与间歇连接的对等方主机彼此直接通信

BitTorrent是流行的P2P文件分发协议,使用最稀缺优先的技术(邻居中副本最少的块),均衡每个块在洪流中的副本数量

P2P体系结构拥有很好的扩展性:因为对等方除了是比特的消费者外还是他们的重新分发者,P2P的这种结构相对于客户-服务器的模式,降低了最小分发时间

2.6 视频流和内容分发网

视频只是存储在HTTP服务器中作为一个普通的文件,每个文件有自己的URL;请求视频时,客户与服务器建立HTTP连接

但是客户的带宽不同,我们需要经HTTP的动态适应性流(DASH,dynamic adaptive streaming over HTTP),根据不同用户的带宽,选择不同的编码速率的视频版本,每个不同的视频版本对应一个不同的URL

建立大规模数据中心存储所有视频,并向全世界传输会存在3个弊端:

  1. 客户远离服务器,经过很多ISP,降低吞吐量
  2. 相同的视频可能在同一条链路中传输多次
  3. 数据中心故障即全部故障,没有容错

内容分发网(content distributed network,CDN)可以解决这个问题,CDN管理分布在多个地理位置上的服务器,在服务器中存储视频副本,用户请求时,将定向到一个提供最好体验的CDN位置

CDN有两种安置原则:深入(部署服务器集群来深入到ISP接入网中),邀请做客(关键位置建立大机群)

CDN操作:截获一个浏览器检索视频的命令,以便确定适合的CDN服务器集群,并重定向用户的请求

用户在请求URL时,实际上发送了一个DNS请求,然后DNS本地服务器将内容发送给权威DNS服务器,这时候权威服务器会返回给本地一个合适的CDN服务器的主机名,然后用户的DNS请求才会由这个CDN服务器处理,用户得到内容。客户收到内容服务器的IP地址后,与该IP地址的服务器创建一条直接的TCP连接,并发出HTTP get请求,DASH也在这个阶段生效

Netfix:

  1. 将内容上传到亚马逊云
  2. 生成各种比特率和格式的版本
  3. 向CDN上载这些版本

用户选择一个视频后,运行在亚马逊云的netfix软件将会先确认哪个CDN有视频的拷贝,然后选择一个最合适的服务器,将服务器的IP地址以及资源配置文件发送给客户。然后该CDN服务器使用专用版本的DASH进行交互。

CDN服务器中的内容是当天热门的内容,这样保证命中率高

在这里插入图片描述

youtube:

与netfix不同的是它使用的是DNS重定向,youtube没有使用DASH,他要求用户选择一个版本;用户通过HTTP上传视频后,youtube也会处理视频格式,生成不同版本,这种过程发生在谷歌数据中心

看看:

看看使用P2P连接的方式,一个对等方要看视频,则联系一个跟踪器,发现系统中具有该视频副本的其他队等方,然后即将播放的块将优先获取资源。

如果P2P流量不充分,客户重新启动CDN连接并返回到CDN-P2P混合模式

三 运输层

运输层在网络层之上,网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信

两户人家中负责通信的的邮局,可以类比为网络层;两户人家中负责统一一家人的邮件并将邮件交给邮局的人可以类比为运输层

TCP(传输控制协议)和UDP(用户数据报协议)是两种运输层协议,它们最基本的职责是将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务

3.2 多路复用和多路分解

每个进程都有一个或多个套接字,相当于从网络向进程传递数据和从进程向网络传递数据的门户

多路复用(multiplexing)指主机从不同套接字中收集数据块,并为每个数据块封装首部信息(利于分解)生成报文段,然后将报文段传递到网络层。

多路分解(demultiplexing)将运输层报文段中的数据交付到正确的套接字的工作称为多路分解

在这里插入图片描述

运输层报文段中存在源端口号,目的端口号。主机上的每个套接字能够分配一个端口号,当报文段到达主机,运输层检查报文段中的目的端口号,并将其定向到相应的套接字

一个UDP套接字是由一个二元组(目的IP地址,目的端口号)进行标识的,TCP套接字由四个值来将报文段定向到相应的套接字。所以两个不同源IP地址或不同源端口号的到达报文,如果是UDP将被定向到统一套接字,而TCP将被定向到两个不同套接字

一般的web服务器拥有一个进程,但是为每个新的客户连接创建一个具有新连接套接字的新线程

3.3 无连接运输:UDP

UDP只做了传输协议能做的最少的工作:复用/分解以及少量差错检验。

选择UDP的原因:

  1. 希望发送速度快,并且可以容忍一定数据丢失的程序
  2. 无需建立连接,不会引入建立连接的时延
  3. 维持连接需要消耗资源(接受发送缓存,拥塞控制参数,需要确认参数),选择UDP可以支持更多活跃客户
  4. 分组首部开销小(UDP:8字节,TCP:20字节)

使用大量UDP连接可能导致阻塞问题(因为没有拥塞控制),可能导致发送方和接受方丢包率很高

在应用程序自身中建立可靠性机制同样可以实现UDP的可靠性,但是这是个比较困难的工作。

UDP的报文结构:

长度表示UDP中报文段中的字节数,校验和用来检测整个字段
在这里插入图片描述

UDP和上层协议都提供差错检验的原因是:在端到端数据传输中,较低级别上设置的功能可能是冗余或没有价值的

3.4 可靠数据传输原理

借助于可靠信道,传输数据比特就不会收到损坏或丢失,数据按原顺序交付

可靠数据传输协议的下层协议可能是不可靠的

为了达到可靠的数据传输,我们需要:校验和,序号(检验重传or新分组),定时器(重传),肯定/否定确认分组

为了增大吞吐量,我们需要用流水线的方法来进行传输,这对序号数量以及缓冲的范围提出了要求,回退N步,选择重传 是两种解决流水线差错恢复的基本方法

在这里插入图片描述

回退N步:

使用一个窗口,窗口内分为已经发送未被确认 和 即将被发送的内容

在这里插入图片描述

接受方收到不正确排序的分组时直接丢弃,继续传送ACK请求正确排序的分组;这样能保证接受方可以按顺序将分组交付给上层

发送方如果出现超时,仍然未收到ACK,会重传已经发送但是没有被确认的分组;发送方还要能够在被调用的时候检查窗口是否已满

这种方法差错会导致大量重传,信道利用率低

选择重传:

发送方仅重传它怀疑在接受方出错的分组,而避免不必要的重传

3.5 面向连接的传输 TCP

TCP面向连接,但是这种连接是逻辑连接,共同状态仅仅保留在两个通信端系统的TCP程序中;中间网络元素只能看到数据报传输,而不是链接

TCP通过3次握手建立连接,TCP连接包括套接字,发送/接受缓存,变量。TCP为每块客户数据配一个TCP首部从而形成TCP报文段

TCP报文结构

在这里插入图片描述

序号指报文段的序号,确认号一般是指希望下一次收到的字节序号,在TCP中失序到达接受方一般会先保留失序字节,等待缺少的字节填补间隔

三次握手例子:

首先,客户自己的序号是42,确认号是79,并捎带了数据C;

然后第二个报文为提供确认,提供自己的序号42,并将确认号设置为43,请求收到43。并回显字符C

最后客户确认已经从服务器收到数据,发送一条数据字段为空的字段,提供43的序号,确认号为80,请求接收80

TCP会使用超时/重传机制来处理报文段的丢失问题,对于重传超时间隔的选择,一般会使用指数加权移动平均的方法

如果接受方丢失了一个报文,然后收到后面的报文,接受方就会发送冗余的ACK,当发送方连续收到3个冗余ACK,就认为报文段丢失,快速重传就会发生

TCP属于一种回退N步和选择重传的结合

TCP流量控制服务:接受方主机B会生成自己的rwnd值(buffer-(lastRcvd-lastRead)),然后将rwnd信息放入发送给A的报文段中,A会检查lastSend-lastACK是否小于rwnd,通过结果来判断B是否还有空闲空间

TCP三次握手

  1. 客户发送一条标志位SYN为1,包含自己初始序号的报文段
  2. 服务器收到数据,为该TCP分配缓存和变量,并向客户发送允许连接的报文段:包含标志位SYN=1,自己的初始序号和ACK确认
  3. 客户收到ACK报文,也为该链接分配缓存和变量。客户然后向服务器发送对允许连接报文进行确认的报文:SYN位为0,序号为初始序号+1,并ACK确认服务器的信息。这条信息可以包含客户到服务器的数据
    在这里插入图片描述

TCP四次挥手

客户发出FIN设置为1的特殊报文段;

服务器收到后发送一个确认报文段;

服务器发送自己的终止报文段,FIN也设置为1;

客户对这个FIN报文进行确认;

在这里插入图片描述

当TCP收到一个无端口匹配信息的TCP SYN时,会恢复一个重置报文段RST=1,告诉源不要再发送了;UDP遇到这种情况也会回复一条特殊数据报

3.6 拥塞控制原理

拥塞控制的方法一遍包括两种:

  1. 端到端拥塞控制:运输层不会收到网络层拥塞的信息,只会通过对网络行为(分组丢失,时延)的观察来推断。
  2. 网络辅助的拥塞控制:路由器向发送方提供关于网络中拥塞状态的信息

3.7 TCP拥塞控制

TCP是端到端拥塞控制,不使用网络辅助

TCP为了发送更高的速率且不希望导致网络拥塞:丢失报文或者收到三个冗余ACK表示丢包,减小拥塞窗口和发送速率;确认的报文意味着路径无堵塞,可以增加拥塞窗口和发送速率

TCP拥塞控制算法:

慢启动,拥塞避免,快速恢复

当一条TCP连接开始时,cwnd(拥塞窗口)的值以1个MSS(最大报文段长度)为开始,当收到报文段确认就增加一倍MSS,慢启动阶段以指数增长

当出现超时指示的丢包发生时,TCP发送方将cwnd设置为1重新开始慢启动,sstresh为cwnd/2

当出现3个冗余ACK时,执行快速重传,进入快速恢复。ssthresh设置为当前cwnd/2,然后当前cwnd设置为ssthresh+3,继续线性增长

当cwnd等于sstresh时,结束慢启动进入拥塞避免模式,线性增加cwnd

在这里插入图片描述

四 网络层:数据平面

数据平面指每台路由器的功能,数据平面功能决定到达路由器输入链路之一的数据报,如何转发到该路由器的输出链路之一

路由器不运行网络层以上的层,每个路由器中都包含转发和路由选择两种功能

网络层提供了尽力而为的服务,不能保证有序,最小带宽,保证交付等功能

4.2 路由器工作原理

在这里插入图片描述

输入端口:入物理链路的物理层功能,数据链路交互功能,执行查找功能寻找路由器输出端口

交换结构:连接输入端口和输出端口

输出端口:类似于输入端口

路由选择处理器:执行控制平面功能

输入端口中的查找,一般使用最长前缀匹配规则,使用一个转发表进行查找转发

交换结构,可能由多种交换技术实现(经内存交换,经总线交换,经互联网络交换)

输出端口负责处理取出已经存放在输出端口内存中的分组,并发送到输出链路上,执行链路层和物理层的传输功能

在输入和输出端口中都可能出现排队的情况:

输入:当有两个不同的输入都想到达一个输出的时候,其中一个输入就会等待,这个等待的输入后面的分组就会形成队列

输出:当有多个分组传送到一个输出端口的时候可能出现输出队列,路由器需要为这些可能出现的排队设计缓存。

分组输出链路传输的方式一般有:FIFO,优先权排队,循环排队,加权公平排队

4.3 网际协议:IPV4,寻址,IPV6几其他

IPV4数据报格式

正常来说,IP数据报首部20字节,TCP首部20字节

在这里插入图片描述

版本:IP协议版本号

首部长度:封装的数据实际开始的地方

服务类型:区分不同类型的IP数据报

数据报长度:IP数据报总长度

标识,标志,位偏移:IP分片相关(IPV6已不用)

寿命:TTL,判断是否过时

协议:指要到达哪个运输层协议(TCP/UDP)

首部校验和:差错

源和目的IP地址:出发点和目的地

选项:允许IP首部拓展(IPV6已废弃)

每个链路层都有它能承载的最大传送单元MTU,IP数据报长度大于MTU就需要分片,分片的重组工作会被安排在端系统中,而不是放在路由器中。

标识用于确认数据报是否是一个被切分的片(是分片则为1),标志用于确认当前片是否是最后一个(是最后一个则为0,其余为1),偏移字段标识该片在IP数据报的哪个位置

主机与物理链路之间的边界叫做接口,IP地址与一个接口相关联,而不是与包括该接口的主机或路由器相联

在这里插入图片描述

三个主机接口和一个路由器形成一个子网 223.1.1.0/24 ,24为子网掩码,指示32比特中最左侧24比特定义了子网地址

在这里插入图片描述

DHCP动态主机配置协议允许主机自动获取一个IP地址

子网没有拓展性,ISP已经分配过一块地址之后,子网变大了需要更大的地址。面对这种情况可以使用网络地址转换NAT。NAT使路由器对于外部世界像一个具有单一IP地址的设备,对内创建自己的专用网络。

NAT有一张NAT转换表,来区分外部数据报要传入当前专用网络中的哪个内部主机

IPV6

特征:IP地址长度从32比特增加到128比特,首部被简化为40字节,加入流标签(进行数据报标识,区分优先级);IPV6不允许分片,将分片工作交给端系统;无校验和;

IPV4向IPV6的迁移使用了建隧道的方式,在隧道中都是IPV4,两端是IPV6,借助隧道可以将整个IPV6数据报放到一个IPV4字段中,然后再发送

在这里插入图片描述

有效载荷长度:IPV6数据报中跟在定长的40字节数据报首部后面的字节数量

跳限制:转发数据报的每台路由器都对这个字段-1,到0则丢弃

4.4 通用转发和SDN

为了应对第二层交换机和第三层路由器中间盒的加剧,分组交换机提供多种网络层功能以及某些链路层功能

五 网络层 控制平面

转发表(基于目的地转发场景中)和流表(通用转发场景中),定义了一台路由器的本地数据平面转发行为。

转发表和流表的计算,维护,安装可以通过:每路由器控制;逻辑集中式控制

5.2 路由选择算法

路由选择算法分为:集中式路由选择算法;分散式路由选择算法

集中式需要掌握全局状态信息;分散式通过与相邻节点信息交换,计算出最低开销路径

网络结构和链路开销都是已知的,这可以用链路状态广播算法实现。狄杰斯特拉算法就是这种,但是这种算法可能遭遇链路时延问题导致的逆时针顺时针时延不一样的情况,这就会导致震荡的发生(一开始所有路由选择都是顺时针,然后监测到拥堵全部变成逆时针)

不让所有路由同时运行算法是一个可行的解决方案

距离向量算法是一种分散式算法,通过直接相连的邻居接受信息,进行计算,然后再将结果分发给邻居

这两种方法都在因特网中得到了应用

5.3 因特网中自治系统内部的路由选择:OSPF

路由器的规模是巨大的,迭代距离向量算法无法收敛;很多ISP网络都是自治的,希望按自己的意愿运行路由器

使用自治系统(autonomous system AS)可以解决这两个问题。通常一个ISP下的路由器以及互联他们的链路构成一个AS,某些ISP也将整个网络分为多个AS,一个自治系统由一个AS号标识

开放最短路优先 OSPF

OSPF内部使用洪泛链路状态信息和dijkstra算法,每台路由器在本地运行dijkstra算法,已确定一个以自身为根节点到所有子网的最短路径树;路由器向自治系统内所有其他路由器周期性的广播路由选择信息。

优点在于:安全性,多条相同开销路径可以同时使用,支持AS中的层次结构

ISP之间的路由选择 BGP

边界网关协议(Border Gateway Protocal BGP):所有AS间路由选择协议,BGP将数以千计的ISP连接在一起

在BGP中,每个路由器都有一个自己的接口号,BGP提供了两个功能:

  1. 从邻居AS获取前缀的可达性信息,让AS之间知道彼此的存在
  2. 确定到该前缀的最好路由

传递可达性信息通过eBGP和iBGP实现,iBGP负责AS内部通告某个路由器的可达性信息,eBGP负责AS与AS之间的通告

在这里插入图片描述

确定BGP路由,BGP路由:next-hop;ASPATH;目的前缀。

next-hop表示走这条路径的第一个到达的另一个AS中的边界AS的IP地址,ASPATH表示这条路径的AS路线,目的前缀表示目的路由器的接口

热土豆路由算法:选择自己AS中最短的路线,尽快将分组送出当前AS,不担心AS外部到目的地的余下开销

路由器选择算法:选择本地偏好,选择最短AS-PATH的路由,热土豆路由算法,BGP标识符选择

有时候提供商网络会隐藏自己的某些信息,防止承担不应该承担的开销

创建小型公司网络–>与本地ISP签订合同并进行连接–>拥有自己的路由器并拥有自己的地址范围–>与因特网注册机构签订合同获得域名–>为注册机构提供你的DNS服务器和IP地址

这时候想要所有人知道你的前缀,你的存在,就需要使用BGP来传播

5.6 ICMP

因特网控制报文协议(ICMP),被用来彼此沟通网络层的信息

ping使用了ICMP类型编码,HTTP会话中收到网络不可达的信息也来源于ICMP

5.7 网络管理和SNMP

网络管理:管理服务器,被管理设备(硬件和软件),管理信息库,每个设备中的网络管理代理,网络管理协议

在这里插入图片描述

简单网络管理协议SNMP 应用层协议,用于在管理服务器和代理之间传递控制和报文

六 链路层和局域网

链路层信道会分为两类:广播信道,点对点通信链路

链路层主要是运输的作用,运输方式是链路层协议

链路层协议提供服务:封装成帧,链路接入,可靠交付,差错检测和纠正

链路层是由硬件和软件结合实现的,大部分使用硬件实现,少部分(CPU中)由软件实现

6.2 差错检验和纠错技术

运输层使用校验和技术,链路层使用CRC

校验和需要的开销较小,由软件实现;CRC开销较大,由链路层硬件实现

CRC差错校验的思想是发送方和接受方共同定义一个多项式,然后发送方给信息后加上一串比特,使整体比特串 XOR 多项式为0,如果出现差错,XOR的结果就为1

在这里插入图片描述

6.3 多路访问链路和协议

如何协调多个发送和接收节点对一个共享广播信道的访问,就是多路访问问题

多路访问协议指节点通过协议来规范他们在共享的广播信道上的传输行为

多路访问协议:信道划分协议,随机接入协议,轮流协议

信道划分协议

时分多路复用(TDM),频分多路复用(FDM),码分多址(CDMA)

TDM消除碰撞并且公平,但是每个节点最高速率被限制在R/N,一个需要一直传输的节点可能需要等待其他不传输的节点

FDM也将带宽限制在R/N

CDMA为每个节点分配不同的编码,每个节点用自己的编码来编码数据,可以实现不同节点同时传输,相应接受方正确接收

随机接入协议

传输节点总是按照信道全部速率进行发送,发生碰撞则等待随机时延后再次发送

  • 时隙ALOHA

    时间被分为时隙,想要发送的节点如果在时隙开始时传输,监测到碰撞后,之后的每个时隙以p的概率发送

    信道整体效率较低 37%

  • 具有碰撞检测的载波侦听多路访问 CSMA/CD

    先进行侦听,如果信道空闲则传输帧,在忙则等待直到空闲;

    如果传输过程中检测到其他信号能量则终止传输并等待一个随机实现,再次尝试侦听,传输

    等待的时间取决于碰撞的次数n,节点随机从[0,1,2…,2^n-1]中选择一个值,这个值*512比特时间,就是等待的时间

轮流协议

  • 轮询协议

    指定一个节点为主节点,以循环的方式轮询每个节点,主节点告诉节点可以发送帧的最大数量。轮询时延(轮询花费了时间)和主节点故障是这个协议的缺点

  • 令牌传递协议

    小的令牌特殊帧在节点之间传递,拿到令牌的节点才可以传输帧。节点损坏或者令牌释放出现问题都会导致这个协议失效

6.4 交换局域网

目前见过的地址:应用层的主机名,网络层的IP地址,链路层的MAC地址

在这里插入图片描述

主机和路由器有自己的网络层地址和链路层地址,链路层地址解析协议为ARP

MAC地址是独一无二的,共有2^48种可能;MAC地址可以发送FF-FF-FF-FF-FF的广播地址信息

网络层的IP地址和链路层的MAC地址进行转换,这是ARP地址解析协议的任务

在同一个子网下,ARP可以进行IP地址和MAC地址的转换(DNS可以将主机名转换为IP地址,ARP可以将IP转换为MAC)。ARP表中显示了当前子网IP地址和MAC地址的对应,并有TTL寿命。如果ARP表中没有我们需要的MAC地址,适配器会发送广播地址,然后匹配到需要的目的IP地址

ARP是一个跨越链路层和网络层的协议

在这里插入图片描述

以太网

以太网对于有线局域网市场来说占着绝对的重要位置。以太网使用星形拓扑,位于中心的集线器是交换机,交换机是无碰撞的,交换机仅在第二层

以太网向网络层提供无连接,不可靠服务,没有握手过程也没有确认或否定过程。如果应用采用TCP,帧传输出错会导致重传

链路层交换机

交换机的任务是接受入链路层帧并将它们转发到出链路,交换机输出接口一般设有缓存,链路层交换机一般是基于MAC地址进行转发分组

有几种交换机的动作:没有查到信息,广播该帧;无需当前交换机转发,丢弃;查到需要转发的接口,转发

交换机是自学习的,接口收到帧,就在表中存储该帧的MAC地址和到达时间,如果一段时间没有收到这个该MAC地址的帧,则删除这个地址

交换机是即插即用的设备,是全双工的,每个接口可以同时发送和接收

交换机因为有缓存,可以消除碰撞;可以混用旧设备和新设备;交换机收集链路信息,且有问题检测机制,易于管理

交换机是第二层的分组交换机,路由器是第三层的

  • 交换机

    优点:即插即用,分组过滤转发速率快(只需处理第二层的帧)

    缺点:交换机没有广播风暴的保护措施,可能产生崩溃

  • 路由器

    优点:分组通常不会循环,对广播风暴有防火墙保护

    缺点:需要配置IP再使用,处理分组的时间更长

几百台主机的小型网络交换机就够了,更多主机则需要路由器,使流量隔离,广播风暴控制功能更加健壮

在这里插入图片描述

虚拟局域网技术可以实现一个物理局域网设备定义多个虚拟局域网,这样可以实现流量隔离,防止交换机无效使用,方便管理

6.6 数据中心网络

数据中心网络将其内部主机彼此互联并与因特网中的数据中心互联

一个数据中心有很多主机(刀片),每个机架20~40个刀片,每个机架顶端有一个交换机(TOR)。每台主机与TOR连接,TOR也可以相互连接

在这里插入图片描述

负载均衡器可以以当前主机的负载来均衡主机间的负载,外部请求先被定向到负载均衡器,然后才向主机发送请求。负载均衡器还可以转换外部和内部IP地址,起到隐藏网络内部结构的功能

数据中心为了处理边界路由器流量过大或某些高层路由器流量过大的问题,设计了全连接拓扑,第一层交换机和第二层交换机全部连接;除此之外,还有模块化数据中心,很多密集的机架摆放在一起,难以检修,等性能整体下降到一定程度,直接更换整个机架集装箱

6.7 回顾:Web页面请求的历程

Bob想访问一个web页面,Bob拥有一台自己的便携机,便携机与学校的以太网交换机用以太网电缆相连,学校的交换机与学校的路由器相连,学校的路由器和一个ISP相连,这个名叫Comcast的ISP提供DNS功能

在这里插入图片描述

DHCP动态主机配置协议允许主机自动获取一个IP地址

ARP地址解析协议

  • 准备工作1: DHCP分配IP地址

    Bob的操作系统生成一个DHCP请求报文,这个报文被放入UDP报文段,这个UDP被放入IP数据报中,此时数据报的目的IP地址为广播255.255.255.255,源IP地址为0.0.0.0。

    该IP数据报被放入以太网帧中,该帧目的地址为FF:FF:FF:FF:FF:FF,使该帧被广播到所有连接的设备,源地址为便携机的MAC地址

    路由器接收到这个广播的以太网帧,帧内容一直向上层传输直到DHCP请求被抽取出来,路由器中的DHCP服务器分配一个IP地址,将这个IP地址,DNS服务器IP地址等等信息作为ACK报文放入UDP报文段中,然后向下层包装,放入IP数据报中,再放入以太网帧中

    这个以太网帧传输回Bob便携机,这里的交互机是自学习的,所以知道向哪里传输

    Bob便携机抽取数据,记录下自己的IP地址,DNS服务器IP地址,默认网关,网络自建的初始化就完成了

  • 准备工作2: 获取网关路由器MAC地址

    Bob便携机使用ARP协议,生成一个具有默认网关IP地址(从刚才DHCP过程获得的)的ARP查询报文,这里的以太网帧目的地址仍然使用 FF:FF:FF:FF:FF:FF,交换机将帧进行广播

    网关路由器收到该帧之后准备一个ARP回答,通过交换机之后,Bob收到这个MAC地址

  • 准备工作3: 路由选择到DNS服务器

    Bob向网关路由器发送IP数据报,目的地址为DNS服务器,该帧的MAC目的地址为网关路由器

    网关路由器抽取数据报,检查目的IP地址,然后根据路由选择协议(内部:RIP,OSPF;外部:BGP),发送到DNS服务器

    DNS在自己的数据库中查找对应的IP地址,生成DNS回答报文,放入UDP报文段中,通过路由器交换机传回Bob便携机

  • Web客户-服务器交互:TCP和HTTP

    Bob便捷机生成TCP套接字,开始执行三次握手

    Bob便携机生成一个TCP SYN报文段,放入目的IP地址为google的IP地址的IP数据报中,再将数据报放在MAC地址为网关路由器的帧中,向交换机开始发送

    经过路由器,交换机转发后,google的web服务器收到SYN数据报,生成一个SYN ACK确认报文,封装后通过学校网络,ISP等转发

    Bob便携机使用套接字可以发送HTTP GET报文给google,重复刚才的发送过程

    google的HTTP服务器从TCP套接字读取GET报文,生成HTTP响应报文,将请求的web页面放入HTTP响应体中,再将报文发送进TCP套接字中

    Bob收到HTTP响应,从HTTP响应体中抽取Web网页的html,最终显示页面

下载链接

失效请私信联系我
链接: https://pan.baidu.com/s/1paEWNGCeMfup9sjNg7K7Qg 密码: o9o8

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值