跳至主要內容

计算机网络

PPLong大约 141 分钟

计算机网络学习


计算机网络和因特网

应用层

应用层协议原理

应用研发主要使用的两种主流体系结构:

  • 客户-服务器体系结构
    • 客户之间不直接通信
    • 服务器具有固定的、周知的地址(IP地址)
    • 大型应用需配备数据中心来处理请求
    • (Web、FTP、电子邮件)
  • 对等(P2P)体系结构
    • 对位于数据中心的专用服务器有最小的依赖
    • 应用程序在间断连接的主机对(对等方)之间直接通信
    • 自扩展性,在P2P文件共享应用中,尽管每个对等方都由于请求文件产生了工作负载,但每个对等方通过向其他对等方分发文件也为系统增加了服务能力。
    • 不需要庞大的服务器基础设置和服务带宽
    • (BitTorrent、迅雷...)

进程通信

进行通信的实际上是进程而不是程序

两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信

客户和服务器进程

两个进程一个为客户 ,另一个为服务器。

定义:在一对进城之间的通信会话场景中,发起通话的进程被标识为客户,再回话开始时等待联系的进程是服务器

进程与计算机网络之间的接口

进程通过一个叫套接字的软件接口向网络发送报文和从网络接受报文

套接字是同一台 主机内应用层与传输层之间的接口,也称为应用程序编程接口

进程寻址

发邮件需要知道目的地址

  1. 主机的地址
  2. 在目的主机中指定接收进程的标识符

因特网中,主机由IP地址标识,还必须制定运行在接受主机上的接收进程:目的地端口号(port number)

可供应用程序使用的传输服务
  1. 可靠数据传输

确保由应用程序一段发送的数据正确完全地交付给该应用程序的另一端

  1. 吞吐量

吞吐量:发送进程能够向接受进程交付比特的速率

运输协议确保可用吞吐量总是为至少 r 比特 / s

应用于带宽敏感应用

  1. 定时

要求数据交付有严格的时间限制

  1. 安全性

因特网提供的运输服务

  1. TCP服务

    • 面向连接服务

      • 三挥四握,建立TCP连接,全双工、拥塞控制

      • TCP加强版;安全套接字层 SSL (Secure Sockets Layer),提供了关键的进程到进程的安全性服务

        SSL在这个过程中相当于中间人 发送方数据从: 进程-->SSL-->TCP

    • 可靠数据传输服务

    TCP和UDP都没有任何加密机制,发送进程传进套接字的数据与经网络传送到目的进程的数据相同

  2. UDP服务

    不可靠传输,数据可能乱序到达,不保证速率

  3. 因特网运输协议所不提供的服务

    不提供任何定时和带宽保证

应用层协议

如何构造报文?报文何时发送?

Web和HTTP

Web的应用层协议是超文本传输协议 ,HTTP

Web页面是由对象组成的,一个对象只是一个文件,多数Web文件包含一个HTML基本文件和几个引用对象

持续连接和非持续连接

所有的请求和相应是否经过相同的TCP连接发送

Http两种连接方式都能使用,默认使用持续连接

  1. 非持续连接

    P.66 例子

    往返时间 RTT:一个短分组从客户到服务器然后再返回客户所花费的时间

    缺点:

  2. 必须为每个请求的对象建立和维护一个全新的连接(客户和服务器中都要分配TCP的缓冲区,给服务器带来负担)

  3. 每个对象要经受两倍RTT的交付时延(一个用于创建TCP,另一个用于请求和接受对象)

  4. 持续连接

    TCP连接打开后,后续的请求和响应报文能够通过相同的连接进行传送

HTTP报文格式

请求报文

首部行、请求行、实体体

实体体(emtity body) POST报文中用户在表单字段输入的值

响应报文

初始状态行 :协议/版本字段 状态码 状态信息

首部行

实体体(报文的主要成分)

常见状态码open in new window

用户和服务器的交互cookie

4个部署:

  1. HTTP相应报文有cookie首部行
  2. HTTP请求报文中有cookie首部行
  3. 用户端系统保留cookie文件(浏览器)
  4. Web站点侯丹数据库保存

Web站点希望识别用户,把内容与用户身份联系起来 p70例子:购物网站记录加入购物车的物品(甚至在未登录的情况下)

Web缓存

Web缓存也叫代理服务器,保存最近请求过的对象的副本

通过Web缓存请求网页:

  1. 创建一个到Web缓存器的TCP,向缓存器中的对象发送一个HTTP请求
  2. 缓存器进行检查,是否本地有相应对象的副本,若有则用HTTP响应报文返回该对象。如果没有,就打开一个与这个对象的初始服务器(原始地址)的TCP连接,并在这个缓存器到服务器的TCP连接上发送一个对该对象的HTTP请求,收到请求后,初始服务器向该Web缓存器发送具有该对象的HTTP响应
  3. 缓存器收到该对象时,在本地存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本

此过程中Web服务器既是服务器又是客户

eg: 与校园网连接有关,涉及到内容分发网络CDN

优点:

  1. 减少对客户请求的响应时间,Web服务器迅速将该对象交付给用户
  2. 减少一个机构的接入链路到因特网的通信,减少了通信量就不必急于增加带宽,因此降低了费用

思考: 缓存器存储的HTTP响应对象是否过时怎么判断?

HTTP允许缓存器证实他的对象是最新的: 条件GET方法。

  1. 如果请求报文使用GET方法
  2. 请求报文中包含"If-Modified-Since"首部行

则这个报文就是一个条件GET请求报文

过了很久去请求缓存器中的对象时,会再发一条条件GET请求报文执行最新检查

If-Modified-Since:其值表示之前最近一次服务器响应时间(仅当在指定日期之后该对象被修改才发送新的)

如果没有被修改: 服务器发送响应报文,状态行为 304,状态信息:Not Modified,以此告知缓存器

因特网中的电子邮件

三个组成部分:用户代理、邮件服务器、简单邮件传输协议SMTP

SMTP::因特网电子邮件的核心

采用7比特ASCII码格式

SMTP一般不适用中间邮件服务器发送邮件,一般是两个服务器直连,连接方式:TCP

HTTP和SMTP

  • 都是从一台主机向另外一台主机发送文件
  • 都使用持续连接

HTTP:Web服务器向Web客户传送文件,是使用拉协议,由向接收文件的机器发起的。处理(文本和图像时,将每个对象封装到自己的HTTP响应报文中)

SMTP:一个邮件服务器向另一个邮件服务器传送文件,使用推协议,由想发送文件的机器发起的。处理(文本和图像时,将所有报文对象放在一个报文中)

邮件报文格式

RFC 5322定义

每个首部必须包含一个From和一个To首部行然后是可选首部行 + 一个空白行+报文体

邮件访问协议

Alice代理 ---(SMTP) > Alice邮件服务器 ---(SMTP)> Bob邮件服务器 ---(pop3\imap\http)> Bob代理

避免了我给你发邮件时你不在,接受不到的问题

最后一步不是SMTP是因为SMTP是推协议而不是拉协议

POP3: Post Offical Prootocol --Version 3 第三版的邮局协议

IMAP : Internet Mail Access Protocol 因特网邮件访问协议

POP3

当客户打开一个到邮件服务器端口110上的TCP连接时,POP3就开始哦工作了

三个阶段:特许、事务处理和更新

  • 特许:明文形式用户名和口令鉴别用户
  • 事务处理:用户代理取回报文,并且还可以对报文做删除标记、取消报文删除标记、获取邮件的统计信息等
  • 更新:结束POP3会话

正常 +OK 错误-ERR

可配置的两种方式:下载并删除、下载并保存

IMAP

POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法

把每个报文于一个文件夹联系起来报文第一次到达服务器时,他与收件人的INBOX文件夹相关联,且还具有允许用户代理获取报文某些部分的命令

基于Web的电子代理邮件

目前主流。用户代理是普通的浏览器,与远程邮箱的通信通过HTTP进行。

代理到邮件服务器是HTTP,但邮件服务器和邮件服务器之间的接发邮件还是SMTP

思考: 如今的mail邮箱如何进行list的?

DNS:因特网的目录服务

核心: Unique ID ---> Unique Name IP地址---->主机名

DNS是:

  • 一个由分层的 DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

DNS服务器通常是运行BIND软件的UNIX机器,DNS协议运行在UDP之上,使用53端口

DNS协议:应用层协议

除了进行主机名到IP地址的转换外,DNS还提供:

  1. 获得主机别名对应的规范主机名以及主机IP地址
  2. 电子邮件应用程序可以调用DNS,对提供主机别名进行解析,获得该主机的规范主机名及其IP地址
  3. 负载分配DNS在所有冗余的Web服务器之间循环分配负载(IP地址集)
工作原理

应用程序---->DNS客户端---->向网络发送DNS查询报文(UDP 53端口)--->用户主机收到DNS回答报文--->映射到对应的应用程序

可以理解为DNS是一个提供简单直接转换的黑盒子,但内部逻辑十分复杂

为什么不设置单一、集中的DNS服务器?

单点故障、通信容量、远距离集中式数据库、维护

所以,DNS不采用这种方式,DNS实则是一个因特网实现分布式数据库的精彩案例

  1. 分层式、层次数据库

    DNS使用大量的DNS服务器,以层次方式组织,分布在全世界范围内,没有一台服务器拥有因特网上所有主机的映射。三种类型,客户自顶到底的找

    • 根DNS服务器

      提供TLD服务器的IP地址,400多个根域名服务器

    • 顶级域DNS服务器 TLD

      每个顶级域(com\org\edu\net....)、国家顶级域(uk、fr...)都有TLD服务器

      提供权威DNS服务器的IP地址

    • 权威DNS服务器

      因特网上具有公共可访问主机(Web服务器额邮件服务器)的组织机构必须提供公共可访问的DNS记录,将主机名映射为IP地址,被权威DNS服务器收藏

    除此之外,还有本地DNS服务器

    每个ISP都有一台本地DNS服务器,主机与某个ISP连接时,ISP提供一台主机的IP地址,该主机具有一台或多台其本地DNS服务器的IP地址(通过DHCP)。本地DNS服务器一般邻近本主机。在主机发出DNS请求时,先发送到DNS本地服务器(代理作用),然后再下发到DNS服务器层次结构(单独接收三类服务器响应)。

    但这种方式很复杂,查询一个主机IP地址,需要发送4分查询报文和接收4份回应报文。(解决:DNS缓存)

    查询分为递归查询迭代查询

    递归查询:以自己的名义请求 来获得映射(通常: 从请求主机到本地DNS服务器的查询)

    迭代查询:回答直接返回给自己

  2. DNS缓存

    目的:改善时延性能并减少在因特网到处传输的DNS报文数量

    当某DNS服务器接收到DNS回答时,会将映射缓存在本地存储器中。但由于主机和主机名于IP地址间的映射不是永久的,DNS服务器在一段时间后(通常2天)将丢弃缓存

  3. DNS记录和报文

    资源记录(Resource Record , RR),提供了主机名到IP地址的映射,每个DNS回答报文包含了一个或多个RR。

    内容: (name,value,type,ttl)

    TTL: 该记录的生存时间,决定了RR应当从缓存中删除的时间。

    例如:

    • Type = A, Name是个主机名, Value是主机名对应的IP地址。
    • Type = NS, Name是个域,Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名,用于沿着查询链来路由DNS查询
    • Type = CNAME,Value是别名为Name的主机对应的规范主机名,能够向查询的主机提供一个主机名对应的规范主机名
    • Type = MX,Value是个别名为Name的邮件服务器的规范主机名,MX记录允许邮件服务器主机名具有简单的别名,一个公司的邮件服务器和其他服务器(Web)可以使用相同的别名,但请求的记录不应相同。
    1. DNS报文

      image-20210911111330446
      image-20210911111330446

      前12字节:首部区域

      标识符:16bit 标识查询/回答报文、权威标志、是否递归查询、递归可用

      查询问题区域 :包含正在进行的查询信息。包括:正在被查询的主机名、正被询问的问题类型(A\NS\MS...)

      回答区域 :对最初请求的名字的RR。可以包含多个RR,因此一个主机名能够有多条IP地址

      权威区域:包含其他权威服务器的记录

      附加区域:包含其他记录。例如一个MX请求的回答报文的回答区域包含一条RR,提供邮件服务器的规范主机名。则附加区域则包含一个类型A的记录,提供用于该邮件服务器的规范主机名的IP地址

    2. 在DNS数据库中插入记录

      注册登记机构:商业实体,验证域名的唯一性,将域名输入DNS数据库

      当你注册登记机构注册域名时,需要提供基本和辅助权威DNS服务器的名字和IP地址没注册登记机构将确保将一个NS类型和一个类型A的记录输入TLD服务器

DNS的脆弱性
  1. 分布式拒绝服务(DDoS) 带宽洪泛攻击

    攻击者向每个DNS根服务器发送大量分组,使得大多数合法DNS氢气球得不到回答。(但许多根服务器有分组过滤器的保护,配置的分组过滤器阻挡了所有指向跟服务器的ICMP ping报文)并且大多数本地DNS服务器也缓存了TLD服务器的地址,使得这些请求通常绕过了DNS根服务器

    更有效的攻击:向TLD服务器发送大量的DNS请求,过滤指向DNS服务器的DNS请求将更为困难,并且TLD服务器不容易绕过(可通过DNS服务器 缓存技术 部分缓解)

  2. 中间人攻击

    截获请求- 伪造

  3. 毒害攻击

    向DNS服务器发送伪造的回答,使服务器缓存中接收伪造的记录。

P2P文件分发

C-S体系:分发一个大文件: 服务器要单独向每个对等方发送该文件的副本,负载大,消耗大量服务器带宽

P2P:每个对等方能够向其他任何对等方重新分发他已经收到的该文件的任何部分,在分发过程中协助到服务器

流行的P2P文件分发协议: BitTorrent

  1. 扩展性

    P94,实际运算比较两种体系的传输文件速率。

    C-S,随着分发数量N增大,呈现线性,P2P非线性且增长趋势越来越小(有趋近值)

    扩展性的直接成因: 对等方除了是Bit的消费者还是他们的重新分发者

  2. BitTorrent

    参与一个特定文件分发的所有对等方的集合称为一个洪流torrent.在一个洪流中的对等方彼此下载等长度的文件块(chunk)

    每个洪流具有一个追踪器,每个对等方加入某洪流时,它向追踪器注册自己。周期性通知追踪器它仍然在洪流中。追踪器有一张表,有所有对等方的IP地址,其中对等方想要下载时,则追踪器随机的从这张表中选择一个子集,发给它。主机则试图与这张列表上的对等方创建并行的TCP连接。主机已经请求了L个块列表,此后,将对没有的块进行请求。

    如何知道它的邻居有哪些块?

    1. 它该从令居请求哪些块?
    2. 应当向哪些向它请求块的邻居发送块?

    解决以上问题,使用最稀缺优先技术。针对它没有的块在邻居中决定最稀缺的块(哪些在邻居中副本数量最少的块),并首先请求最稀缺的块。(目的:均衡分配洪流中的每个块)

    选择交换数据的伴侣:最高速率前四个、随机选择其中一个,每30s重新选择

    关于P2P还有很多有趣的机制:

    随机优先选择、残局模型、反怠慢,后期可慢慢了解

视频流和内容分发网

  1. 因特网视频

    基础:先录好上传到服务器中

  2. HTTP流和DASH

    经HTTP的动态适应性流(Dynamic Adaptive Streamming over HTTP):根据用户可用带宽大小变化,选择不同的比特率,对应于不同的视频质量

  3. 内容分发网

    为了应对全世界用户分发巨量视频数据的困难,大部分公司使用内容分发网(Content Distribution Network , CDN)

    CDN管理分布在多个地方的服务器,在服务器中存储音视频 的副本,试图将每个用户请求定向到一个将提供最好的用户体验CDN位置。

    专用CDN或第三方CDN

CDN

常采用两种不同的服务器安置原则:

  • 深入: 通过在遍及全球的接入ISP中部署服务器集群,来深入到ISP的接入网中(Akamai)。

      	目的是靠近端用户,减少端用户和CDN集群之间的链路和路由器数量,改善时延和吞吐量。高度分布。
    
  • 邀请做客:在少量关键位置建造大集群来“邀请ISP做客”,这些CDN通常将他们的集群放在因特网交换点(IXP)。较低开销、维护,较高时延且较低吞吐量。

CDN操作

如何触发?

浏览器检索到一个特定的视频(URL),CDN截获该请求来确定适合用于该客户CDN的服务器集群,将客户请求重新定向到该服务器的某台机器。

截获方法?

大多数CDN利用DNS截获和重定向请求。通过视频的链接发送DNS请求后,请求到视频网站的权威DNS服务器,此时并不返回IP地址,而是CDN域的主机名,此时再发送的是cdn的dns请求,最终返回cdn服务器的IP地址。

集群选择策略

~ :任何CDN部署的核心,动态地将客户定向到CDN中的某个服务器集群或数据中心的机制(得知用户IP地址后,选择适当的集群)

  • 地理上最为邻近策略。将IP地址映射到一个地理位置。

    对大多数用户有效,但配置了远程DNS的和一些特殊情况(地理最邻近不代表是最近的集群)就不理想

  • CDN通过集群和客户之间的时延和丢包性能执行周期性的实时测量。(周期性地向所有LDNS发送探测分组(ping报文或DNS请求),缺点:许多LDNS被配置为不会响应这些探测)。

一些大型视频网站CDN处理方式:

Netflex Youtube 看看(CDN+P2P)

套接字编程

每个进程好比是一座房子,进程的套接字好比是一扇门,应用程序位于一侧,运输层位于另一侧。应用程序开发者在套接字的应用层一侧可以控制所有东西,但无法控制运输层一侧。

一个进程具有一个或多个套接字,一个套接字对应一个端口号

传输层

概述:

运输层协议为运行在不同主机上的应用程序之间提供了逻辑通信功能。运输层协议在端系统中而不是在路由器中实现。

运输层和网络层的关系

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

(书中有个特别好的例子,P. 123(快递公司:网络层协议 快递点:运输层协议))

运输层协议受限于网络层协议的服务模型,即使网络层不能保证协议是否可靠,运输层也能提供可靠的数据传输服务

因特网运输层概述

因特网两种运输层:

  • UDP (用户数据协议) 不可靠、无连接
  • TCP (传输控制协议) 可靠、面向连接

一般 : 运输层分组 / TCP的运输层分组 / UDP分组:报文段 UDP的运输层分组:数据报

因特网的网络层协议 : IP,网际协议,为主机之间提供逻辑通信。“尽力而为交付服务”,不确保报文段的交付,保证按序交付,不保证报文段中数据的完整性。IP也被称为不可靠服务

TCP和UDP的基本责任:将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。

这个过程也成为运输层的多路复用多路分解

多路复用

无连接运输:UDP

典型的UDP应用层协议的例子:DNS。因为UDP不会引入建立连接的时延。8字节开头

UDP的缺陷

运行在UDP上的多媒体应用是有争议的。如果每个人都启动流式提高比特率视频而不是用任何拥塞控制的技术,就会使得路由器有大量的分组溢出。以至于非常少的UDP分组能成功地传输。况且,引发的高丢包率将引起TCP发送方因拥塞控制而大大减小发送速率。

UDP中缺乏拥塞控制能够导致UDP发送方和接收方之间的高丢包率,并且挤垮TCP会话。

当然,一些UDP的应用是可能实现可靠性传输的:在应用程序自身中建立可靠性机制完成。

UDP报文段

UDP检验和

目的:提供差错检验功能,检验和确定党UDP报文段从源到达目的地移动时,其中的比特是否发送变化

如何产生:发送方的UDP对报文段中所有16比特字的和进行反码运算,求和时遇到任何溢出问题都被回卷。

只是检测,不能修复

可靠数据传输原理

可靠数据传输协议下层息协议也许是不可靠的 --- > 带来困难。

构造可靠数据传输协议

  1. 经完全可靠信道的可靠数据传输:rdt1.0

    最简单情况:底层信道是完全可靠的,接收端不需要提供任何反馈信息给发送方

    有限状态机(FSM Finite-State Machine)

  2. 经具有比特差错信道的可靠传输

    肯定确认(ACK)、否定确认(NAK)

    自动重传请求(Automatic Repeat reQuest,ARQ)

    ARQ需要的另外三种协议处理存在比特差错的问题:

    • 差错检测
    • 接收方反馈 ACK、NAK
    • 重传

    停等(stop-and-wait)协议,仅当接收到ACK并且离开改状态时才能发生其他事件。

    但是如果ACK、NAK分组受损该怎么办?

    解决问题:在数据分组中添加新字段,让发送方对数据分组进行编号,即将发送数据分组的序号放在该字段。

  3. 经具有比特差错哦的丢包信道的可靠数据传输:rdt3.0

    除原本问题外还需关注:怎样检测丢包以及发生丢包时该做什么?

    发送方需要等待多久才能确定已丢失了哪些?(耐心是有限度的)

    至少需要等待:发送方与接受方的往返时延+接收方处理一个分组的所需时间。

    为了实现基于时间的重传机制,引入了倒计数定时器,在一个给定的时间过期后,可中断发送方。

    rdt3.0 --- 比特交替协议(分组序号在0和1之间替换)

    性能低

  4. 改进的rdt3.0 流水线协议

    rdt3.0性能问题的核心在于其是一个停等协议,发这个一个报文段的后我只能等待接收方发来的ACK,等待的时间大量被浪费掉。

    为什么叫流水线? 许多从发送方向接收方输送的分组可以看成是填充到一条流水线中

    要求:

    • 必须增加序号范围。传输的分组必须有唯一的序号
    • 发送方接收方可能会缓存多个分组,在最底下新都你应当缓冲那些已发送但没有确认的分组
    • 数据传输协议如何处理丢失、损坏、延时大的分组。解决流水线的差错恢复的两种基本方法:
      • 回退N步(Go-Back-N,GBN)
      • 选择重传(Selective Repeat,SR)

回退N步

允许发送方发送多个分组而不需等待确认,受限于 在流水线中未确认的分组数不能超过某个最大值。

已被发送但还未被确认的分组的许可序号范围可以被看成是一个在序号范围内长度为N的窗口

因此GBN也常被成为滑动窗口协议

三种情况:发送、收到ACK、超时

GBN中,接收方丢弃所有失序分组。因为数据必须按序交付,但接收方可以缓存提前到来的分组。发送方需要维护窗口的上下便捷 和nextseqnum在窗口的位置,接收方需要维护下一个按序接收的分组的序号。

缺点:当窗口长度和带宽时延积都很大时,单个分组的差错能够引起GBN重传大量分组,许多分组根本没必要重传。

选择重传

SR协议通过让发送方仅重传那些它怀疑在接收方出错的分组而避免了不必要的重传。

三者具体差别,CSDN戳这里open in new windowB站讲解open in new window湖科大版本-回退N帧open in new window湖科大版本选择重传open in new window

面向连接的运输:TCP

TCP连接

为什么是面向连接的: 发送数据前,两个进程必须“握手”,发送预备报文段,建立确保数据传输的参数

Vinton Cerf 和Robert Kahn发明了TCP/IP协议(Transmission Control Protocol / Internet Protocol,传输控制协议/网际协议) 获得“ACM图灵奖”

建立TCP连接后,客户进程通过套接字传递数据,一旦数据通过了这扇门,则就由客户中的TCP控制了,TCP将数据引导进发送缓存中。不断地从缓存中拿去数据,并将其投递到网络层

  • 提供全双工服务 full-duplex service

  • TCP连接是点对点:单个发送放和单个接收方之间建立连接

  • TCP可从发送缓存中取出并放入报文段的数据数量受限于最大报文长度(Maximum segment Size ,MSS)

    MSS通常根据最初确定的由本地发送主机发送的最大链路层帧长度(最大传输单元 MTU)来设置

    MSS指的是 报文段里应用层数据的最大长度,而不是包括首部的TCP报文段的最大长度

报文结构

image-20210914163318606
image-20210914163318606

首部一般20字节(不包括选项)

  1. 序号和确认号

    该序号非彼序号,序号建立在传送的字节流之上,而不是在传送的报文段序列之上

    一个报文段的序号是该报文段首字节的字节流编号

    确认号: A--->B,when B---->A时,B要给A说我希望下一次你给我发消息时从哪里开始发(起始字节号)

    TCP只确认该流中至第一个丢失字节为止的字节,所以TCP被称为累计确认

    注意:序号和确认号针对的都是字节

    对客户到服务器的数据的确认被装在在一个承载服务器到客户数据的报文段中,这种确认被称为是捎带在服务器到客户的数据段报文中

  2. TCP检验和

    • TCP整体检验(包括载荷)[12字节伪首部] TCP首部校验和计算三部分:TCP首部+TCP数据+TCP伪首部。
    • 首先,把伪首部、TCP报头、TCP数据分为16位的字,如果总长度为奇数个字节,则在最后增添一个位都为0的字节。 把TCP报头中的校验和字段置为0。。其次,用反码相加法(对每16bit进行二进制反码求和)累加所有的16位字(进位也要累加,进位则将高位叠加到低位)。最后,将上述结果作为TCP的校验和,存在检验和字段中
  3. 选项

    1. Selective Acknowledgements —SACK。数据包未按序到达,能否不重传已接受到的数据,只传没得到的数据
    2. TimeStamp方便计算TTL
    3. NOP 填充
    4. Window Scale 方便2^n指数扩大窗口大小

往返时间的估计和超时

  1. 估计往返时间

    通过样本进行测量 。 仅在某个时刻做一次SampleRTT测量。任意时刻,仅为一个已发送的但目前尚未被确认过的报文段估计SampleRTT,从而产生一个接近每个RTT的新的SampleRTT值

    	EliminatedRTT  - 8.875 * EstimatedRTT + 0.125 * SampleRTT
        //指数加权平均
        DevRTT = 0.75 * DevRTT + 0.25 * |SampleRTT - EstimatedRTT|
    
  2. 设置和管理重传超时间隔

    超时间隔不能太短也不能太长

    TimeoutInterval = EstimatedRTT + 4 * DevRTT
    

    SampleRTT波动大 ,则余量大,波动小则余量小。

可靠数据传输

IP服务不保证数据包的交付、按序、完整等问题。

TCP的rdt确保一个进程从其接收缓存中独处的数据流是无损坏,无间隙、非冗杂和按序的数据流。

超时间隔加倍

每次TCP重传会将下一次的超市间隔设置为先前值的两倍,而不是通过Estimated和DevRTT的推算值

快速重传

发送方通常可在超时时间发生之前通过注意冗余ACK来检测丢包情况。

冗余ACK是再次确认某个报文段的ACK,指示下一个期待的字节的序号

因为发送方经常发送大量的报文段,如果一个报文段丢失,会引起许多一个接一个的冗余ACK,如果TCP发送方接收到相同的3个冗余ACK,就执行快速重传(在该报文段的定时器过期之前重传)

回退N步还是选择重传

选择确认:允许TCP接收方有选择地确认失序报文段,而不是累计地确认最火一个正确接收的报文段

流量控制

接收方应用可能很忙,数据到达TCP缓存后,暂时没时间读取,如果发送方发的太多,可能使得接收缓存溢出。

为应用程序提供,使得 发送方发送速率和接收方接受速率大致相同。以消除发送方使得接收方缓存溢出的可能性,与拥塞控制十分相似。

发送方维护一个接收窗口(rwnd),提示发送方接收方还有多少可用的缓存空间。(由于TCP全双工,所以接收、发送方都维护一个接收窗口)

如何确保接受缓存不溢出:发送到连接中但未被确认的值 <= rwnd

如果rwnd == 0,发送方主机继续发送只有一个字节数据的报文段,报文段会被接收方确认,最终缓存开始清空,并且确认报文将包含一个非0的rwnd值

TCP的流量控制(湖科大)open in new window

TCP的连接管理

如何建立和拆除一条TCP?三握四挥

  1. 三次握手

    • 客户端发送特殊报文段,不包含应用层数据 标志位SYN = 1,客户端还会随机选择一个初始序号(client_isn),放在该报文段的序号字段中。
    • 服务器TCP接收,分配缓存。向客户TCP发送允许连接的报文段, SYN = 1 ,确认号= client_isn +1,服务器再选择自己的初始序号(server_isn)放入序号字段中。该报文段称为SYNACK报文段
    • 客户端收到该报文段后,也要分配缓存。发送报文段,确认号=server_isn + 1 ,SYN = 0 ACK=1(因为连接已经建立)。这个阶段可以在报文段中负载发送给服务器的数据了(应用段)
  2. 四次挥手

  3. SYN洪泛攻击(SYN flood attack)

    如果握手最后一次客户端不发送ACK,则服务器会在一分钟后终止该半开连接并回收资源。

    攻击者发送大量TCP SYN报文段,而不完成第三次过程,则服务器会不断为半开连接分配资源,导致链接资源被消耗。

    防范方法:SYN cookie

    • 服务器最开始接收到数据时,并不知道该报文段是来自合法的用户还是SYN洪泛攻击。因此不会生成一个半开连接。服务器会生成一个初始TCP序列号,与SYN报文段的源和目的IP地址、端口号和服务器知道的秘密数有关,这种精心制作的序列号叫cookie。而服务器自身不记忆该cookie。
    • 如果客户合法,会给ACK,则验证是对的,则服务器生成一个具有套接字的全开连接。如果不合法,没有返回ACK报文段,则也没有关系,因为服务器没有为它分配任何资源。

拥塞控制原理

太多的源向以过高的速率发送数据,造成路由器溢出。需要一些手段来遏制发送方。非常的重要

拥塞代价和原因

代价(书中的例子比较具体 P172)

  1. 两个发送方和一台无穷大缓存的路由器

    每连接的吞吐量 : 接收方每秒接收的字节数

    • 分组的到达速率接近链路容量时,分组会经历巨大的排队时延(路由器缓存无线大)
  2. 两个发送方和一台具有有限缓存的路由器

    运输层向网络中发送报文段的速率 b byte/s : 供给载荷(offered load)

    两种情况

    • 发送方执行重传以补偿因为缓存溢出而丢弃的分组
    • 在时延较大时发送方进行不必要的重传引起路由器利用其链路带宽来转发不必要的分组副本
  3. 4个发送放和具有有限缓存的多台路由器和多跳路径

    • 当一个分组沿一条路径被丢弃,每个上游路由器用户转发该分组到丢弃该分组而使用的传输容量就被浪费掉了

拥塞控制方法

  • 端到端拥塞控制(IP不会向端系统提供有关网络拥塞的反馈信息)
  • 网络辅助的拥塞控制。ATM 可用比特率,路由器显示地Ton告知发送它能在输出链路上支持的最大端系统发送速率。
    • 直接反馈:路由器发送给发送方(“我拥塞了,你别传了 ”)
    • 中间商修改:路由器标记或更新从发送方流向接收方的分组中的某个字段来指示拥塞的产生,一旦收到这个标记的分组,接收方就向发送方通知网络拥塞指示。

TCP拥塞控制

TCP必须使用端到端的拥塞控制而不是使用网络辅助的拥塞控制,因为IP层不向端系统提供显示的网络拥塞反馈。

  • 如何限制它的发送速率?
  • 如何感知网络拥塞
  • 感知到拥塞时,怎样变化发送速率?

发送方的TCP跟踪一个额外变量(拥塞窗口 cwnd),在发送方中未被确认的数据量 <= min {rwnd, cwnd};

TCP拥塞控制算法

  1. 慢启动

    连接刚开始时,cwnd = MSS较小值 ≈ MSS/RTT。可用的带宽可能还有很多,TCP希望尽快地找到这个值。

    cwnd以1个MSS开始,并且报文段首次被确认时,cwnd就增加一个MSS。此后一样,x2速率进行。

    何时停止?

    如果发生丢包,TCP将cwnd设置为1并重启慢启动过程。并且,将ssthresh(慢启动阈值)设置为cwnd/2.当cwnd超过ssthresh值时,继续时cwnd翻倍就没什么效果了,这时结束慢启动,并且TCP转移到拥塞避免模式,更加谨慎的增加cwnd。

    • 如果丢包是因为简单超时,则cwnd = 1MSS ssthresh = 1cwnd(old) 进入拥塞避免
    • 如果丢包是因为收到了冗余ACK,快速重传并且迅速恢复

    额外:TCP分岔,优化云服务性能

  2. 拥塞避免

    每个RTT(注意,不是ACK)后将cwnd的值增加一个MSS

    • 如果丢包是因为简单超时,则cwnd = 1MSS ssthresh = 1cwnd(old) 继续进入慢启动
    • 如果丢包是因为收到了冗余ACK,则 ssthresh = cwnd/2; cwnd /=2,进入快恢复
  3. 快速恢复

    对每个ACK,cwnd值增加一个MSS

    • 早期 ,Tahoe:不管是超时还是3个冗余,都将cwnd 置为1MSS,进入慢启动

    • 新版本, Reno:

      image-20210915200815873
      image-20210915200815873
  4. 回顾

    TCP拥塞控制又被称为:加性增、乘性减(AIMD) ,锯齿形位

一条连接的平均吞吐量 = 1.22 * MSS / (RTT * 根号L) L:丢包率

1. 公平性

多条TCP连接,有不同的端到端路径,但都要经过一条瓶颈链路,如果每条连接都得到相同份额的链路带宽,则认为该拥塞控制机制是公平的。

网络层:数据平面

网络中的每一台主机和路由器都有网络层

概述

数据平面作用:此输入链路向输出链路转发数据包

控制平面作用:协调本地的每路由器转发动作,使得数据报沿着和目的地主机之间的路由器路径最终进行端到端的传送

路由器不运行在应用层和运输层协议,故没有上两层

主要的两种网络层功能:

  • 转发:将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。

    是数据平面中实现的唯一功能,路由器将分组移动到适当的输出链路。

  • 路由选择: 确定分组从源到目的地所采取的端到端路径的网络范围处理过程。网络层决定分组采用的路径(路由选择算法)

转发表: 每台路由器中的关键元素。路由器检查到达分组首部的一个或多个字段值,使用这些首部值在转发表中索引,以此来转发分组。

  1. 控制平面:传统的方法

    转发表如何配置?

    路由选择算法决定了插入该转发表中的内容。

  2. 控制平面:SDN方法

    路由选择仅执行转发, 远程控制器计算并分发转发表,以此做到分离。

    本质:软件定义网络(Software-Defined Networking ,SDN)

网络服务模型

因特网的网络层提供单一的服务,尽力而为服务

路由器工作原理

4个组件:

  • 输入端口:在路由器中执行终结入物理链路的物理层功能。与位于入链路远端的数据链路层交互来执行数据链路层功能。
  • 交换结构,将路怄气的输入端口连接到输出端口
  • 输出端口:存储从交换结构接收的分组。通过执行必要的连链路层和物理层功能在输出链路上传输这些分组。
  • 路由选择处理器:执行平面功能,传统路由器中,执行路由选择协议,在SDN路由器中,负责与远程控制器通信。

输入端口处理和基于目的地转发

  1. 前缀匹配(路由器转发表中不必要有所有的目的地址的对应),最长前缀匹配规则

    一旦确定了某分组的输出端口,该分组就能够发送进入交换结构。但该输入端口可能被其他分组占用,这时候刚进入的就要被暂时阻塞,需要在输入端口处排队

  2. 交换:分组从一个输入端口交换(转发)一个输出端口中

    三种交换技术:内存、总线、纵横 P207

    • 内存交换:

      最简单,交换过程在CPU(路由选择处理器)的控制下完成,通过中断方式,分组被复制到内存中,然后再被复制到输出端口的缓存中。

      缺点:不能同时转发两个分组(经过共享系统总线一次仅能执行一个内存读/写)

    • 经总线交换:

      输入端口经过一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。输入端口为分组预先计划一个交换机内部标签,指示本地输出端口,分组在总线上传送到输出端口哦,所有输出端口都能收到,但只有与该标签匹配的端口才能保存该分组,然后标签在输出端口被去除。

      一次只有一个分组能跨越总线,其余的需要等待。

    • 经互联网络交换

      通过开启和闭合交叉点,能够并行转发多个分组。纵横式交换机是非阻塞的。但如果由两个不同输入端口的分组 其目的地为相同的输出端口,则一个分组需要等待。因为某个时刻经给定总线仅能够发送一个分组。

    1. 输出端口处理

      交换结构 ----> 排队(缓存管理) ----> 数据链路处理(协议、封装) ---> 线路端接

    2. 何时出现排队

      排队队列增长,路由器的缓存空间最终将会被耗尽----> 丢包

      1. 输入排队

        交换结构无法快得让所有到达分组无时延地通过它传送(接线员忙),则到达的分组必须加入输入端口队列中,等待通过交换结构传送。

        多个不同分组被分配到了相同输出端口,则其中多个需要等待,且排在每个分组后的分组也要等待 线路前部(Head-Of the Line,HOL)阻塞,即在一个输入队列中排队的分组必须等待通过交换结构发送,因为它被位于线路前部的另一个分组所阻塞。

      2. 输出排队

        交换机速度较快

        弃尾

        主动队列管理(Active Queue Management ,AQM),随机早期检测(Random Early Detection,RED)是AQM之一

        如何决定路由器缓存容量:

        RTT * 链路容量C

    3. 分组调度

      1. 先进先出 FIFO

      2. 优先权排队

        每个优先权类有自己的队列基于IP的实时话音分组可能获得较高优先权

        优先权类分组之间的选择还是FIFO

      3. 循环和加权公平排队

        加权公平排队(Weighted Fair Queuing),不停循环不同加权类

网际协议

IPV4数据报格式

image-20210918102733176
image-20210918102733176
  • 版本号:规定数据报的IP协议版本,查看版本号---> 路由器确定如何解释数据报剩余部分。

  • 首部长度。IPv4数据报可能包含可变数量的选项,以此来确定数据报载荷实际开始的地方

  • 服务类型 TOS,使不同类型等待IP数据报相互区别开(低延迟、高吞吐...)。例如区分非实时流量(FTP)和实时数据报(IP电话应用)

  • 数据报长度,标识IP数据报总长度 最大65535字节

  • 标识、标志、片偏移。用于分片

  • 寿命TTL,(Time To Live) 确保数据不会永远在网络中循环。每当一台路由器处理该数据报时,TTL--: 若TTL== 0 ,则字段会被丢弃

  • 协议,通常仅当一个IP数据报到达最终目的地时才会有用。指示IP数据报的数据部分应该交给哪个特定的运输层协议。

    • 协议号将网络层和运输层绑定

    • 端口号将运输层和应用层绑定

  • 首部检验和,帮助路由器检测IP数据报中的比特错误。

    仅检验首部!!如何检测?

    为什么TCP/IP在运输层和网络层都执行差错检测?

    1. IP层只对IP首部计算了检验和,TCP/UDP对整个报文段进行检测
    2. TCP/UDP 与 IP不一定属于同一个协议栈。(例如,TCP能够运行在ATM上,而IP能传给其他运输层)
  • 源和目的IP地址

  • 选项,允许IP首部被扩展,ipv6中去掉了这个选项(可变长度导致路由器处理IP数据报所需的时间变化大)

  • 数据(有效载荷)

IPv4数据报分片

问题:并不是所有的链路层协议都能承载相同长度的网络层分组。

最大传送单元(MTU) :一个链路层帧能承载的最大数据量,严格限制IP数据报长度(问题是发送方与目的地路径上的每段链路可能使用不同的链路层协议,每种协议可能具有不同的MTU)

比如一条链路上MTU很大,发的IP数据报很大,接着的链路上MTU小,发的IP数据报小,这时候一个分组该怎么办?

分片:数据分片成两个或者更多个较小的IP数据报,用单独的链路层封装这些较小的IP数据报,通过输出链路发送这些帧。这些较小的数据报称为

片在到达目的地后需要重新组装,组装的工作在端系统中。

如何判断收到?如何确定丢失?

发送主机通常将发送每个数据报的标识号+1,由于IP的不可靠性,为了让目的主机绝对相信它收到了初始数据报的最后一个片,最后一个片的标志比特= 0 ,而其他所有片的标志比特= 1。并且,为了让目的主机确定是否丢失了一个片,使用偏移字段来制定该片应该放在初始数据报的哪个位置。

IPv4编址

一台主机一般只有一条链路连接到网络。如果向发送数据报,则在该链路上发送

路由器有两条或多条链路与它连接(接收、转发),路由器与它任意一条链路之间的边界叫接口

主机与物理链路之间的边界叫接口。

IP要求每台主机和路由器接口拥有自己的IP地址(一个IP地址与一个接口相关联,而不是包括该接口的主机或路由器)

IP地址长度:4字节 32bit 总共有 232 (40亿个),点分十进制法书写

子网:多个主机接口与路由器接口的网络

IP地址为子网分配地址(223.1.1.0/24,这样的记法被称为子网掩码),左侧的24bit定义了 子网地址,其余的是可分配的。

因特网的地址分配策略:无类别域间路由选择 CIDR(Classless InterDomain Routing)

a.b.c.d/x的x最高比特构成了IP地址的网络部分,称为该地址的前缀,组织内部的设备的IP地址将享有共同的前缀比特x。

地址聚合、路由聚合、路由摘要:使用单个网络前缀通告多个网络的能力

CIDR采用前,使用的是分类编制(A\B\C类网络),缺点,C类 /24子网仅能容纳254主机 --- 太少,B类 /16 支持65534主机,太多,造成浪费。

255.255.255.255 :IP广播地址,报文段会交付给同一个网络中的所有主机,路由器也会选择地向邻近的子网转发该报文。

一台设备如何从某组织的地址快中分配到地址

  1. 获取一块地址2

    • 一个组织从ISP中获取一组地址
    • 一个ISP获取一块地址

    IP地址由因特网名字和编号分配机构(ICANN)管理(它还管理DNS根服务器、分配域名和解决域名纷争),ICANN向区域性因特网注册机构分配地址,这些机构一起形成了ICANN的地址支持组织。

  2. 获取主机地址:动态主机配置协议

    为组织内的主机配置IP地址:动态主机配置协议(Dynamic Host Configuration , DHCP)。

    解释:DHCP允许主机自动获取一个IP地址,网络管理员也能够配置DHCP,以使得给定主机每次与网络连接都能得到一个相同的IP地址(服务器固定IP地址原理?),或者将主机分配到一个临时的IP地址,DHCP还允许主机得知其他信息(子网掩码、第一跳路由器(默认网管关)、它的本地DNS服务器地址)

    由于DHCP具有将主机连接进一个网络的网络相关方面的自动能力,又常被称为即插即用协议或者零配置协议,广泛用于住宅因特网、企业网、无线局域网

    本身是一个B-S协议,客户是一个新到达的主机,想获得自身的IP地址在内的网络配置信息。如果子网没有服务器,则需要DHCP中继代理(通常是一台路由器),代理知道用于该网络的DHCP服务器的地址。

    新到达的主机如何与DHCP交互以获得IP地址?

    • DHCP服务器发现。新到达的主机的首要任务是发现一个要与之交互的DHCP服务器,使用DHCP发现报文。客户在UDP分组中向端口67发送报文,UDP分组封装在IP数据报中(但这个数据报应该发给谁?连IP地址都不知道啊?)。使用广播目的地址255.255.255.255 并且使用本主机的源IP地址0.0.0.0。该数据报通过链路层,链路层将该帧广播到所有与该子网连接的节点。
    • DHCP服务器提供。DHCP服务器收到DHCP发现报文时,做出响应,该报文向该子网的所有节点广播,仍然用255.255.255.255(为什么不用之前数据报的源IP地址? 因为子网中可能存在几个DHCP服务器,该客户也许会发现他处于能在几个提供者之间选择的优越位置)。每台服务器提供的报文包含由收到发现报文的事务ID,向客户推荐的IP地址、网络掩码以及IP地址租用期(IP地址的有效时间量)。服务器租用期一般为几小时或者几天
    • DHCP请求,新到达的客户从一个或多个服务器中选择一个,并向选中的服务器提供用DHCP请求报文进行响应。
    • DHCP ACK。服务器用DHCP ACK报文对请求报文进行响应,证实所要求的参数。

    一旦客户收到DHCP ACK,该客户能够在租用期内使用DHCP分配的IP地址。如果客户希望在该租用期超时后继续使用这个地址,DHCP还有一种机制允许客户更新它对这个IP地址的租用

    缺点:每当节点连接到新的子网,要从DHCP获取新的IP地址,不能维持与远程应用之间的TCP连接(解决方案:移动IP:对IP基础设施的扩展,允许移动节点在网络之间移动时使用其单一永久的地址)

网络地址转换

随着小集团的需求增多(办公室...),子网被大量需求,如果子网变大了,超过了原有需求,怎么办?

网络地址转换 (Network Address Translation,NAT)

NAT使得路由器对于外部世界而言不是一台路由器,更像是一个具有单一IP的单一设备,所有离开家庭路由器流向更大因特网的报文都有一个源IP地址,且所有进入家庭的报文都有同一个目的IP地址。(本质上,NAT使得路由器对外外界隐藏了家庭网络的细节 [中间盒]) (DHCP发挥了作用)

既然如此,路由器如何知道将哪个分组发给哪个具体的内部主机呢?

NAT路由器上的 NAT转换表,表中还包含了端口号及其IP地址

NAT路由器接收到内部主机的数据报后,替换端口号与IP地址

IPv6

原因:新的子网地址和IP节点以惊人的速度增长,32比特的IP地址空间即将被耗尽。

  1. IPv6数据格式报

    image-20210922175812677
    image-20210922175812677

    特点:

    • 扩大的地址容量(32bit ---> 128bit),引入任播地址(地址可以使得数据报交付给一组主机中的任何一个)
    • 简化高效的40字节首部
    • 流标签。flow,用于给特殊流的分组加上标签(发送方做要求,比如非默认服务质量或需要实时服务的流,音视频流,可以对一条流中的某些数据报给出更高的优先权)
    • 版本,4bit,设置为6(注意:此字段=4不代表就创建IPv4数据报)
    • 流量类型 ≈ IPv4的TOS
    • 有效载荷长度 16bit,给出跟在定长首部后的字节数量(实际数据报)
    • 下一个首部。标识数据报中的内容需要交付给哪个息协议(TCP or UDP),与IPv4相同
    • 跳限制 ,每台路由器对该字段内容-1,==0时则丢弃
    • 数据。

    IPv6中的更改点:

    • 分片/重新组装。v6不允许在中间路由器上进行分片和重新组装。这种操作只能在源与目的地执行。如果路由器收到的数据报太大而不能转发到链路上,则路由器会丢掉该数据报,并向分组发送一个“分组太大”的ICMP(Internet Control Message Protocol,网络层协议)差错报文,让发送方重新发送较小数据的报文。(为什么去除?分片和重组是一个耗时操作,该功能从路由器中删除,并放在端系统中,加快网络中IP转发速度)。
    • 首部检验和。运输层和数据链路层执行了检验操作。设计者可能觉得没必要,v4中,由于首部由TTL字段,每台路由器都需要重新计算首部检验和。每台路由器会重新计算首部检验和,也是耗时操作。
    • 选项。没有完全消失,可能出现在“下一个首部”指出的位置上。
  2. 从IPv4到IPv6的迁移

    IPv4 如何迁移到 v6?虽然v6能向后兼容,但v4不能够处理v6数据报。

    建隧道(tunneling)。两台IPv6路由器之间中间的v4路由器集合叫一个隧道。将整个IPv6数据报放到一个v4数据报的数据字段中。v4数据报不知道自己含有一个v6数据报。

通用转发和SDN

原因:第二层交换机和第三层路由器等中间盒剧增,都有不同的硬件、软件,不统一。SDN正在提出一种统一、现代、简洁的方法,提供多种网络层功能和某些链路层功能。

流表 openFlow

网络层:控制平面

控制平面,控制沿着从源主机到目的主机的的端到端路劲间的路由器如何转发数据报,并且控制网络层组件和服务如何配置和管理。

通用场景下,动作包括转发分组到达路由器的每个输出端口,丢弃分组,复制分组,重写首部

方式:

  • 每路由器控制
  • 逻辑集中式控制

路由选择算法

目的:从发送方到接收方的过程中确定一条通过路由器网络的好的路径

图,找到最短路径

分类方法:

  1. 集中、分散

    • 集中式路由选择宣发。用完整的、全局性的网络知识计算出源到目的地的最低开销路径。(要求:具有关于连通性和链路开销的完整信息)。具有全局状态信息的算法被称为链路状态(Link State,LS)算法。必须知道网络中每条链路的开销

    • 分散式路由选择算法。路由器以迭代、分布式的方法计算出最低开销路径。没有节点拥有关于所有网络链路开销的完整信息,每个节点仅有与其直接项链链路的开销知识即可工作。距离向量(Distance-Vector ,DV)算法,每个节点维护到网络中所有其他节点的开销估计的向量。

  2. 静态动态

    • 静态路由选择算法,路由随时间变化慢。
    • 动态路由选择算法,随着网络流量负载或拓扑发生变化而改变路由选择路径。
  3. 负载敏感、迟钝

    • 负载敏感算法,链路开销会动态地变化以反应出底层链路当前拥塞水平。如果当前拥塞的链路与高开销相联系,则算法趋向于绕开该拥塞链路来选择路由。
    • 负载迟钝算法(当今因特网路由选择算法)

链路状态路由选择算法

Dijkstra算法。

LS算法终止时,对于每个节点,我们都得到从源节点沿着它的最低开销路径的前一个节点。

对于n个节点,最坏情况是O(n2)

对于另一种情况,链路两个方向承载的负载不同时,发生链路振荡

距离向量路由选择算法

迭代、异步、分布式

Bellman-Ford方程

每个节点x维护 的路由选择信息:

  • 对每个邻居v,从x到直接相连邻居v的开销c(x,v)
  • 节点x的距离向量。x到N中所有目的地y的开销估计值。
  • x的每个邻居的距离向量

在该算法中,每个节点不时地向它的每个邻居发送它的距离向量副本,当x从它的任何一个邻居w收到一个新的距离向量时,它保存w的距离向量,使用Bellman-Ford方程更新自己的距离向量。

如果节点x的距离向量因为这个步骤而改变,则节点x将向它的每个邻居发送更新后的距离向量,继而让邻居更新他们自己的距离向量。(如果在一个邻居更新过程中收到了另一个邻居的更新通知该怎么办?)

这样下来,每个开销估计会收敛到从节点x到节点y实际最低的路径开销

  1. 距离向量算法:链路开销改变与链路故障

    产生原因:更新通知的延迟造成

    路由选择环路(P.253)。增加最低开销 ---- 无穷计数问题

  2. 距离向量算法:增加毒性逆转

    避免路由选择环路

    如果z通过y路由选择到目的地x,则z给y说,它到x的距离是无穷大,这样y永远不会试图经由z路由选择到x

    毒性逆转无法接解决3个或更多节点

  3. LS、DV比较

    N个节点、E条链路

    • 报文复杂性。LS要发送O(N*E)个报文。且一条链路的开销改变,必须要向所有节点发送新的链路开销。DV算法仅在新的链路开销导致与该链路相连节点的最低开销路径发生改变时,才传播已改变的链路开销。

    • 收敛速度。LS ,O(N2)时间复杂度。DV收敛较慢,还可能遇到路由选择环路、无穷计数问题

    • 健壮性。(一台路由器恶意发送错误的向量表)。LS算法,路由计算分离,有一定健壮性。DV算法中一个不正确节点的计算值会扩散到整个网络。

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

由于规模和管理自治(ISP意愿)路由选择算法不统一。

通过将路由器组织进自治系统(Autonomous System ,AS)

每个AS由一组通常在相同管理控制下的路由器组成。通常一个ISP的路由器以及互联他们的链路构成一个AS,当然ISP也可以有多个AS。一个自治系统由全局唯一的AS号(ASN)标识,类似IP号。

在相同AS中路由器都运行相同的路由选择算法并且有彼此信息。在一个自治系统内运行的路由选择算法叫 自治系统内部路由选择算法

开发最短路优先(OSPF)

Open Short Priority First, 是一种链路状态(LS)协议,使用洪泛链路状态信息和Dijkstra最低开销路径算法,使用OSPF,一台路由器能够构建一副关于整个自治系统的完成拓扑图。

使用OSPF,路由器向自治系统内的所有其他路由器广播路由选择信息(而不仅仅是相邻的路由器广播),即使链路状态未发生改变,也要周期性的广播链路状态(增强LS算法健壮性)。OSPF报文由IP直接承载,对OSPF的上层协议值为89

优点:

  • 安全。鉴别OSPF路由器之间的信息交换。OSPF报文可配置为MD5(默认是简单,未被鉴别并且可以被伪造)
  • 多条相同开销的路径。存在多条相等开销路径时,无需仅选择单一的路径来承载所有的流量。
  • 对单播和多播路由选择的综合支持。
  • 支持在单个AS中的层次结构,一个OSPF AS能够层次化配置多个区域,每个区域都运行自己的OSPF链路状态路由器选择算法,区域内的每台路由器都向该区域内的气气他所有路由器广播链路状态。每个区域内,一台或多台区域边界路由器负责为流向该区域以外的分组提供路由选择。AS中只有一个OSPF区域配置为主干区域,主干区域的主要作用是为其他区域之间的流量提供路由选择。主干总是包含本AS中的所有区域边界路由器。AS中的区域间路由选择要求分组先路由到一个区域边界路由器(区域内路由选择),再通过主干路由到位目的区域的区域边界路由器,再路由到最终目的地。

设置OSPF链路权重,不太懂

ISP之间的路由选择:BGP

当分组跨越多个AS进行路由时,需要自治系统间路由选择协议

AS间路由选择协议设计多个AS之间的协调,所以AS通信必须运行相同的AS间路由选择协议。所以,因特网中运行相同的AS间路由选择协议,边界网关协议(Broder Gateway Protocol,BGP)【这个协议将数千的ISP粘合起来】

BGP中,分组不是路由到特定的目的地址,而是路由到CIDR化的前缀(132.13.12/22)。

BGP为每台路由器提供了完成以下任务的手段:

  • 从令居AS获得前缀的可达性信息。允许每个子网向因特网的区域部分通告它的存在,确保在因特网中的所有AS知道该子网。如果没有BGP,则每个子网是孤立的。
  • 确定到该前缀的最好的路由。

通告BGP路由信息

对于每个AS,路由器要么是网关路由器(位于AS边缘,直接连接到其他AS中的一台或者多台路由器),要么是内部路由器(仅连接在他自己AS中的主机和路由器)。

BGP中,每对路由器用179端口半永久TCP连接交换路由选择信息。每条直接连接以及所有通过该连接发送的BGP报文,称为BGP连接。跨越两个AS的BGP连接称为外部BGP连接(eBGP),相同AS中的两台路由器之间的BGP会话称为内部BGP连接(iBGP)

确定最好的路由

路由器通过BGP连接通告前缀时,前缀中包括某些BGP属性路由)。包含AS-PATH和NEXT-HOP

AS-PATH包含通告已经通过AS的列表,某一个前缀通过AS时,AS将其ASN加入到现有列表。还可以检测和防止通告环路,如果一台路由器在路劲列表中看到包含了它自己的AS,它将拒绝该通告。

NEXT-HOP, 是起始的AS-PATH起始的路由器接口的IP地址(可能要看书,P259)

每条BGP路由包含三个组件:NEXT-HOP AS-PATH 目的前缀....

  1. 热土豆路由选择

    热土豆,烫手,赶快把它给别人。自私的算法,不管其他人到其他人间的

    选择具有最小最低开销的网关

  2. 路由器选择算法

    BGP使用。如果到相同的前缀有两条或者多条路由,则顺序调用下列消除规则:

    1. 路由被指派一个本地偏好值作为属性之一。该值可能由路由器设置或在相同AS中的另一台路由器学习到。完全取决于AS网络管理员,具有最高本地偏好值的路由将被选择;
    2. 从余下的路由中(具有相同最高本地偏好值)选择最短AS-PATH的路由
    3. 从余下的路由中,使用热土豆路由选择,选择具有最靠近NEXT-HOP路由器的路由
    4. 如果仍留下多条,则使用BGP标识选择路由。

    非自私算法,先查找具有短AS路径的路由,因而可能减小端到端的时延

IP任播

BGP除了被用做AS间路由选择协议,还用于实现IP任播服务。

当一个用户要访问复制内容时,将用户指向具有该复制内容的最近的服务器。

CDN公司为多台服务器指派相同的IP地址,使用标准的BGP从这些服务器的每台来通告该IP地址。当某台BGP路由器收到该IP地址的多个路由通告,将通告处理为对相同的物理位置提供不同的路径。当配置路由选择表时,每台路由器将本地化使用BGP路由选择算法来挑选到该IP地址的最好的(例如,AS跳计数最少的)路由。客户请求视频时,CDN向客户返回由地理上分散的服务器使用的共同IP地址,当客户向IP地址发送请求时,则因特网路由器向最近的服务器转发该分组。

实际中CDN通常选择不适用IP任播。因为BGP路由选择变化能够导致相同的TCP连接的不同分组到达Web服务器的不同实力。

IP任播被DNS系统广泛用于将DNS请求指向最近的根DNS服务器

路由选择策略

P263,接入ISP为什么不会转发主干提供商网络的流量?

SDN控制平面

SDN体系结构的4个关键特征:

  1. 基于流的转发。SDN控制的交换机能够基于运输层、网络层、链路层首部中任意数量的首部字段值进行。
  2. 数据平面与控制平面分离。数据平面是网络交换机,在流表中执行匹配加动作的规则。控制平面由服务器以及决定和管理交换机流表的软件组成
  3. 网络控制功能。
  4. 可编程网络

SDN控制平面:SDN控制器和SDN网络控制应用

SDN控制器结构

  • 通信层:SDN控制器和受控网络设备之间的通信。SDN控制器控制远程SDN使交换机、主机运行,则需要一个协议传送这些设备之间的信息。并且设备也要能够向控制器传输本地观察到的时间。
  • 网络范围状态管理层。由SDN控制平面所做出的最终控制决定,将要求控制器具有有关网络的主机、链路、交换机以及其他SDN控制设备的最新状态信息。
  • 对于网络控制应用程序层的接口。控制器通过北向接口与网络控制应用程序交互

OpenFlow协议

运行在SDN控制器和SDN控制的交互及之间。协议运行在TCP之上,默认端口号:6653

ICMP:因特网控制报文协议

目的:主机和路由器用来彼此沟通网络层的信息。差错报告

在某个位置,IP路由器不能找到一条通往HTTP请求中所制定的主机的路径,路由器就会向你的主机生成并发送一个ICMP报文以指示该错误

ICMP作为IP有效载荷承载的,位于IP之上。

类型字段+编码字段,并且包含引起该ICMP报文首次生成的IP数据报首部和前8个字节(以便发送放能确定引发该差错的数据报)

例如:

  • ping程序发送一个ICMP类型8编码0的报文到指定主机,看到回显请求后,目的主机发回一个类型0编码0的ICMP回显回答。
  • 源抑制报文。执行拥塞控制,使得拥塞的路由器向一台主机发送一个ICMP源抑制报文,以强制该主机减小其发送速率。

网络管理和SNMP

网络管理框架

网络管理关键组件:

  • 管理服务器。一个应用程序,运行在网络运营中心(NOC)的集中式网络管理工作站上。控制网络管理信息的收集、处理、分析。

  • 被管设备。位于被管理网络中,可以是一台主机、路由器、交换机、中间盒....在一个被管设备中,有几个所谓被管对象。这些被管对象是被管设备中硬件的十几部分和用于这些硬件和软件组件的配置参数。

  • 一个被管设备中的每个被管对象的关联信息收集在 管理信息库(MIB)。一个MIB对象可以是:

    • 一个计数器
    • 运行在一台DNS服务器上的软件版本的描述性信息
    • 一个特定设备功能是否正确的状态信息
    • 到一个目的地的路由选择路径的特定协议的信息

    相关的MIB对象收集在MIB模块中

  • 每个被管设备中驻留有 网络管理代理,运行在被管设备中的一个进程,与管理服务器通信,在管理服务器的命令和控制下在被管设备中采取本地动作

  • 网络管理协议,运行在被管设备和管理服务器之间,允许管理服务器查询被管设备的状态,经过代理间接地的在这些设备上采取行动。代理能够使用网络管理协议向管理服务器通知异常事件。

简单网络管理协议

简单网络管理协议 v2 : SNMPv2是一个应用层协议。用于在管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文。最常使用:请求响应模式。也被用来代理向管理服务器发送非请求报文(陷阱报文,通知管理服务器,一个异常情况已导致MIB对象值的改变)

定义了7中类型的报文,称为 协议数据单元(PDU)

SNMP PDU经常是作为UDP数据报的载荷传输的,防止UDP数据丢失,管理服务区爱用该PDU的请求ID字段为它向代理发送的请求编号。

链路层和局域网

概述

节点:运行链路层协议的任何设备(主机、路由器、交换机、WiFi接入点)

链路:沿着通信路径连接相邻节点的通信信道。

链路层提供的服务

任意一个链路层能提供的基本服务:将数据报通过单一的通信链路从一个节点移动到相邻节点

还可能包括:

  • 成帧。将网络层数据报用链路层帧封装起来,一个帧由一个数据字段和若干首部字段组成,网络层数据报就插在数据字段中。
  • 链路接入。媒体访问控制(MAC,Medium Access Control)协议规定了帧在链路上的传输规则。协调多个节点的帧传输。
  • 可靠交付。如果提供,则保证无差错地将链路层移动每一个网络层数据(通常通过确认和重传取得)。连链路层可靠交付服务通常用于易于产生高差错的链路,例如无线链路,其目的是在差错发生的链路上,纠正一个差错,而不是通过运输层或应用层协议迫使进行端到端的数据重传。
  • 差错检测和纠正。帧中的一个比特 0 传输时,接收方节点中的链路层硬件可能不正确地判断为1.这种比特差错由信号衰减和电磁噪声导致的。没有必要转发一个有差错的数据报。发送方在帧中包括差错检测比特,让接收方进行差错检测。

在何处实现

链路层在哪一处实现?

主体部分在 网络适配器(网络接口卡,NIC)中实现,位于网络适配器核心的是链路层控制器,通常是一个实现了许多链路层服务的专用芯片。

链路层控制器的许多功能都是由硬件实现的,高层功能是由软件实现。因此,链路层是硬件和软件的结合体。

差错检测和纠正技术

注意这里是两个技术,差错检测 和 差错纠正

在发送节点,为了保护比特免受差错,使用差错检测和纠正比特(EDC)来增强数据D。要保护的数据不仅包括从网络层传递下俩的数据报,还包括链路帧首部中的链路级寻址信息、序号和其他字段。

接收方任务,只收到D` 和 EDC1 的情况下,确定D是否和初始数据D相同,但该技术还是可能有未检出比特差错

因此要选择一个差错检测方案,使得这种事件发生的概率非常小。(开销和概率的权衡)

image-20210927111505369
image-20210927111505369

奇偶校验

单个奇偶校验

偶校验,发送方包含一个附加的比特,使得数据中1的总数总是偶数。

二维奇偶校验:接收方可以检测到出现单个比特差错的事实,并且还可以利用存在奇偶校验差错的列和行的索引来实际识别发生差错的比特并纠正它。能够检测(但无法纠正)[是这样的] 一个分组中两个比特差错的任何分组。

前向纠错(FEC): 接收方检测和纠正差错的能力,通常用于音频CD这样的音频存储和回放设备中。FEC允许在接收方立即纠正差错,避免了不得不等待的往返时延

检验和方法

注意是 检验和 方法 而不是 检验 和 方法

因特网检验和:将k比特整数加起来,得到的和的反码作为差错检测比特。接收方通过对接收数据包括检验和的和取反码,并且检测结果是否全为1比特来检测检验和。

循环冗余检测

如今计网中广泛采用:循环冗余检测(CRC,Cyclic Redundancy Check),也叫多项式编码

发送方和接收方首先协商一个r + 1比特模式,称为生成多项式G,G的最高有效位比特是1.

对一个给定的数据段D,发送方选择r个附加比特R,附加到D上,得到d+r比特模式,用模2算术恰好能够被G整除(异或 XOR,加法中不进位,减法不借位)。

接收方用G去除接收到的d+r比特,如果余数 != 0,则出现了差错

D * 2r XOR R = nG

R = remainder D*2r/G

每个CRC标准都能检测小于r+11比特的突发错误,也能检测到任何奇数个比特差错。

CRC具体例题演示open in new window

多路访问链路和协议

两种类型的网络链路:

  • 点对点链路,由链路一段的单个发送方和链路另一端的单个接收方组成。许多链路层协议都是为点对点链路设计的。(例如,点对点协议 PPP 和高级数据链路控制(HDLC))
  • 广播链路,能够让多个发送方接收方都连接到相同的、单一的、共享的广播信道上,任何一个节点传输一个帧,信道广播该帧,每个节点收副本。(例如,以太网和无线局域网)

如何协调多个发送和接收节点对一个共享广播信道的访问 ----- > 多路访问问题(广播信道常用于局域网中)

因为所有节点都能传输帧,所以多个节点可能会同时传输帧,这种情况发生时,所有节点同时接收到多个帧,即传输的帧在所有的接收方处碰撞了。通常当碰撞发生时,没有一个接受节点能够有效获得任何传输的帧(某种意义下,帧的信号纠缠在一起),在碰撞时间间隔中的广播信道都被浪费了。协调多个节点的传输 --- > 多路访问协议负责。

多路访问协议的划分:

  • 信道划分协议
  • 随机接入协议
  • 轮流协议

信道划分协议

时分多路复用(TDM)和频分多路复用(FDM)是两种能够用于在所有共享信道节点之间划分广播信道带宽的技术。

一个支持N个几点的信道且传输速率为R bps

TDM: 时分多路复用

TDM将时间划分为时间帧,进一步划分每个时间帧为N个时隙,把每个时隙分配个N个节点中的一个。无论何时某个节点在有分组要发送的时候,它在循环的TDM帧中指派给它的时隙内传输分组比特。通常,选择的时隙长度应该使一个时隙内能传输单个分组。(类似时间片方式,每个人都有公平的发言权)

缺点:

  • 节点被限制 R/N bps的平均速率,即使他是唯一有分组要发送的节点时
  • 节点必须总是等待它在传输序列中的轮次,即使他是唯一有分组要发送的节点

FDM:频分多路复用

FDM将R bps信道划分为不同的频段,每个频段有R/N个带宽,把每个频率分配个N个节点中的一个,因此FDM在R bps信道中创建了N个较小的R/N bps信道。

优点:避免碰撞,在N个节点之间公平划分带宽。

缺点:限制一个节点只能使用R/N的带宽,即使当他是唯一一个有分组要发送的节点

CDMA:码分多址

CDMA为每个节点分配一种不同的编码,每个节点用它唯一的编码来对他发送的数据进行编码。能够做到不同节点同时传输,并且接收方仍能正确接收发送方编码的数据比特,而不在乎其他节点的干扰传输。(目前在军用系统中使用、民用蜂窝电话也有使用抗干扰)

随机接入协议

当有碰撞时,涉及碰撞的每个节点反复重发它的帧,到该帧无碰撞通过为止。但当一个节点经历一次碰撞时,它不必立刻重发该帧。相反,它在重发该帧之前的等待一个随机时延。

常用的随机接入协议:

  1. 时隙ALOHA协议

    要求:

    • 一个时隙等于传输一帧的时间
    • 节点只在时隙起点传输帧
    • 节点是同步的,每个节点都知道时隙何时开始
    • 节点在发送时隙结束之前检测到碰撞时间

    如果有碰撞,则节点在发送时隙结束之前检测到这次碰撞,并且以概率p在后续的每个时隙中重传该帧,知道该帧无碰撞地传输出去。

    优点:

    • 当某节点是唯一活跃的节点时,时隙ALOHA允许该节点以全速R bps连续传输。
    • 高度分散,每个节点检测碰撞并独立地决定什么时候重传

    缺点:

    • 需要节点中对时隙同步
    • 多个活跃节点,一部分时隙有碰撞被浪费掉;时隙的一部分省控线的,因为所有活跃节点由于概率传输策略会节制传输。

    时隙ALOHA效率是 Np(1-p)N-1, 取得最大值时, 效率37%

  2. ALOHA by Norm Abramson

    当一帧首次到达,节点立刻(在完全传输完它的碰撞帧之后)以概率p重传该帧,否则节点等待一个帧传输时间,此后以概率p重传该帧。

    一个给定节点传输成功的概率是 p(1-p)2(N-1)(N-1个节点在两份连续时隙内不能传输), 最大效率是 1 / 2e [P.297]

  3. CSMA 载波侦听多路访问

    ALOHA每个节点独立,不关心是否有其他节点正在传输

    • 载波侦听:一个节点在传输前要先听信道

    • 碰撞检测:一个传输节点在传输时一直在侦听此信道,如果由一个节点正在传输干扰帧,则此节点就停止传输。

      既然有载波侦听,为什么还需要碰撞检测?

      信道端到端信道传播时延,虽然是光速传播,但未到达之前还是认为该信道是空闲的 P.299

      传播时延越大,载波侦听节点不能侦听到网络中另一个节点以及开始传输的机会就越大。

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

    目的,不传输一个无用的、损坏的帧,改善协议的性能

    如何选择等待的时间间隔?

    理想情况:碰撞节点数少 ---> 时间间隔短;碰撞节点数多 ---> 时间间隔长

    问题解决: 二进制指数后退算法

    • 某帧经历了一连串n次碰撞后,节点随机从0 到 2n -1 中选择一个K值,因此,碰撞越多,K选择间隙越大。能够取得的最大值在10以内

轮流协议

当有M个节点活跃时,每个活跃节点的吞吐量接近R / M bps (前两个协议不具有)

  • 轮询协议。选主节点,主节点以循环方式轮询每个节点。主节点通过观察在信道上是否缺乏信号,来决定一个节点何时完成了 帧的传输。

    消除了碰撞和空时隙,但引入轮询时延,如果只有一个节点是活跃的,则该节点必然以小于R bps的速率传输;如果主节点故障在,则整个信道不可操作。

  • 令牌传递协议。一个称为令牌(token)的小的特殊帧在节点之间以固定的次序进行交换。一个节点收到令牌时,仅当它有帧要发送时,它才会持有这个令牌,否则就向下一个节点转发该令牌。

    令牌传递是分散,效率高。但一个节点的故障可能使得整个信道崩溃。如果一个节点忘记释放令牌,则需要恢复步骤。

DOCSIS:用于电缆因特网接入的链路层协议

一个电缆接入网通常在电缆网头端将几千个住宅电缆调制解调器与一个电缆调制解调器端接系统(CMTS)连接。DOCSIS使用FDM将下行(CMTS到调制解调器)和上行(调制解调器到CMTS)网络段划分为多个频率信道。CMTS在下行信道中传输的帧被所哟有在信道上做接收的调制解调器接收,然而因为仅有单一的CMTS在下行信道传输,所以不存在多路访问问题,但上行方向,多个电缆调制解调器共享到CMTS的相同上行信道,可能出现碰撞

每条上行信道被划分为时间间隔(类似TDM),每个时间间隔包含一个微时隙序列,电缆调制解调器在微时隙中向CMTS传输。CMTS显示的允许各个电缆调制解调器在特定的微时隙中进行传输。CMTS在下行信道上通过发送MAP报文的控制报文,制定哪个电缆调制解调器能够在微时隙中传输由控制报文制定的时间间隔。由于微时隙明确分配给电缆调制解调器,故CMTS能确保在微时隙中没有碰撞传输。

CMTS一开始如何知道哪个调制解调器有数据要发送?规定一组特殊的微时隙间隔,这个间隔内都可以向CMTS发送微时隙请求帧来完成。但这些帧可能碰撞。如何解决?电缆调制解调器如果没有在下一个下行控制报文中收到对请求分配的响应,就推测出有碰撞,使用二进制指数回退将微时隙的请求帧延缓到以后的时隙发送 P. 302

交换局域网

链路层寻址和ARP

MAC地址

再次强调,不是主机或者路由器具有链路层地址,而是他们的适配器(即网络接口)具有链路层地址。但链路层交换机不具有与他们的接口相关联的链路层地址,因为链路层交换机的任务是在主机和路由器之间承载数据报,它透明底执行了这项任务,主机或路由器不必明确第将帧寻址到其间的交换机。

链路层地址不同的称呼:

LAN 地址、物理地址、MAC地址

MAC地址长度为6字节,2^48个可用MAC地址,常用十六机制表示,MAC地址被设计为是固定的。

没有两块适配器具有相同的MAC地址

MAC扁平结构,IP地址具有层次结构(一个网路部分和一个主机部分),两者相反。

一个适配器可能接收到一个并非向它寻址的帧,不匹配,就会赌气,而不是向上传递网络层数据包。但是,有时适配器的确需要让所有其他适配器拉埃接收并处理他打算发送的帧,这种情况下,发送适配在帧的目的地址字段中插入一个特殊的MAC广播地址,FF-FF-FF-FF-FF

地址解析协议

Address Resolution Protocol, ARP :IP ---- > ARP

场景:一个子网中的主机要向相同子网的另一台主机发送数据报

只为在同一个子网上的主机和路由器接口解析IP地址

每台主机或路由器中有一个ARP表,包含IP地址到MAC地址的映射关系,也包含了寿命TTL值(指示从表中删除每个映射的时间,通常是20min)

发送方构造一个ARP packet的特殊分组,包含字段(发送、接收的IP地址和MAC地址)。又可分为ARP查询分组和响应分组,格式均相同。查询分组的目的是询问子网上所有其他主机和路由器,确定对应于要解析的IP地址的那个MAC地址

过程举例:

  • 一个主机向它的适配器传递一个ARP查询分组,并且指示适配器应该用MAC广播地址来发送这个分组
  • 适配器在链路层帧中封装这个ARP分组,用广播地址作为帧的目的地址,将该帧传输到子网中。
  • 子网中的所有其他适配器都接收到,并且每个适配器把在该帧中的ARP分组向上传递给ARP模块
  • ARP模块检查它的IP地址与ARP分组中的目的IP地址是否匹配,匹配 --> 给查询主机发送一个带有所希望映射的ARP分组。
  • 查询主机更新它的ARP表,并发送IP数据报,该数据报封装在链路层帧中,并且该帧的目的MAC就是对先前的ARP请求进行响应的主机或路由器的MAC地址(???)

ARP可看成是跨越链路层和网络层边界两边的协议。

发送数据报到子网以外

场景:子网的主机要向子网以外的(另一个子网中)主机发送网络层数据报

注意点:路由器的每个接口,都有一个IP地址、一个ARP模块和一个适配器,适配器有自己的MAC地址

主机---- > 路由器在子网1的接口 ----- > 路由器在子网2的接口 ------> 目的主机

如何确定目的主机不在子网中,从而将这个帧发送给路由器?

ARP表项在TTL内IP地址过期怎么办

以太网

Ethernet,由Xerox、Intel和Dec公司联合开发的基带总线局域网规范。使用CSMA/CD(载波监听多路访问及冲突避免技术)

  • 目前最流行的有线局域网技术(即局域网采用的通信协议),非常的重要(造价低廉(网卡不到100mb)、组网更简单)
  • 第一个广泛部署的高速局域网
  • 无连接、不可靠、尽最大努力交付;只实现差错接收,不实现可靠传输(差错帧直接丢弃)
  • 针对物理层、链路层

by Bob Metcalfe 和 David Boggs 20世纪70年代中期发明初始的以局域网,使用同轴电缆总线来互联节点。以太网的总线拓扑从80年代到90年代基本不变,使用总线拓扑的以太网是一种广播局域网,所有传输的帧传送到与该总线连接的所有适配器并被处理。

90年代后期,大多公司和大学使用基于集线器的星形拓扑以太网替代局域网。这种结构中,主机和路由器直接用双绞对铜线与一台集线器项链。集线器是物理层设备,作用于各个比特。当0、1比特到达一个接口时,集线器只是重新生成这个比特,将能量强度放大,并将该比特向所有其他接口传输出去。因此,采用基于集线器的星形拓扑的以太网也是一个广播局域网。同时,如果集线器同时从两个不同接口接收到帧,也会产生碰撞,需要重新传输。

21世纪初,集线器被交换机替代,交互机是无碰撞的,运行在第二层(路由器在第三层)。

以太网帧结构
image-20211004102312226
image-20211004102312226

场景:一台主机向另一台相同以太局域网上的主机发送一个IP数据报

  • 数据字段(46--1500字节)。承载IP数据报,以太网的最大传输单元MTU是1500字节(过大就被分片),最小长度是46字节(过小会被填充),过小时,网络层使用IP数据报首部的长度字段来去除填充部分
  • 目的地址(6字节)。包含目的适配器的MAC地址,当适配器收到一个以太网帧,无论是自身MAC地址还是MAC广播地址,它都将该帧的数据字段的内容传递给网络层,如果收到其他MAC的帧,则丢弃
  • 源地址(6字节)。
  • 类型字段(2字节)允许以太网复用多种网络层协议,主机能够使用除了IP以外的其他网络层协议。即适配器收到以太网帧时,适配器将它应该将数据字段的内容传递到的那个网络层协议对应。
  • CRC(4字节)。使得接受适配器检测,帧中是否出现了差错
  • 前同步码(8字节)。以太网帧以一个8字节的前同步码字段开始,前7字节的值都是10101010,最后一个字节是10101011.前7字节用途是唤醒 接收适配器,并将他们的时钟和发送方的时钟同步。(为什么有时钟不同步现象?以太局域网类型不同,由10Mbps、100Mbps、1Gbps的速率传输帧)。但发送方适配器不会以精确的额定速率传输帧,相对于额定速率肯定有偏差,接收适配器只需要通过锁定前同步码的前7字节的比特,就能够锁定适配器A的时钟,第8字节的最后两个比特 1 1,警告适配器B,数据即将到来。

特点

  • 所有的以太网计数都向网络层提供无连接服务(不需握手)
  • 以太网技术向网络层提供不可靠服务:适配器收到帧,执行CRC校验,但该帧通过CRC校验时,它既不发送确认帧,没有通过CRC校验也不发送否定帧,仅仅丢弃该帧。
  • 由于丢弃了以太网使得传递到网络层的数据报流有间隙,主机B上的应用能看到这个问题码?取决于上层协议(UDP、TCP)
以太网技术

不同协议

历史

早期10BASE-2和10BASE-5标准规定了两种类型的同轴电缆之上的 10Mbps的以太网,没种标准都限制在500米长度以内。通过转发器(物理设备,在输入端接收信号并且在输出端再生信号),能够得到更长的运行距离。一个接口传输的所有帧可在其他接口收到,并且以太网的CSMA/CD协议解决了多路访问问题。节点直接附着在电缆上。

如今,节点经过点对点的由双绞铜线或光纤电缆构成的线段与一台交换机相连。

90年代中期,以太网被标准化为100Mbps,更高速率的物理层被定义为用铜线(100BASE-T)和光纤(100BASE-FX、100BASE-SX、100BASE-BX)。用双绞铜线距离限制为100m,光纤距离限制为几千米,允许把不同建筑物中的以太网交换机连接起来。

吉比特以太网是对极为成功的10Mbps和100Mbps以太网标准的扩展。40Gbps以以太网提供40000Mbps总数据速率。吉比特以太网标准为IEEE 802.3z,完成以下工作:

  • 标准以太网帧格式,并且向后兼容10BASE-T与100BASE-T
  • 允许点对点链路以及共享的广播信道,点对点链路使用交换机,广播信道使用集线器("带缓存的分配器")
  • 使用CSMA/CD来共享广播信道

吉比特以太网最初作用与光纤之上,现在能够在5类UTP线缆上。

在总线拓扑和基于集线器的星形拓扑年代,以台湾网购是一种广播链路, 会出现碰撞的问题,为了处理这些问题,使用CSMA/CD协议,对跨越一个小的地理半径的有线广播局域网非常有效。但如今使用的是以太网基于交换机的星形拓扑,采用存储转发分组交换,是否还需要一种以太网MAC协议?【不会。交换机协调传输,在任何时候不会向相同的接口转发超过一个 的帧,且现代交换机是全双工,使得一台交换机和一个节点在同时向对方发送帧而没有干扰】

链路层交换机

交换机对于子网中的主机和路由器是透明的

  1. 交换机的转发和过滤

    转发:决定一个帧应该被导向到哪个接口,并把该帧移动到哪些接口的交换机功能

    过滤:决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能

    转发和过滤借助于交换机表完成,包含:

    • 一个MAC地址
    • 通向该MAC地址的交换机接口
    • 表项防止在表中的时间

    P.313 三种情况:相同局域网(过滤)、表中查不到(广播)、表中有不同接口的表项(转发)

    但一开始交换机表是如何配置的?

  2. 自学习

    交互机的表是自动、动态和自治建立的,没有来自网络管理员或任何配置协议的任何干预。

    • 交换机表初始为空
    • 在每个接口接收到的每个入帧,交互机在表中能够存储:
      1. 该帧源地址字段中的MAC地址
      2. 帧到达的接口
      3. 当前时间
    • 如果在一段时间(老化期)后,交换机没有接收到以该地址作为源地址的帧, 就在表中删除这个地址。

    交换机是即插即用设备

  3. 链路层交换机的性质

    不同于总线拓扑和基于集线器的星形拓扑那样的广播链路:

    • 消除碰撞。使用交换机构建的局域网中,没有因碰撞而构成的带宽,交换机缓存帧不会在网段上同时传输多于一个帧。交换机的最大聚合带宽是交换机所有接口速率之和,性能更高
    • 异质的链路。交换机将链路彼此隔离,局域网中不同链路能够以不同的 速率运行并在不同的媒体上运行
    • 管理。交换机能检测得到适配器异常工作情况(持续发送帧),在内部会断开 异常适配器。交换机也收集带宽使用的 统计数据、碰撞率等数据。。

    对抗交换机:交换机毒化。向交换机发送大量的具有不同伪造源MAC地址的分组,伪造表项填满了交换机表,没有为合法的主机留下空间。

  4. 交换机和路由器比较

    交换机:第二层分组交换机,使用MAC地址转发分组

    路由器:第三层分组交换机,使用网络层地址转发分组

    各自优缺点:

    TODO

    什么时候使用什么机器?

    几百台主机组成的小网络 -------- 交换机(因为不要求IP地址的任何配置就能使得流量局部化并且增加总计吞吐量)

    几千台主机组成的更大网络 -----交换机+路由器,路由器提供更健壮的流量隔离方式和对广播风暴的控制。

虚拟局域网

以上网络结构的缺点:

  • 缺乏流量隔离。尽管组流量被局域化到一个单一的交换机中,但广播流量(例如ARP和DHCP报文或那些目的地还没有被交换机学习到的帧)仍然需要跨越整个机构网络,又是可能为了隐私的目的需要限制局域网广播的流量
  • 交换机的无效使用。如果该机构有许多个组,则每个组都必须有一个一级交换机,但每个组人数少,则单台96端口的的交换机就够了,但并不能提供流量隔离
  • 管理用户 ,如果一个雇员在不同组件移动,必须改变物理布线,将该雇员连接到不同的交互机上

解决方案:虚拟局域网(VLAN)

支持VLAN的交互及允许经过一个单一的物理局域网的基础设施定义多个VLAN,在一个VLAN内的主机彼此通信。在一个基于端口的VLAN中,交换机的端口由管理员划分为组。每个组构成一个VLAN,每个VLAN中的端口形成一个广播域(即来自一个端口的广播流量仅能到达该组中的其他端口)。

只需要在交换机中维护一张端口到VLAN的映射表,交换机软件仅在属于相同VLAN的端口之间交付帧

但,不同的VLAN中的主机如何交互?

一种方式:VLAN交换机的一个端口与一台外部路由器相连。路由器的端口配置为想交互的几个主机。路由器等于做了一个中间人。

多台交换机 如何互联?

VLAN干线连接,每个交换机上有一个特殊端口被配置为干线端口,这个端口不属于某一个VLLAN,而属于所有的VLAN,发送到任何vLAN的帧必须要经过干线链路转发到其他交换机。

交换机怎么知道到达干线端口的帧属于某个特定的VLAN?

IEEE定义了一种扩展到达以太网帧格式:802.1Q,跨越 VLAN干线的帧。标准的以太网帧 + 加进首部的4字节VLAN标签,VLAN标签承载着该帧所属的 VLAN标识符。VLAN tag由在VLAN干线发送侧的交换机加进帧中,解析后并由在VLAN干线接收方的交换机删除。

VLAN tag:

  • 一个2字节的标签协议标识符(Tag Protocol Identifier ,TYID)字段(具有固定的十六进制值)
  • 一个2字节的标签控制信息字段(包含一个12bit的VLAN标识字段)
  • 一个3比特的优先权字段(类似IP数据报TOS字段)

VLAN可以基于端口也可以结余MAC地址、网络层协议等进行定义。

链路虚拟化:网络层作为链路层

连接两台主机的链路是电话网,由自己的用于数据传输和信令的交换机、链路和协议栈。然而,从链路层 的观点看,通过电话网的拨号连接被看做成是一根简单的线路。这个意义上,因特网虚化了电话网,将其看成是两台因特网主机之间提供链路层连接的链路层技术。

MPLS

多协议标签交换 : 改善IP路由器的转发速度。固定长度标签。

目标:对于基于固定长度标签和虚电路的技术,在不放弃基于目的地IP数据报转发的基础设施的前提下,当可能时通过选择性地标识数据报并允许路由器基于固定长度的标签转发数据报来增强其功能。(该技术与IP协同工作,使用IP寻址和路由选择)

MPLS首部,位于第二层首部和第三层首部之间。

字段:标签;预留的3bit实验字段;1bit S字段,用于指示一些列成栈的MPLS首部的结束;寿命字段

一个MPLS使能的路由器常被称为标签交换路由器

一个MPLS加强的帧仅能在两个均为标签交换路由器之间转发(普通的路由器识别不了MPLS首部),在转发表中查找MPLS标签,立即将数据报传递给适当的输出接口来转发MPLS帧。因此,标签交换路由器不需要提取目的IP地址和在转发表中执行最长前缀匹配的查找。路由器如何知道它的邻居是否是标签交换路由器?

MPLS基于标签执行交换,使得路由器不接触IP首部,然而其真正的优点并不在于交换速度的潜在增加。而是MPLS使能的新的流量管理能力。MPLS提供了沿着多条路由转发分组的功能,但如果使用IP标准路由协议这些路由将是不可能的 --------- 流量工程,网络运行着能够超越普通的IP路由选择,迫使某些流量沿着一条路径朝着给定的目的地引导。

MPLS还可被用于实现虚拟专用网(VPN),在为用户实现一个VPNR的过程中,ISR使用它的MPLS使能网络将用户的各种网络连接在一起,MPLS将资源和由用户的VPN所使用欧冠的寻址方式相隔离,其他用户利用该VPN跨越该ISP网络

数据中心网络

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

数据中心中的主机被称为 刀片,一般是包括CPU、内存和磁盘存储的商用主机,每20-40个主机叠放在机架上,每个机架顶部有一台交换机(机架顶部交换机,TOR交换机,Top Of Rack),与机架上的主机互联,并与数据中心中的其他交换机互联。[也就是说,每台机架上的每台主机都有一块与TOR交换机连接的网卡,每台TOR交换机有额外的端口能够与其他TOR交换机连接]

数据中心网络支持两种类型的流量:

  • 在外部客户与内部主机之间流动的流量

    数据中心网络包括了 一台或者多台边界路由器,将数据中心网络与公共因特网相连.数据中心网络因此需要所有机架彼此互联,将机架与边界路由器连接。

  • 内部主机之间流动的流量

1. 负载均衡

数据中心内部 ,外部请求首先被定向到一个负载均衡器,(任务:向这个用户分发请求,以主机当前的负载作为函数来在主机之间均衡负载),一个大型的数据中心通常有几台均衡负载器,每台服务于一组特定的云应用。

负载均衡器基于分组的目的端口号以及目的IP地址做决策,所以经常被称为第四层交换机

外部请求 ----> 负载均衡器 ----> 特定处理主机 ---->处理完成后 ----> 回送响应给负载均衡器 ----> 负载均衡器中继发送回外部客户。

还提供NAT类似功能,将外部IP地址转换为合适的内部主机IP地址,防止客户直接接触主机。

2. 等级体系结构

数千台主机的小型数据中心,一台边界路由器、一台负载均衡器、几十个机架、单一以太网交换机就ok。但主机规模扩增到几万、十几万怎么办?

数据中心应用路由器和交换机等级结构

image-20211002150129091
image-20211002150129091
  • 每太第一层交换机与多台第二层交换机和一台负载均衡器相连。
  • 每台第二层交换机通过多个机架的TOR交换机(第三层交换机)与多个机架相连

问题:存在主机到主机容量受限制的问题 P.324

3. 数据中心网络的发展趋势

为降低数据中心的费用,同时提高在时延和吞吐量上的性能的方案

部署能够客服传统等级设计缺陷的新型互联体系结构和网络协议的两种方法

1. 全连接拓扑

替代交换机和路由器的等级结构

每台第一层交换机都与所有的第二层交换机相连

  • 主机到主机的流量绝不会超过交换机层次
  • 对于n太第一层交换机,在任意两台二层交换机之间有n条不向交的路径
  • 显著改善主机到主机之间的容量。(可以走的路变多了)

2. 模块化数据中心(MDC)

每个集装箱由数千台主机、堆放在数十台机架上,紧密排列,数据中心位置,多个集装箱彼此互联,也和因特网连接。但通常集装箱难以检修,当组件出现故障时,集装箱继续运行但性能下降。当许多组件出现故障并且性能过低时,将会替换。

回顾:Web页面请求过程

一定回顾看书上的举例,十分的全面 P.329

无线网络和移动网络

概述

无线主机:便携机、掌上机、智能手机....

无线链路:主机通过无线通信链路连接到一个基站或者另一台无线主机,不同的无限连路技术具有不同的传输速率、能够传输不同的距离

image-20211002153624811
image-20211002153624811

基站:无线网络基础设施,负责向与之关联的无线主机发送数据、并从主机接收数据。通常负责协调与之相关联的多个无线主机的传输。

一台无线主机与某基站相关联:

  • 主机位于基站的无线通信覆盖范围内。
  • 主机使用基站中继它和更大网络之间的数据。
  • eg(蜂窝塔,无线LAN的接入点)

“跳”的概念解释

  • 单跳:基于基础设施,这些网络具有与较大有限网络(因特网)连接的基站。该基站与无线主机之间的所有通信都经过一个无限跳。日常的网络连接基本都是这样的。

  • 单挑,无基础设施。在这些网络中,不存在与无线网络相连接的基站。这种单跳网络中的一个节点可以协调其他节点传输(蓝牙、头戴耳机之类的无线设备...)

  • 多跳,基于基础设施。一个基站表现为以有线方式与较大网络相连接。某些无线节点为了经过该基站通信,不得不通过其他无线节点中继他们的通信。(无线网状网络、无线传感网络)

  • 多跳,无基础设施。网络中没有基站,节点为了到达目的地可能必须在几个其他无线节点中间中继报文,节点也是可移动的,多个几点中改变连接关系,被称为移动自组织网络(MANET)。如果该移动节点是车载的,被称为车载自组织网络(VANET)

无线网络的分类:

  • 该无线网络中的分组是否跨越了一个无线跳或多个无线跳
  • 网络中是否由诸如基站这样的基础设施

无线链路和网络特征

无线链路和有线链路的区别:

  • 递减的信号强度。电磁波穿过物体时强度减弱。信号强度随着发送、接收方之间的距离增加而减弱 ----> 路径损耗
  • 来自其他源的干扰。同一个频段发送信号的点播源将相互干扰。例如,802.11b无线LAN用户同时利用2.4GHz无线电话通信,将导致网络和电话都不会工作的很好。
  • 多径传播。电磁波的一部分受反射影响, 可能分成多个部分,从不同路径传播,使得接收方接收的信号变得模糊。

因此,无线链路的比特差错更为明显,无线链路协议除了采用CRC错误检测吗,还采用链路层ARQ协议来重传受损的帧。

信噪比(SNR):接收主机收到的信号和噪声强度的相对测量,单位dB
比特差错率(BER):接收方接收到有错误传输比特的概率

特征:

  • 对于给定的调制方案,SNR越高- --BER越低。发送方能够 通过它的传输功率增加SNR一次来降低接收到差错帧的速率。
  • 给定的SNR,具有较高比特传输率的调制技术,将具有较高的BER。
  • 物理层调制技术的动态选择能用于适配对信道条件的调制技术。SNR可能由于环境的改变而改变,蜂窝数据、802.11WiFi和4G蜂窝网络使用了自适应调制和编码。

隐蔽终端问题 P.343

CDMA

不同主机使用一个共享媒体通信,需要一个协议来保证多个发送方发送的信号不在接收方相互干扰。回顾第六章,三类媒体访问协议。

码多分址(Code Division Multiple Access ,CDMA),属于信道划分协议,在无线LAN和蜂窝技术中应用广泛。

码片速率:要发送的每个比特都通过 x 一个信号的比特来进行编码,指的是这个信号的变化速率。它比初始数据比特序列的变化速率快得多。

概念:

内积、正交、复用、多址

湖科大---静态划分信道open in new window

WiFi:802.11无线LAN

IEEE 802.11无线LAN -----> WiFi

不同的WiFi标准都具有某些共同的特征,使用相同的媒体访问协议CSMA/CA;链路层使用相同的帧结构;能够减少其传输速率以扩展到更远的距离;

802.11设备工作在两个不同频段上:

  • 2.4 ~ 2.485GHz,无需执照
  • 5.1 ~ 5.8GHz,给定的功率等级下有更短的传输距离,并且受多径传播的影响更多。

IEEE802.11标准open in new window

802.11体系结构

基本构建模块:基本服务集(Basic Service Set,BSS),一个BSS包含一个或者多个无线站点和一个接入点(Access Point,AP)【也叫中央基站】

每个802.11无线站点都具有一个6字节的MAC地址,该地址存储在该站适配器(802.11网络接口卡)的固件中。每个AP的无线接口也有一个MAC地址。

基础设施无线LAN:配置AP的无线LAN(基础设施,指AP连同互联AP和一台路由器的有线以太网)。

信道与关联

802.11中每个无线站点在能够发送或者接收网络层数据前,都要与一个AP相关联

网络管理员安装AP时,便为该接入点分配了一个单字或者双字的服务集标识符(Service Set Identifier ,SSID),还会分配一个信道号

WiFi丛林:是任意物理位置,在这里无线站点能从两个或者多个AP中收到很强的信号

为了加入其中的一个子网,客户的无线站点必须要与其中的一个AP关联。关联意味着无线站点在自身和AP之间创建一个虚拟线路。仅有关联的AP才向你的无线站点发送数据帧,并且 你的无线站点也通过该关联AP向因特网发送数据帧。

无线站点如何与特定AP关联?

802.11要求每个AP周期性发送信标帧,每个信标帧包括AP的SSID和MAC地址。无线站点为了得知正在发送信标帧的AP,扫描11个信道,找到可能位于该区域的AP,选择一个可用AP并关联。(又有关联请求帧和关联响应帧)

被动扫描:扫描信道和监听信标帧的过程
主动扫描:通过向位于无线主机范围内的所有AP广播探测帧完成。(AP用一个探测响应帧回应探测请求帧)

一旦与一个AP关联,主机将向通过关联的AP向子网发送一个DHCP发现报文,获取在该AP子网中的一个IP地址。

802.11 MAC协议

许多无线设备或者AP自身希望同时经过相同信道传输数据帧 ---- > 需要多路访问协议来协调传输。

站点:无线设备和AP,共享多个接入信道。

带碰撞避免的CSMA(CSMA/CA),属于随机访问协议

以太网和802.11MAC协议的区别?

  • 未实现碰撞检测,而是碰撞避免

    原因:

    • 检测碰撞的能力要求站点具有同时发送和接收的能力。在802.11适配器上,接收信号的强度远小于发送信号的强度,制造具有检测碰撞能力的硬件代价较大、成本较高。
    • 即使适配器可以接收和发送同时进行,但也会由于隐藏终端问题和衰减问题而无法检测到所有的碰撞

    由于不适用碰撞检测,所以一旦站点开始发送一个帧,他就完全的发送该帧。

  • 使用链路层确认 / 重传协议

    无线LAN中某站点发送一个帧,可能不会无损地到达目的站点 ----->链路层确认。

    目的站点在收到一个CRC校验的帧后,等待一个短帧间间隔(SIFS),然后发回一个确认帧。如果发送站点在给定时间内未收到确认帧,则假定出现了错误,并重传该帧。若在若干固定次重传后仍未收到确认,发送站点将放弃发送并丢弃该帧。

CSMA/CA协议过程:

  1. 一个站点有帧要发送
  2. 站点最初监听到信道空闲,则将在一个被称为分布式帧间间隔(DIFS)的短时间段后发送该帧
  3. 不空闲,则站点选取一个随机回退值,并在侦听信道空闲时递减该值。
  4. 计数值为0时,该站点发送整个数据帧
  5. 收到确认,如果还要发送另一帧,回到第二步。未收到确认,发送站点将重新进入第二步中的回退阶段,从一个更大的范围选择随机值

1. 处理隐藏终端:RTS和CTS

背景:两个无线站点之间是隐藏的,但对AP不隐藏 (覆盖范围和衰减问题)

导致的问题:A站点向AP传输一个帧,中途B站点也要向AP传输一个帧,但B听不到来自A的传输,将会导致碰撞。

问题解决:802.11允许站点使用一个短请求发送(Request - To -Send ,RTS)控制帧和一个短允许发送(Clear To Send,CTS)控制帧来预约对信道的访问。

发送方要发送DATA帧时,先向AP发送RTS帧,指示传输DATA帧和确认ACK帧需要的总时间。AP收到后,将广播一个CTS帧作为响应。广播CTS帧作用:(给指定发送方明确的发送许可;指示其他站点在预约期内不可发送)

缺点:引入了时延、消耗了信道资源。RTS/CTS仅用做长数据帧预约信道。

2. 使用802.11作为一个点对点链路

两个节点都具有定向天线,则可以将天线指向对方,在一个点对点链路上运行802.11协议

802.11帧

image-20211004102532916
image-20211004102532916
  • 有效载荷与CRC字段:有效载荷通常由IP数据报或者ARP分组组成,最大允许长度为2312字节(通常<1500),包含CRC校验

  • 地址字段:4个地址字段,每一个都可以包含一个6字节的MAC地址。为啥需要4个?

    互联目的需要3个地址字段。网络层数据报从一个无线站点通过一个AP到一台路由器接口。

    当AP在自组织模式中相互转发时使用第四个地址

    • 地址1:接收该帧的无线站点的MAC地址。
    • 地址2:传输该帧的站点的MAC地址。
    • 地址3:与AP相连且与AP连接的路由器接口的MAC地址。在BSS和有线局域网的互联中有关键的作用(理解地址3, P.354)

    注意点:当AP与直接相连的路由器接口传输帧时,有802.3的以太网帧 ------ 802.11帧之间的相互转化

  • 序号、持续期和帧控制字段:

    回忆rdt2.1,使用序号可以使接收方区分新传输的帧和以前的帧重传

    持续期,RTS、CTS中的预约时间,包括传输数据帧的时间和传输确认的时间

    帧控制有许多字段,类型和子类型字段用于区分关、RTS、CTS、ACK和数据帧;To和From字段用于定义不同地址字段的含义(含义会随着使用自组织模式或者基础设施模式而改变;基础设施模式时,也会随着是无线站点还是AP在发送帧而变化);WEP字段指示了是否使用加密

在相同的IP子网中的移动性

为增加无线LAN的物理范围,同一个IP子网中会部署多个BSS。

无线站点如何在维持进行中的TCP会话的情况下,无缝地从一个BSS移动到另一个

**互联设备不是路由器,则两个BSS中的所有站点都属于同一个IP子网。**如果是路由器,则站点必须在它移动进入的子网中获得一个新的地址(这种地址变化会打断该站点的任何TCP连接)。P.355

802.11中的高级特色、

不一定所有协议都实现

  1. 速率适应

    自是一个根据当前和近期信道特点来选择物理层调制技术。与TCP拥塞控制类似

  2. 功率管理

    一个节点能够明显地在睡眠和唤醒状态之间交替。节点能够向AP指示它将要睡眠,AP计划发送它的信标帧在节点刚好唤醒后。

个人域网络:蓝牙和ZigBee

  1. 蓝牙

    IEEE 802.15.1 网络以低功率和低成本在小范围内允许,本质是一个低功率、低速率的电缆替代技术。

    • 被称为“无线个人域网络”(WPAN)
    • 以TDM方式工作在2.4GHz无线电波段,每个时隙为625us。每个时隙内,发送方利用79个信道中的一个进行传输,同时从时隙到时隙以一个已知的伪随机方式变更信道(跳频扩展频谱,FHSS的信道跳动方式将传输及时扩展到整个频谱)。能提供4Mbps的数据率
    • 自组织网络,受限设备要组织成一个多达8个活动设备的皮可网(piconet),有一个主设备。主设备真正控制piconet,它的湿疹确定了piconet的时间,可以在奇数时隙中欧冠发送,而从设备仅当主设备在前一时隙与其通信后才可发送,并且只能发送给主设备。除了从设备,网络中还可以有255个寄放设备,当设备被主节点转换为活动状态后才可以通信。
  2. ZigBee

    第二个人域网络。802.14.5;低功率、低数据率、低工作周期(适用于家庭温度、光线传感器等) 20kbps、40kbps、100、250kbps的信道速率

    一个全功能设备作为主设备。多个全功能设备能够配置为一个网状网络

蜂窝因特网接入

GSM:全球移动通信系统(Groupe Special Mobile)

UMTS: 通信移动通信服务(UMTS)

第一代:模拟FDMA系统,专门用于语音通信。几乎完全被2G替代

2G蜂窝网体系结构:语音和电话网连接

蜂窝:一个蜂窝网覆盖的区域被分成许多小区(cell)的地理覆盖区域
其中每个小区有一个收发基站(Base Transceiver Station ,BTS),负责向位于小区内的移动站点发送、接收信号。

2GG蜂窝系统的GSM标准对空中接口使用组合的FDM/TDM,由200kHz的频带组成,每个频带支持8个TDM呼叫。GSM以13kbps和12.2kbps速率编码

基站控制器(BSC):通常服务与几十个收发基站,为移动用户分配BTS无线信道,执行寻呼(找出某移动用户所在的小区),执行移动用户的切换。

GSM基站系统(BSS)= BSC + BSC控制的BTS

移动交换中心(Mobile sWitching Center,MSC):用户鉴别、账号管理、呼叫建立和切换。包含多达5个的BSC,每个MSC大约有20 0000个用户,一个蜂窝提供商网络有若干个MSC,使用网关MSC的特殊MSC将提供商的蜂窝网络和更大的公共电话网相连接

3G蜂窝数据网:将因特网扩展到蜂窝用户

要求手机要运行完整的TCP/IP协议栈(5层)

1. 3G核心网

​ 3G核心蜂窝数据将无线电接入网连接到公共因特网。核心网与现有蜂窝语音网(MSC)组件相协作:不触动现有的核心GSM蜂窝语音网,增加与现有蜂窝语音网平行的附加蜂窝数据功能。

3G核心网中的两类节点:

  • 服务通用分组无线服务支持节点(SGSN),负责向位于其连接的无线电接入网中的移动节点交付/获取 数据报。

    SGSN与该区域蜂窝语音网的MSC进行交互,提供用户认证、切换,维护活跃移动节点的位置信息,执行位于无线接入网中的移动节点和GGSN之间的数据报转发。

  • 网管GPRS支持及诶大(GGSN)【注:GPRS(General Packet Radiio Service)表示通用分组无线服务,是一种在2G网络中的早期蜂窝数据服务。】 。网关作用,将多个SGSN连接到更大的因特网。GGSN是移动节点的一个数据报在进入更大因特网之前遇到的3G基础设施的最后一部分

2. 3G无线接入网:无线边缘

3G无线电接入网是3G用户看见的无线第一跳网络。

无线电网控制器(RNC)通常控制几个小区的收发基站,RNC既通过MSC与电路路交换蜂窝语音网连接,又通过SGSN与分组交换的因特网连接。因此,尽管3G蜂窝语音服务和数据服务使用不同的核心网,但他们共享一个相同的第一/最后一跳无线电接入网。

3G UMTS在TDMA时隙中使用直接序列宽带CDMA (DS-WCDMA)技术

4G:LTE

1. 体系结构:一个全IP核心网

4G长期演进互联网:LTE

用户:UE 分组网关:P-GW 保证服务质量(QoS)

特点:

  • 一种统一的、全IP网络体系结构。全IP:语音和数据都承载在IP数据报中。(3G网络中语音、数据流量有分离的网络组件和路径)
  • 4G数据平面和控制平面被清晰分离。
  • 无线电接入网与全IP核心网被清晰分离
  • eNodeB是2G基站和3G无线淡忘罗控制器的逻辑后代。UE数据报在eNodeB中被封装,通过4G网络的全IP强化分组(EPC)以隧道形式传输到P-GW
  • 分组数据网络网关(Packet Data Network Gateway,P-GW),给UE分配IP地址,并且保证QoS实施
  • 服务网关(S-GW),数据平面的移动性锚点,所有的UE流量将通过S-GW传递。S-GW也执行收费、记账功能以及法定的流量拦截
  • 移动性管理实体(MME),代表位于它所控制单元中的UE,执行连接和移动性管理。从HHS接收UE订购信息
  • 归属用户服务(Home Subscriber Server ,HSS)包含漫游接入能力、服务质量配置文件和鉴别信息的UE信息,HSS从UE归属蜂窝提供上得到这些信息
image-20211004170036976
image-20211004170036976

2. LET无线电接入

LTE在下行信道采用FDM和TDM结合的方法 ---- 正交频分复用(OFDM)技术

每个活跃的移动节点都可以在一个或者更多个信道频率上被分配一个或多个0.5ms时隙,时隙越多,移动节点的传输速率就越高

移动管理:原理

永久归属:一个移动节点的永久居所

归属代理:归属网络中代表移动节点执行 的移动管理功能的实体。负责与外部代理交互以跟踪移动节点的COA;监视到达的数据报(这些数据报的寻址的节点归属网络与此相同,但节点在另一个外部网络中),转发给外部代理,外部代理再转给移动节点。

外部网络/被访网络:移动节点当前所在网络

外部代理:外部网络中帮助移动节点做移动管理功能的实体

寻址

外部代理放置在外部网络的边缘路由器上, 为移动节点创建一个所谓转交地址(Care Of Address ,COA),COA的网络部分与外部网络的网络部分匹配

因此一个移动节点可以和两个地址关联

  • 永久地址
  • COA(外部地址)

路由选择到移动节点

1. 移动节点的间接路由选择

通信者如何给在一个网络中的懂节点发送数据报?

  • 移动节点到外部代理的协议。当移动节点连接到外部网络时,它向外部代理注册,离开时取消注册
  • 外部代理到归属代理的注册协议。外部代理向归属代理注册移动节点的COA。某个移动节点离开网络时,外部代理不需要显示地注销COA,因为移动节点到新的网络时,就会注册一个新的COA(告诉该节点的归属代理,完成替换)
  • 归属代理数据报封装协议。通信者的原始数据封装在一个目的地址为COA的数据报内
  • 外部代理拆封协议。从封装号的 数据报中去除通信者的原始数据宝,并转发给移动节点

移动节点如何给一个 通信者发送数据报?

直接发送。

会导致数据流中断吗?

只要移动节点再次连接到网络B,向归属代理注册新的COA时间少, 则几乎无丢失数据报

2. 移动节点的直接路由选择

间接路由问题:明明有最短路径,但走不了(必须经过过归属代理) -------三角路由选择问题

通信者所在网络的一个通信者代理,事先知道该移动节点的COA通过让通信者代理向归属代理询问得知。通信者代理将数据报直接通过隧道技术发往移动节点的COA

要求:

  • 需要移动用户定位协议。便于通信者代理向归属代理查询获得移动节点的COA
  • 当通信者代理中某移动节点的COA过期怎么办?

解决:

锚外部代理:首次发现移动节点的外部网络中的外部代理

当一个节点到达新外部网络后,移动节点向新的外部代理注册,新外部代理向锚外部代理提供移动节点的新COA。当锚外部代理收到一个发往已经离开的移动节点的封装数据报后,可以使用新的COA重新封装数据报并转发给该移动节点。

缺点:增加了复杂性,并且外部代理作为锚外部代理时负载也会增加。

移动IP

移动节点 以 固定的网络 IP 地址 , 实现 跨越 不同网段 的 漫游 功能 , 并能保证 基于 网络 IP 的 网络权限 在 漫游过程中 不发生 任何改变 ;(使用间接路由选择)

永久地址:移动节点在归属网络中的原始地址

移动IP标准:

  • 代理发现。定义了一个归属代理或外部代理来向移动节点通告其服务的协议,以及移动节点请求一个外部代理或归属代理的服务所使用的协议。
  • 向归属代理注册。定义了移动节点或外部代理向 一个移动节点的归属代理注册或注销COA所使用的协议
  • 数据报的简介路由选择。定义了数据报被一个归属代理转发给移动节点的方式。

代理发现

代理发现:到达一个新网络的移动节点,必须知道响应外部代理或者归属代理的 身份。两种方式:经代理通告或者经代理请求

1. 代理通告

外部代理/归属代理 使用现有路由器发现协议的扩展协议来通告服务。代理周期性地在所有连接的链路上广播一个类型字段为9(路由器发现)的ICMP报文,允许一个移动节点知道该代理的IP地址。

还包含以下扩展:

  • 归属代理比特H,支出该代理是它所在网络的一个归属代理
  • 外部代理比特F
  • 注册要求比特R,支出该网络的移动用户必须向某个外部代理注册。
  • 转交地址COA字段,由外部代理提供的一个或者多个转交地址的列表。

2. 代理请求

移动节点自身能够广播一个代理请求报文,类型值为10的ICMP报文。收到该请求的代理直接向移动节点单播一个代理通告

2. 向归属代理注册

一旦某个移动IP节点收到一个COA,则该地址必须向归属代理注册。可通过外部代理或移动节点自身完成。

  • 移动IP节点收到外部代理通告后,立即向外部代理发送一个移动IP注册报文。承载在UDP数据报,端口434.包括:由外部代理通告的COA;归属代理的地址HA、移动节点的永久地址MA、请求的注册寿命和一个64比特的注册表示。
  • 外部代理收到并记录移动节点的永久IP地址。外部代理向归属代理434端口发送移动IP注册报文。其他信息同上
  • 归属代理接收注册请求并检查真实性和正确性(因为是外部来的)。将移动节点的永久IP和COA绑定在一起。以后到达归属代理的数据报与发往移动节点的数据报都将被封装并以隧道方式发给COA,归属代理返回一个移动IP注册回答,包含HA、MA、世纪注册寿命和被认可的请求报文注册表示
  • 外部代理接收注册响应,转发给移动节点。

管理蜂窝网中的移动性

与移动IP类似,GSM 使用间接路由选择方法。

GSM中,移动用户的归属网络 ----- > 移动用户的归属公共地域移动(PLMN)

移动用户向某个蜂窝网的提供商订购了方服务,则该蜂窝网就称为了这些用户的归属网络。被访问了PLMN,称为被访网络,是移动用户当前所在网络

  • 归属网络维护一个归属位置注册器(HLR)的数据库,包括每个用户的 永久蜂窝电话号码以及用户个人概要信息,也包括这些用户的当前位置信息。当一个呼叫定位到一个移动用户后,通信者将与归属网络中的网关移动服务交换中心(GMSC,归属MSC)的特殊交互机联系。
  • 被放网络维护一个**访问者位置注册(**VLR)的数据库。为当前在其服务网络的移动用户包含一个表项。随着用户的进入和离开网络出现/消失。

对移动用户呼叫的路由选择

呼叫过程

  • 通信者打电话(号码的前几位足以全局判别移动用户的归属网络)。呼叫从通信者通过公共交换电话网到达移动用户归属网络中的GMSC。
  • GMSC收到呼叫被查询HLR来确定移动用户的位置。最简单情况下,HLR返回移动站点漫游号码(MSRN,漫游号码)。漫游号码是短暂的(类似COA的作用,对通信者和移动用户不可见);如果HLR不具有该漫游号码,则返回被访网络中的VLR地址,GMSC需要查询VLR(????)来获取移动节点的漫游号码。
  • GMSC通过网络到达被访网络的MSC建立呼叫的第二步。

通信者----> GMSC---> 被访MSC

但HLR如何获得移动用户的位置信息?

GSM中的切换

呼叫过程中,移动站点将其关联的一个基站改变到另一个基站时出现切换

切换发生的原因:

  • 当前基站与移动用户信号过弱,呼叫可能被中断
  • 一个蜂窝处理的呼叫太多,负载太大

如何切换 P.377

不同的方式:锚MSC 和 新旧MSC转发

移动IP和GSM移动性间的共性

无线性和移动性:对高层协议的影响

无线网络在链路层(衰减、多路径、隐藏终端)等问题和网络层(移动用户改变与网络的连接点)与有线网络的对应物有重大区别,在运输层和应用层是否也有区别?

运输层协议(特别是TCP)在有线和无线网络中有完全不同的性能

由于无线信道的高比特差错率和切换丢失的可能,TCP拥塞控制反应可能有问题(发送方 并不知道是因为拥塞还是切换过程中有比特差错被丢弃)。解决方案:

  • 本地恢复。在比特差错出现的当时和当地 将其恢复
  • TCP发送方知晓无线链路。让TCP发送方和接收方知晓无线链路的存在,从而将有线网络中发生的拥塞性丢包和无线网络中发生的差错/丢包区分开来
  • 分离连接方法。分离成两个运输层连接:移动主机到无线接入点 --- 无线接入点到其他通信端点(也即 无线部分 + 有线部分)经过无线段的运输层能够是一个TCP,或是一个特别定制运行在UDP上的差错恢复协议

计算机网络的安全

三种攻击方式

  • 唯密文攻击。入侵者只能得到截取的密文,不了解明文报文的内容
  • 已知明文攻击。确信密文、明文中有一些匹配...
  • 选择明文攻击。入侵者能够选择某一明文报文并且得到该明文报文对应的密文形式

加密技术

对称密钥密码体质

单码代替密码---- > 多码代替密码

两种对称加密技术:

  • 流密码
  • 块密码

1. 块密码

要加密的报文被处理成k比特的块,每块被独立加密。k比特明文被映射成k比特密文

通常使用函数模拟随机排列表,分块成行,用更少的规则循环地给每行加密 P. 390

eg. DFS(数据加密标准)、3DES 、AES(高级加密标准)都使用了比特串作为密钥

2. 密码块链接

相同的明文通过块密码被重复加密为相同的密文,可能被猜出

块密码 ^ 等比特随机数

但传输比特 * 2 -- > 解决方案 密码块链接(CBC),仅随第一个报文发送一个随机值,发送方和接收方是使用计算的编码块代替后面的随机数。

P. 392

公开密钥加密

公钥、私钥 K+(K-(M)) = K-(K+(M)) = M

但有两个问题:

  1. 入侵者可以通过我主机的公钥 选择明文攻击,可以根据明文去猜密文
  2. 任何一个人都可以向我发送用我的公钥加密的报文,会有伪造发送方的现象

解决方案:

1. RSA

广泛使用了模n算术的运算

(a mod n)d mod n = ad mod n

两大步骤

  • 选择公钥和私钥
  • 加密和解密算法

具体步骤

  • 选择两个大素数 p q。值越大,破解RSA越困难。p、q乘积为1024比特的数量级较好
  • 计算n=qp和z = (p-1)(q-1)
  • 选择小于n的数e,使得e和z没有非1的公因数。e用于加密
  • 求一个数d,使得ed-1能被z整除。d用于解密
  • 公钥 K+ = (n,e),私钥 K- = (n,d)

执行步骤

  • 我给他发一个m整数表示的比特组合。m<n,为了执行编码,我将执行me计算这个数被n除的整数余数。即加密值: c = me mod n,发送给他
  • 他要解密,计算 m = cd mod n

2. 会话密钥

RSA指数运算十分耗时,实际应用中,RSA通常与对称密钥密码

Send先选择一个会话密钥 Ks 这个密钥必须共享给Receive。Send用Rec的RSA公钥来加密该密钥,Rec收到后,解密得到密钥。

3. RSA工作原理

算术证明 P. 396

RSA的安全性依赖于这样一个事实:目前没有已知的算法恶意快速进行一个数的因数分解,这种情况下公开值n无法快速分解出素数p和q,但也不确定是否以后就一直没有这样的算法。

报文完整性和数字签名

确保没有被更改

密码散列函数

具有性质:

找到两个不同的报文x,y使得H(x) = H(y),在计算上是不可能的(例如因特网校验和和CRC)

但因特网校验和不太严格,可能有两个相同的字符串有校验和

MD5散列算法

通过四步过程计算得到128比特的散列

  • 填充:先填1,然后填足够多的0,知道报文长度满足一定条件
  • 添加:在填充前添加一个用64bit表示的报文长度
  • 初始化累计器
  • 循环:在最后的循环步骤,对报文的16字块进行4轮处理

作用:

  1. 密码保护
  2. 完整性验证
  3. 数字签名

(MD5算法介绍)[https://www.bilibili.com/video/BV1u44y1z7t1?from=search&seid=8959130404275666978&spm_id_from=333.337.0.0open in new window]

安全散列算法SHA(Security Hash Algorithm)--1

报文鉴别码

鉴别密钥s

报文鉴别码(MAC, Message Authentication Code): s级联明文m,计算散列得到H(m+s)

作用:防止别人也通过散列方法伪造请求

如何向通信实体分发共享的鉴别密钥?

数字签名

指出一个文件的的所有者,(是我写的这个),证明某个人在一个文件上的签名确实是这个人签署的(可验证性),且只有那个人能签署这个文件(不可伪造性)

用私钥加密报文m ,对方用公钥解密

但直接对报文加解密开销非常大,所以经常计算该报文的一个固定长度的数据“指纹”。对报文的散列签名而不是对报文的本身签名

公钥认证

对获得公钥的 验证,从源头上确定这是你

数字签名的一个重要应用,证实一个公钥属于某个特定的实体,应用于许多安全网络协议中,SSL和IPsec

公钥与特定实体的绑定,认证中心CA,Certification Authoriity)

作用:

  • 证实一个实体(一台机器、路由器)的真实身份,对CA必须完全信任
  • 一旦CA验证了某个师太的身份,CA将生成一个与其身份和实体公钥绑定的证书。证书中包含了这个公钥和公钥所有者全局唯一的身份表示信息(例如它的IP地址),由CA对这个证书进行数字签名(用CA的私钥)

在请求公钥的同时,也会发送CA签署的证书,用CA的公钥解密,来验证对方公钥的安全性

端点鉴别

一个实体经过计算机网络向另一个实体证明自己身份的过程(之前讨论的是鉴别他人身份),即如何变得被可鉴别?

鉴别协议,AP

鉴别协议 ap1.0

我就是我

鉴别协议 ap2.0

加入IP地址

问题:IP哄骗

鉴别协议 ap3.0

使用秘密口令,又是一个共享秘密。Gmail、Telnet、FTP服务使用

口令的发送过程可能被窃听

鉴别协议 ap3.1

秘密口令 + 加密口令,类似公钥私钥的加解密方式,双方共享一个对称秘密密钥

问题:回放攻击,监听发件人通信并伪装成发件人(我不知道这是你第几次在跟我说你在不同的设备)

鉴别协议 ap4.0

不重数:在一个协议的生存期内只使用一次的数。

加密过程:

  • Alice向Bob发送报文
  • Bob选择一个不重数R,发给Alice,这个数可能被窃听
  • Alice使用他与Bob共享的对称密钥,加密这个R,把加密的不重数K(R)返回给Bob,这个不重数证明Alice还是活跃的。

安全电子邮件

因特网在多个层次上提供安全性功能

原因:

  • 提供用户级别的安全性
  • 在高层部署新的因特网服务较为容易。

安全电子邮件

会话密钥 + 数字签名

PGP

Pretty Good Privacy ,电子邮件加密方案

数字签名 + 公开密钥对 + 散列

TCP连接安全:SSL

安全套接字层(Secure Socket Layer,SSL)

TCP的强化版本,机密性、数据完整性、端点鉴别

SSL版本的加强版本 运输层安全性,TLS(Transport Layer Security)

SSL使得TCP安全了,能够应用于运行在TCP上的任何应用程序,提供了一个简单的具有套接字的应用编程接口(API),类似TCP的API。(尽管SSL技术上位于应用层,但它却提供TCP服务的运输协议)

希望等到TCP会话结束才验证所有的数据完整性。
解决:SSL将数据流分割成记录,对每个记录附加一个MAC用于验证完整性,然后加密该“记录+MAC”,但如果有人更改了记录表的部分顺序,则报文完整性被破坏。

解决方式:SSL序号

发送方SSL维护一个序号计数器,每发一个SSL记录,就+1,计算MAC时,就把序号包括在MAC的计算中。接受方通过跟踪发送方的序号,通过在MAC的计算中包括适当的序号,来验证一条记录的完整性。SSL序号的使用组织了第三方执行重排序记录或重放报文段等中间人功能机

注意SSL序号和不重数的作用

防止连接重放 防止在一个进行中的会话重放个别分组

SSL记录

类型 + 版本+ 长度 + 数据和MAC的密钥加密结果

过程

伪过程 P.412

  1. SSL握手

    1. Client发送它支持的密码算法列表,以及不重数
    2. Server从列表中选择一种对称加密算法,一种公钥算法,一种MAC算法。把这些选择以及证书和一个服务器不重数返回给client
    3. 客户验证该证书,提取服务器公钥,生成一个前主密钥(PMS),用服务器的公钥加密该PMS,并将加密的PMS发送给server
    4. client和server独立地从PMS和不重数中计算出主密钥MS,MS被切片以生成两个密码和两个MAC密钥。
    5. client发送所有握手报文的一个MAC
    6. server发送所有握手报文的一个MAC(5.6步骤使得握手免受篡改伤害(算法列表不被删改)

    存在不重数的原因:防御"连接重放",使得加密的密钥不同

  2. 连接关闭

    在类型字段中指出该记录是否用于终止该SSL会话

网络层安全性:IPsec和虚拟专用网

IPsec: IP安全协议,为任意两个网络层实体之间的IP数据报提供了安全,很多机构使用IPsec创建了运行在公共因特网上的虚拟专用网(VPN)

如果两台主机要跨越公共因特网进行通信,则流量在进入因特网之前要进行加密(IPv4数据报 ---> IPsec数据报,类似IPv4数据报,但载荷中包含一个IPsec首部)

AH协议和ESP协议

IPsec中两个主要协议:

  • **鉴别首部(AH)**协议,提供鉴别和数据完整性服务,不提供机密性服务
  • 封装安全性载荷(ESP)协议,提供源鉴别、数据完整性和机密服务,使用广泛(机密性十分重要)

当主机要向一个目的实体发送安全数据报时,通常使用以上两种之一协议

安全关联

源实体向目的实体发送IPsec数据报之前,源和目的实体需要创建一个网络层的逻辑连接,称之为安全关联(SA)

一个SA是一个单工逻辑连接,从源到目的地是单向的,如果要互相发送数据报,则需要建立两个SA

路由器维护以下SA状态信息

  • 32bit标识符 --- 安全参数索引SPI
  • 初始接口和目的接口
  • 加密类型
  • 加密密钥
  • 完整性检查的类型
  • 鉴别密钥

一个IPsec实体经常维护而许多SA的状态信息,在安全关联数据库(SAD)中存储所有的SA状态信息

IPsec数据报

两种不同的分组形式,隧道模式和运输模式,此处针对隧道模式

IPv4如何转换到IPsec?

image-20211011103701653
image-20211011103701653
  • IPv4数据报后附上一个ESP尾部字段
  • 使用算法和SA规定的密钥加密该结果
  • 在这个加密量的前面附加一个ESP首部的字段
  • 使用算法和由SA规定的密钥生成一个覆盖整个包的鉴别MAC
  • 该MAC附加到包后面形成载荷
  • 生成一个具有所有经典IPv4首部字段的全新IP首部,该首部附加到载荷之前

整个新IPv4的首部字段中的协议号不被设置为TCP、UDP等,而是设置为50,指示这是一个使用ESP协议的IPsec数据报。最外部的IP地址被设置值为位于隧道两个端点的源和目的地路由器接口。

该路由器将IPsec报发送进公共因特网之后,在到达目的路由器前通过许多路由器,每个都将处理该数据报,将其对待成普通的数据报一样

ESP尾部三个字段:填充、填充长度、下一个首部
填充:因为加密的报文必须为块长度的整数倍
下一个首部:指示包含在载荷数据的字段中的类型(UDP、TCP...)

ESP首部:SPI字段和序号字段。
SPI字段:指示接受实体该数据报属于哪个SA
接受实体能够用该SPI索引其SAD来确定适当的鉴别/解密算法和密钥
序号:防御重放攻击

IPsec实体还维护一个安全策略库(SPD),指示哪些类型的数据报将被IPsec处理,并且对这些将被处理的数据报应当使用哪个SA

如何保护?

  • 中间人看不到正确的源和目的地址、端口号、不知道是否携带TCP、UDP、ICMP数据,更看不到应用层的数据载荷,机密性比SSL广泛
  • 无法反转bit来干扰 --- MAC
  • 无法假冒 ---- MAC
  • 无法发起重放攻击 ---- 序号

IKE:IPsec中的密钥管理

VPN具有少量端点时,能够在端点的SAD中人工键入SA信息。但大型的VPN则要求部署自动的机制来生成SA--------因特网密钥交换(IKE)

与SSL相似,每个IPsec实体有一个整数,包括了该实体的公开密钥。IKE协议让两个实体交换整数、协商鉴别和加密算法,并安全地交换用于在IPsec SA中生成会话密钥的密钥材料。

使无线LAN安全

有线等效保密(WEP)

P.422

IEEE 802.11i

2004年批准,新标准,提供了强得多的加密形式、可扩展的鉴别机制集合和密钥的分发机制。

在AP之上增加了一台鉴别服务器,对应多台AP面积中在一台服务器中做出有关鉴别和接入的决定

运行阶段:

  • 发现。AP通告它的存在以及它能够向无线客户节点提供的鉴别和加密形式,客户则请求它希望的特定的鉴别和加密形式。
  • 相互鉴别和主密钥的生成。AP中转报文,发给鉴别服务器。可扩展鉴别协议(EAP)定义了客户和鉴别服务器之间交互时简单的请求/响应模式中使用的端到端的报文格式。
    • 使用EAPoL(EAP or LAN)封装,通过802.11无线链路发送
    • 报文在AP拆封,并使用RADIUS协议重新封装,经过UDP/IP传输到鉴别服务器
  • 生成成对主密钥。MK是仅为客户和鉴别服务器所致的共享密钥,双方用MK生成一个次密钥,即成对主密钥。鉴别服务器向AP发送该PMK,则客户和AP限制有一个共享的密钥,可以相互鉴别
  • 临时密钥TK。借助PMK,无线客户和AP能够生成附加用于通信的密钥。TK用于执行经过无线链路向任意远程主机发送数据的链路级加密

防火墙和入侵检测系统

通信流量进入/离开网络时要执行安全检查,做记录、丢弃、转发,

防火墙

硬件+软件结合体,允许一些数据分组通过而另一部分不允许。

目标:

  • 从内到外和从外到内的流量都要通过防火墙。
  • 仅被授权的流量允许通过
  • 防火墙自身免于渗透

分类:

  1. 传统的分组过滤器

    一个机构通常有一个内部网络与ISP相连接的网关路由器,分组过滤便在这里。维护一张访问控制列表

    过滤策略:

    • IP源和目的地址
    • IP数据报中的协议类型
    • 协议端口
    • TCP标志比特:SYN ACK
    • ICMP报文类型
    • 对数据报离开和进入网络的不同规则
    • 对不同路由器接口的不同规则
  2. 状态分组过滤器

    实际地跟踪TCP连接,做出过滤决定。解决的问题:防止内鬼。

    用一张连接表来跟踪所有进行的TCP连接,防火墙能够通过观察三次握手来观察一条新连接的开始。当它看到一个FIN分组时,便观察到该链接结束。

    维护连接表和访问控制列表(列表中有是否核对连接字段用于二次确认)

    书中的例子较为具体(P.427)

  3. 应用程序网关

    在应用层层面限制 ---- 应用程序网关 是一个应用程序特定的服务器,所有应用程序数据必须通过它。多个应用程序网关可以在同一台主机上运行,但每一个网关有自己进程的单独服务器

入侵检测系统

分组过滤器检测IP、TCP、ICMP首部字段,为了检测更多的攻击,需要执行深度分组检查,查看首部以外的部分,即查看分组携带的实际应用数据。

入侵检测系统(IDS):观察到潜在恶意流量能产生告警的设备
入侵防止系统(IPS):滤除可以流量的设备

IDS + IPS = IDS系统

检测多种攻击:洪泛、网络映射、端口扫描、DoS带宽洪泛、蠕虫》。。

一个机构可能在机构网络中部署一个或者多个IDS传感器,共同工作,向一个中心IDS处理器发送有关可疑流量活动的信息。

IDS不仅要做深度分组检查,还要将每个过往的分组与许多的“特征”做比较 ----> 极大处理量,所有IDS传感器多向下游广泛布置,便于维护、减少负载。

IDS系统分类:

  • 基于特征的系统
    • 维护一个范围广泛的攻击特征数据库,每个特征是与一个入侵活动相关联的规则集。(一个特征可能指示有关单个分组的特性列表(端口号、IP地址、分组中特定的比特串...))特征通常由熟练的网络安全工程师生成并添加到数据库中
    • 嗅探每个通过它的分组,并与特征库中的特征进行比较
    • 对新攻击无判断力,可能产生虚假告警
  • 基于异常的系统
    • 观察正常运行的流量,产生流量概况文件。寻找统计上不寻常的分组刘(例如ICMP分组不寻常的百分比)。
    • 不依赖以前的攻击知识
    • 不太常用

TCP/IP协议

概述

一些问题

因特网和万维网的区别?

  • 因特网是互联网的一种,由上千万台设备组成,是一个广域网
  • 万维网是因特网提供的一种服务(WWW){因特网还提供FTP文件传输、网络电话、电子邮件之类的服务......},是无数个站点和网页的集合,由浏览器浏览超文本页面组成。http和https就属于万维网的一种

OSI参考模型和TCP/IP体系结构

  • OSI 国际标准化组织(ISO)制定的计算机或通信系统间互联的标准体系
  • image-20211012161741783
    image-20211012161741783
  • TCP/IP体系结构image-20211012161936904

Internet地址结构

概述

IPv6的缩写规范 P.22

基本的IP地址结构

分类寻址

image-20211012162858017
image-20211012162858017

单播地址:用于识别连接Internet或者某些专用的内联网的计算机网络接口

子网寻址

主机部分划分为 子网号 + 主机号

子网掩码

由一台主机或者路由器使用的分配为,,确定如何从一台主机对应IP地址中获得网络和子网信息。

可变长度的子网掩码VLSM

可用于分割一个网络号,使得每个子网支持不同数量的主机。

如果没有VLSM,一个子网掩码只能提供给一个网络,限制了要求的子网数上的主机数,使得可以划分多层子网(但IP数还是那么多)

广播地址

构建方式:

子网广播:将子网掩码去翻,并与子网中任意主机地址进行按位或 | 运算(11111111...)

定向广播问题很大,目前仍在禁用(通过定向广播可以将数据报发送给子网中的所有主机)

本地网络广播(有限广播):255.255.255.255,不会被路由器转发,但子网广播和连接在同一网络中的计算机的本地网络广播将工作。(???不懂)

IPv6没有任何广播地址,仅使用组播地址

IPv6地址和接口标识符

IPv6通过特殊前缀表示一个地址范围。

  • 节点本地(用于统一计算机中通信)
  • 链路本地(同一网络链路或IPv6前缀中的节点)
  • 全球性(Internet范围)

链路本地IPv6地址和一些全球性IPv6地址使用接口标识符(IID,直接由一个网络接口的相关链路层MAC地址形成)作为一个单播IPv6地址的分配基础

OUI:组织唯一标识符

EUI:扩展唯一标识符

MAC地址如何被映射成一个IPv6地址?

CIDR和聚合

面临问题:

  • 多半B类地址已被分配 ------------清除IP地址分类权限并且提高层次化分配的IP地址的聚合能力
  • 32位IPv4地址不足以应对Internet在21世纪初的规模 --------IPv6
  • 全球路由表条数增加,随着越来越多的路由条目出现,路由性能将受到影响 ------------清除IP地址分类权限并且提高层次化分配的IP地址的聚合能力

前缀

帮助缓解IPv4的压力,分类寻址方案使用一个类似VLSM的方案 --- CIDR(无类别域间路由),提供了一种方便的分配连续地址范围的方式,包含多于255台少于65536台主机。

  • 未经过预定义的任何地址防范未可以作为一个类的一部分,但需要CIDR掩码(对全球性路由系统可见)
  • 核心因特网路由器必须能解释和处理掩码(网络前缀)

聚合

取消分类结构的IP地址,能分配各种尺寸的IP地址块,但不能帮助减少路由条目数

如何减少路由条目数?

随机寻址 和 拓扑敏感(位置相关)寻址

路由聚合:将相邻的多个IP前缀合并成一个短前缀,可以覆盖更多地址空间

CIDR和VLSM的区别

  • CIDR将几个标准网络和成一个大的网络
  • VLSM把一个标准网络分成几个小型网络(子网的子网的子网...)

!!!考研此处有相关题目!!!

特殊用途地址

image-20211012172618252
image-20211012172618252

IPv4-IPv6地址转换

image-20211012172927758
image-20211012172927758

前缀可以是众所周知的前缀,也可以是组织为转换器分配的唯一前缀。64-71位为0,以保持[RFC4291]指定标识符的兼容性。后缀的位被保留并设置为0

组播地址

IPv4 v6都支持组播地址,一个IP组播地址(也称为组或组地址)标识一组主机接口。一个组可以跨越整个因特网