计算机网络--自顶向下方法学习笔记

第一章 计算机网络和因特网

  • 协议:定义了两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作。

  • 分组:将源报文划分为较小的数据块

  • 存储转发传输:交换机能够开始向输出链路传输该分组的第一个比特之前,必须接受到整个分组。[传输时延]

  • 所以,通过N条速率均为R比特/秒的链路组成的路径(在源和目的地之间有N-1台路由器),从源到目的地发送一个L比特分组,传输时延为NL/R

  • 排队时延:如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。分组还要承受输出缓存的排队时延。由于缓存空间的大小是有限的,一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了,在此情况下,将出现分组丢失(丢包),到达的分组或已经排队的分组之一将被丢弃。

  • 分组交换:共用一条连接

  • 电路交换:独享一条固定连接

  • 节点总时延 = 节点处理时延+排队时延+传输时延+传播时延

    • 节点处理时延:检查分组首部和决定该分组导向何处;比特级别差错检测。
    • 传输时延:路由器推出分组的时间,它是分组长度和链路传输速率的函数,与两路由器之间的距离无关。L(bit)/R(bps)
    • 传播时延:是一个比特从一台路由器传播到另一台路由器所需要的时间,它是两台路由器之间距离的函数,而以分组长度和链路传输速率无关.L(m)/v(m/s)
  • 流量强度:La/R

    • L :每个分组的比特 bit/pkt
    • a: 每秒到达的分组数 pkt/s
    • R:路由器推送分组的速率bit/s
    • 如果流量强度大于1,则比特到达队列的平均速度超过从该队列传输出去的速率,在这种情况下,如果队列无限长,队列会无限增加,排队时延无限增大 。设计系统时流量强度不能大于1.
  • traceroute软件跟踪包时延

  • 性能度量:

    • 时延
    • 丢包:排队溢出
    • 吞吐量:链路上最小的传输率决定,一般为接入网。
  • 对于大而复杂且需要不断更新的系统,改变服务的实现而不影响该系统其它组件是分层的另一个重要优点

  • 5层因特网协议栈:

    • 应用层:【报文】
    • 运输层:【报文段】在程序端点之间运输应用层报文
    • 网络层:【数据报】把数据报从一台主机移动到另一台主机。通过源和目的地之间的一系列路由器路由数据报
    • 链路层:【帧】在一个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点;在下一个节点,链路层将数据报上传给网络层
    • 物理层:物理层将帧中的一个个比特移动到下一个节点
  • 路由器和链路交换机都是分组交换机,链路层交换机实现了第一层和第二层,路由器实现了第一层和第三层。这意味着路由器能够实现IP协议,而链路层交换机则不能。尽管链路层交换机不能识别IP地址,但他们能识别第二层地址,如以太网地址。

  • 病毒:一种需要某种形式的用户交互来感染用户设备的而以软件。

  • 蠕虫:一种无须任何明显用户交互就能进入设备的恶意软件

  • Dos攻击:

    • 弱点攻击:向一台目标主机上运行的易受攻击的应用程序或操作系统发送制作精细的报文。造成服务器停止或崩溃
    • 带宽洪泛:攻击者向目标主机发送大量的分组,分组数量之多使得目标的接入链路变得拥塞,使得合法的分组无法到达服务器。
    • 连接洪泛:攻击者向目标主机创建大量半开或全开的TCP连接
  • 记录每个流经的分组副本的被动接收机被称为分组嗅探器。防御它的办法与密码学有关。

  • 将具有虚假源地址的分组注入因特网的能力被称为IP哄骗(IP spoofing)。

  • 互联网向其应用提供面向连接服务(TCP)和无连接服务(UDP)2 种服务。每一个互联网应用采取其中的一种 。

    • 面相连接服务的原理特征是:
      1. 在都没有发送应用数据之前,2个端系统先进行“握手”。
      2. 提供可靠的数据传送。也就是说,连接的一方将所有应用数据有序且无差错的传送到连接的另一方。超时重传和确认
      3. 提供流量控制。也就是,确保连接的任何一方都不会过快的发送过量的分组而淹没另一方。滑动窗口
      4. 提供拥塞控制。即管理应用发送进网络的数据总量,帮助防止互联网进入迟滞状态。 ECN反馈 慢启动
    • 无连接服务的原理特征:
      1. 没有握手
      2. 没有可靠数据传送的保证
      3. 没有流控制或者拥塞控制
  • HTTP主要是一个拉协议

  • SMTP主要是一个推协议,即发送邮件服务器把文件推向接收邮件服务器。

  • SMTP要求每个报文采用7比特ASCII码格式

第二章 应用层

  • TCP服务包括面向连接服务和可靠数据传输服务。

  • 可靠数据传输服务:通信进程能够依靠TCP、无差错、按适当顺序交付所有发送的数据。

  • SMTP用来将邮件从发送方的邮件服务器传输到接收方的邮件服务器;SMTP也用来从发送方的用户代理传送到发送方邮件服务器。

  • POP3用来将邮件从接收方的邮件服务器传送到接收方的用户代理。

  • IMAP把每个报文和一个文件夹相关联。接收邮件

  • HTTP:可以从代理发送邮件到发送端服务器,也可以从接收邮件服务器下载邮件,但是发送端邮件服务器到接收端邮件服务器还是采用SMTP。

  • DNS提供的服务:

    • 主机名和IP地址转换
    • 主机别名
    • 邮件服务器别名
    • 负载均衡
  • DNS采用分布式层次数据库:没有一台DNS服务器拥有因特网上所有主机的映射。相反,这些映射分布在所有的DNS服务器上。

  • DNS服务器类型:

    • 根DNS服务器:有400多个根名字服务器遍及全世界。由13个不同的组织管理。
    • 顶级域DNS服务器:对于每一个顶级域(如com、org、net、edu和gov)和所有国家的顶级域(如uk、fr、ca和jp),都有TLD服务器(或服务器集群)。
    • 权威DNS服务器:在因特网上具有公共可访问主机(如web服务器和邮件服务器)的每个组织机构必须提供可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个组织机构的权威服务器收藏了这些DNS记录。
    • 本地DNS服务器:严格来说不属于上述DNS服务器层次结构。它可能位于居民所使用的一个ISP上。
  • DNS缓存:为了改善时延性并减少在因特网上到处传输的DNS报文数量,DNS广泛采用了缓存技术。

  • HTTP流,视频存储多个不同比特率的版本,按用户网络好坏访问

  • P2P文件分发

  • CDN:任何CND部署,其核心是集群选择策略,即动态将客户定向到CDN中的某个服务器集群或数据中心的机制。

第三章 运输层

  • 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信。 【网络层提供了两个主机之间的逻辑通信】

  • 运输层协议是在端系统中而不是在路由器中实现的。

  • 运输层报文段(segment)

  • 运输层将来自于应用程序的报文移动到网络边缘(即网络层)。

  • 中间路由器即不处理也不识别运输层加在应用层报文的任何信息。

  • 运输协议能够提供的服务常常受制于底层网络层协议的服务模型。如果网络层协议无法为主机之间发送的运输层报文段提供时延或带宽保证的话,运输层协议也就无法为进程之间发送的应用程序报文提供时延和带宽保证。但是,即使网络层协议是不可靠的,也就是说网络层协议会使分组丢失、篡改和冗余,运输协议也能为应用程序提供可靠的数据传输服务。网络层不能保证运输层报文段的机密性,运输协议也能使用加密来确保应用程序报文不被入侵者读取。

  • 用户数据报协议:UDP,为调用它的应用程序提供一种不可靠无连接的服务。

  • 传输控制协议:TCP,为调用它的应用程序提供一种可靠、面向连接的服务。

  • IP的服务模型是尽力而为交付服务。它不确保报文段的交付,不保证报文段的按序交付,不保证报文段的数据完整性。

  • 将主机间交互扩展到进程间交互被称为运输层的多路复用与多路分解。

    • 多路分解:将运输层报文段中的数据交付到正确的套接字的工作称为多路分解。【下往上】
    • 多路复用:在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息(这将在以后用于分解)从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用。【上往下】
  • UDP和TCP还可以通过其报文段首部中包括差错检查字段而提供完整性检查。进程到进程的数据交付和差错检查是两种最低限度的运输层服务,也是UDP所能提供的仅有的两种服务。

  • TCP提供可靠数据传输:通过使用流量控制、序号、确认和定时器,TCP确保正确地、按序地将数据从发送进程交付给接收进程。这样,TCP就将两个端系统间的不可靠IP服务转换成了一种进程间的可靠数据传输服务。

  • 一个UDP套接字是由一个二元组全面标识的,该二元组包含一个目的IP地址和一个目的端口号。因此,如果两个UDP报文段有不同的源IP地址和/或源端口号,但具有相同的目的IP地址和目的端口号,那么这两个报文段将通过相同的目的套接字被定向到相同的目的进程。

  • TCP套接字是由四元组(源IP、源端口、目的IP、目的端口)来标识的。两个具有不同源IP地址或源端口号的到达TCP报文段将被定向到两个不同的套接字,除非TCP报文段携带了初始创建连接的请求【accept前】。

  • UDP从部分应用进程得到数据,附加上用于多路复用/分解服务的源和目的端口号字段,以及两个其他的小字段,然后将形成的报文段交给网络层。在使用UDP时,在发送报文段之前,发送方和接收方的运输层实体之间没有握手。正因为此,UDP被称为无连接的。

  • UDP优点:

    • 关于发送什么数据以及何时发送的应用层控制更为精细。采用UDP时,只要应用进程将数据传递给UDP,UDP就会将此数据打包进UDP报文段并立即将其传输给网络层。
    • 无需连接建立。
    • 无连接状态。TCP需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数以及序号与确认号的参数。
    • 分组首部开销小。每个TCP报文段都有20字节的首部开销,而UDP仅有8字节的开销
  • DNS运行在UDP之上,从而避免了TCP的连接创建时延。

  • TCP的拥塞控制会导致如英特网电话、电话视频会议之类的应用性能变得很差。

  • UDP检验和(checksum):提供了差错检测功能。 UDP的检验和,对它的差错恢复无能为力,只是丢弃受损的报文段或者将受损的报文段交给应用程序并给出警告。

  • 计算机网络--自顶向下方法学习笔记_第1张图片

  • 消息重传:回退N步和选择重传

  • 可靠数据传输机制及其用途的总结

    • 检验和:用于检测在一个传输分组中的比特错误
    • 定时器:用于超时/重传一个分组,可能因为该分组(或其ACK)在信道中丢失了。由于当一个分组延时但未丢失(过早超时),或当一个分组已被接受方收到但从接收方到发送方的ACK丢失时,可能产生超时事件,所以接收方会收到一个分组的多个冗余副本。
    • 序号:用于为从发送方流向接收方的数据分组按顺序编号。所接收分组的序号间的空隙可使接收方检测出丢失的分组。具有相同序号的分组可使接收方检测出一个分组的冗余副本。
    • 确认:接收方用于告诉发送方一个分组或一组分组已被正确地接收到了。确认报文通常携带者被确认的分组或多个分组的序号。确认可以是逐个的或累积的,这取决于协议。
    • 否定确认:接收方用于告诉发送方某个分组未被正确地接收。否定确认报文通常携带着未被正确接收的分组序号
    • 窗口、流水线:发送方也许被限制仅发送那些序号落在一个指定范围内的分组。通过允许一次发送多个分组但未被确认,发送方的利用率可在停等操作模式的基础上得到增加。我们很快将会看到,窗口长度可根据接收方接收和缓存报文的能力、网络中的拥塞程度或两者情况来设置。
  • 计算机网络--自顶向下方法学习笔记_第2张图片

  • 标记字段:

    • PSH
    • RST:当TCP向一个服务器没有启动服务的端口发送SYN包,则返回一个特殊的报文段,标志位为RST。UDP则返回一个特殊的ICMP包。
    • SYN
    • FIN
    • ACK
  • TCP差错控制

    • 累计确认
    • 捎带:确认被捎带在服务器与客户端的数据报文中
    • 超时重传:时间为采样的RTT+4倍的采样RTT的变化值。当超时发生时,下一次超时加倍。超时触发重传存在的问题之一是超时周期可能相对较长。
    • 快速重传机制:收到对一个报文的3个冗余ACK就可作为对后面报文段的一个隐式ACK,从而在超时之前触发对该报文段的重传。
  • 流量控制:是一个速度匹配服务,即发送方的发送速率与接收方应用程序的读取速率相匹配。TCP通过让发送方维护一个称为接收窗口(receive window)的变量来提供流量控制。

    • 当接收方的接收窗口为0时,发送方继续发送一个字节数据的报文段。 【UDP并不提供流量控制,报文段由于缓存溢出可能在接收方丢失】
  • 拥塞控制:TCP发送方因为IP网络的拥塞而被遏制,

    • 拥塞网络的代价:
      • 当分组的到达速率接近链路容量时,分组经历巨大的排队时延。
      • 发送方必须执行重传以补偿因为缓存溢出而丢弃(丢失)的分组。
      • 发送方在遇到大时延时所进行的不必要重传会引起路由器利用其链路带宽来转发不必要的分组副本。
      • 当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组而使用的传输容量最终被浪费了。
    • TCP使用端到端拥塞控制。TCP所采用的方法是让每一个发送方根据所感知到的网络拥塞程度(如分组、丢失与时延)来限制其能向连接发送流量的速率。【默认采用】
    • 网络辅助的拥塞控制:一种方式是直接采用阻塞分组的形式告知我阻塞了;另一种更通用的方式是,路由器标记或更新从发送方流向接收方的分组中的某个字段来指示拥塞的产生,一旦收到一个标记的分组后,接收方就会向发送方通知该网络阻塞提示。TCP不能使用网络辅助的拥塞控制,因为IP层不向端系统提供显示的网络拥塞反馈。
    • 对于TCP的扩展方案【RFC 3168】,明确拥塞通告ECN。路由器使用一种ECN比特在IP层设置指示该路由器正在历经拥塞。发送给目的主机,再由目的主机设置TCP ACK报文段中的ECE比特,接收方收到ECE比特,减半发送窗口,TCP发送方在发送给接收方的报文中设置CWR(拥塞窗口缩减)比特。
    • 一个丢失的报文段表意味着拥塞,因此当丢失报文段时应当降低TCP发送方的速率。一个确认报文段指示该网络正在向接收方交付发送方的报文段,因此,当对先前未确认报文段的确认到达时,能够增加发送方的速率。
    • 发送方的速率大概是拥塞窗口cwnd/RTT字节/秒。通过调节cwnd的值,发送方因此能调整它向发送方发送数据的速率。
    • TCP拥塞控制算法:
      • 慢启动:开始设置cwnd为一个MSS,假设MSS=500Byte,RTT=200ms,则速率为MSS/RTT。接下来是2个4个MSS的指数增长。当遇到拥塞,则减半
      • 拥塞避免:线性一个一个MSS加宽cwnd
      • 快速恢复:当检测到三个冗余的ACK,TCP执行快速重传,并进入快速恢复状态。
  • SYN洪泛攻击:当服务器接到一个SYN时,会初始化连接变量和缓存,并发送SYN ACK包。攻击者发送大量的SYN段,而不完成第三次握手。

    • 现在的解决方案:SYN cookie,当服务器接收到一个SYN报文段时,采用一个复杂的hash函数【SYN报文段的源和目的IP地址与端口以及仅有该服务器知道的秘密数生成hash值】生成一个初始化TCP序号,此时不初始化连接和变量,当服务器接到ACK报文段时,采用HASH计算出cookie值,此值加一是和SYNACK的ACK的值比较,相同则建立全开的连接;如果没有回复ACK报文段,则不会产生危害,因为服务器没有分配任何资源。
  • TCP连接的组成包括:一台主机上的缓存、变量和与进程连接的套接字,以及另一台主机上的缓存、变量和与进程连接的套接字。

  • TCP的可靠数据传输服务确保一个进程从其接收缓存中读取的数据流是无损坏、无间隙、非冗余和按序的数据流;即该字节流与连接的另一方端系统发送出的字节流是完全相同。

第四章 网络层 数据平面 [每台路由器的功能]

  • 数据平面:决定到达路由器输入链路之一的数据报(即网络层的分组)如何转发到该路由器的输出链路之一。

  • 控制平面:控制数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式。

  • 数据转发:

    • 基于IP转发:转发基于数据报的目的地。
    • 通用的转发:使用数据报首部中的几个不同值执行转发和其他功能。匹配加动作转发表。
      • 匹配:各层分组首部字段匹配
      • 动作:转发、丢弃和修改字段
  • 转发:将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。转发发生的时间尺度很短(通常为几纳秒),因此通常由硬件来实现。

  • 路由选择:确定分组从源到目的地所采用的端到端路径的网络范围处理过程。路由选择发生的时间尺度长得多(通常为几秒),因此通常用软件来实现。

  • 因特网的网络层提供单一的服务,称为尽力而为服务(best-effort service)。使用尽力而为服务,传送的分组既不能保证以它们发送的顺序被接收,也不能保证它们最终交付;既不能保证端到端时延,也不能保证有最小带宽。

  • 路由器结构

    • 输入端口:查找转发表决定路由器的输出端口,到达的分组通过路由器的交换结构转发到输出端口。阻塞、排队、调度。
    • 最长前缀匹配:在转发表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组。
    • 排队:阻塞的分组必须要在输入端口处排队,并等待稍后被及时调度以通过交换结构。
    • 检查分组的版本号、校验和以及寿命字段,并且重写后两个字段。
    • 必须更新用于网络管理的计数器(如接收到的IP数据报的数目)
  • 交换结构:将路由器的输入端口连接到它的输出端口

    • 经内存交换:在CPU的直接控制下完成。分组到达输入端口,中断通知路由选择处理器。分组从输入端口复制到处理器内存中。路由选择器则从首部中提取目的地址,在转发表中找到适当的输出端口,并将该分组复制到输出端口的缓存中。
    • 经总线交换:输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。总线上一次只能有一个分组,其他分组必须等待。
    • 经互联网络交换:网格
  • 输出端口:存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组

  • 输出排队:输出缓存满时,可以删除一个或多个排队分组为新来的分组腾出地方。在某些情况下,在缓存满之前便丢弃一个分组(或在其首部加上标记)的做法是有利的,这可以向发送方提供一个拥塞信号。

  • 路由选择处理器:执行控制平面方法

  • 分组调度:

    • 先进先出FIFO
    • 优先权排队priority queuing
    • 循环和加权公平排队
  • 分组交换机:一台通用分组交换设备,它根据分组首部字段中的值,从输入链路接口到输出链路接口转移分组。

    • 基于链路层首部的分组交换机叫做链路层交换机。
    • 基于网络数据报中首部字段值做出转发决定的交换机叫做路由器
  • IPv4:计算机网络--自顶向下方法学习笔记_第3张图片

    • 版本
    • 首部长度 :一般为20字节,最长为15*4字节
    • 服务类型 :区分不同类型的数据报
    • 数据报总长度:【首部加数据】16bit,理论上IP长度为65535。然而,数据报很少超过1500字节的,该长度使得IP数据报能容纳最大长度以太网帧的载荷字段。
    • 标识、标志、偏移量:与IP分片有关。【IPv6不允许在路由器上对分组分片。】
    • 寿命:TTL:确保数据报不会再网络中循环。每当一台路由器处理数据报时,该字段的值减一。若TTL字段减为0,则该数据报必须丢弃。
    • 协议:该字段通常仅当一个数据报到达最终目的地才会有用。该字段值指示了IP数据报的数据部分应交给那个特定的运输层协议。值6表示TCP,17表示UDP。类似于运输层报文段中端口号字段所起的作用。
    • 协议号是将网络层与运输层绑定在一起的粘合剂,而端口号是将运输层和应用层绑定在一起的粘合剂。链路层帧也有一个特殊字段用于将链路层与网络层绑定到一起。
    • 首部校验和:用于帮助路由器检测收到的IP数据报中的比特错误。每个路由器上必须计算校验和并再次存放回原处,因为TTL字段以及可能选项字段会变。为什么TCP/IP在运输层和网络层都执行差错检测?
      • 首先,注意到IP层只对IP首部计算校验和,而TCP/UDP校验和是对整个TCP/UDP报文段进行的。
      • 其次,TCP/UDP与IP不一定都必须属于同一个协议栈。原则上,TCP能够运行在不同的协议上(如ATM),
      • 而IP能够携带不一定要传递给TCP/UDP的数据。
    • 选项:IPv6已去掉
    • 数据(有效载荷):大多数情况下,IP数据报中的数据字段包含要交付给目的地的运输层报文段(TCP或UDP)。也可以承载其他类型的数据,如ICMP报文。
  • IP要求每台主机和路由器接口拥有自己的IP地址。因此,从技术上讲,一个IP地址与一个接口相关联,而不是与包括该接口的主机或路由器相关联。

    • 为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点。这些隔离的网络中的每一个都叫做一个子网。
  • 网络地址转换NAT:重写ip和端口

  • IPv6【40字节定长】计算机网络--自顶向下方法学习笔记_第4张图片

    • 版本 4比特
    • 流量类型 8比特
    • 流标签 20比特
    • 有效载荷长度 16比特:给出了IPv6数据报中跟在定长的40个字节数据报首部后面的字节数量。
    • 下一个首部。该字段标识数据报的内容(数据字段)需要交付给那个协议(如TCP或UDP)。该字段使用与IPv4首部中协议字段相同的值。
  • IPv6不存在的IPv4字段。

    • IPv6不允许中间路由器分片/重新组装。这种操作只能在源和目的地执行。如果路由器收到的IPv6数据报因太大而不能转发到出链路上,则路由器只需丢掉该报文,并向发送方发回一个“分组太大”的ICMP差错报文。
    • IPv6无首部校验和:因为因特网层中的运输层(如TCP和UDP)和数据链路层(如以太网)协议执行了检验操作,IP设计者大概觉得在网络层中具有该项功能实属多余,所以去除。
    • 选项:选项字段不再是标准IP首部的一部分了。但它没有消失,而是可能出现在IPv6首部中由“下一个首部“指出的位置上。这就是说,就像TCP或UDP协议首部能够是IP分组中“下一个首部”一样,选项字段也能是“下一个首部”。删除选项字段使得IP首部成为定长的40字节。

第五章 网络层:控制平面

  • 路由器 转发表计算、维护和安装维护方法:

    • 每路由器控制:路由器运行一种路由选择算法,每台路由器有一个路由器选择组件,用于与其他路由器通信,以计算转发表的值。
    • 逻辑集中式控制:采用一个完全分开的(通常是远程的)控制器与本地控制代理交互分发转发表。
  • 路由选择算法,其目的是从发送方到接收方的过程确定一条通过路由器网络的好的路径(等价于路由)。 路由选择算法分类:

    • 按集中式还是分散式来划分:
      • 集中式路由选择算法:用完整的、全局性的网络知识计算出从源到目的地之间的最低开销路径。也就是说,该算法以所有节点之间的连通性即所有链路的开销为输入。
      • 分散式路由选择算法:路由器以迭代、分布式的方式计算出最低开销路径。没有节点拥有关于所有网络链路开销的完整信息。相反,每个节点仅有与其直接相连链路的开销知识即开始工作。然后通过迭代计算过程以及与相邻节点的信息交换,一个节点逐渐计算出到达某目的节点或一组目的节点的最低开销路径。
    • 按静态还是动态来划分:
      • 静态路由选择算法:路由随时间变换缓慢,通常是人工进行调整
      • 动态路由选择算法:随着网络流量负载或拓扑发生变化而改变路由选择路径。
    • 按负载敏感还是负载迟钝进行划分:
      • 负载敏感算法:链路开销会动态地变化以反映出底层链路的当前拥塞水平。
      • 负载迟钝算法:当前的因特网默认路由选择算法,因为某条链路的开销不明确地反映其当前(或最近)的拥塞水平。
  • 因特网中自治系统内部的路由选择OSPF。OSPF是一种链路状态协议,它使用洪泛链路状态信息和Dijkstra最低开销路径算法。

  • ISP路由选择:BGP。BGP是一种分布式和异步的协议。

  • ICMP:因特网控制报文协议。典型用途:差错报告。

第六章 链路层和局域网

  • 链路层提供的服务:

    • 成帧:在每个网络层数据报经链路传送之前,几乎所有的链路层协议都要将其用链路层帧封装起来。
    • 链路接入:媒体访问控制(MAC)协议规定了帧在链路上传输的规则。点对点或多路访问
    • 可靠交付:当链路层提供可靠交付服务时,它保证无差错地经链路层移动每个网络层数据报。
    • 差错检测和纠正:
  • MAC地址:并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。因此,具有多个网络接口的主机和路由器将具有与之相关联的多个链路层地址,就像它具有与之相关联的多个IP地址一样。

  • 地址解析协议ARP:网络层到链路层地址转化

    • DNS为在Internet中任何地方的主机解析主机名,而ARP只为在同一个子网上的主机和路由器解析IP地址。
    • 一个ARP分组封装在链路层帧中,因而在体系结构上位于链路层之上。然而,一个ARP分组具有包含链路层地址的字段,因而可认为是链路层协议,但它也包含网络层地址,因而也可认为是为网络层协议。所以,最好把ARP看成是跨越链路层和网络层边界两边的协议。
    • 发送数据报到子网。ARP表查询目的IP的MAC地址,无则发送ARP广播分组查询目的地址,接收到ARP报文的适配器检查自己的IP和ARP分组的目的IP,相同则回复,发送主机接收分组更新ARP表,发送IP数据报,该数据报封装在链路层帧里。
    • 发送数据报到子网之外。数据报封帧发送到路由器,路由器接收到,解帧传递给网络层,网络层根据路由转发表转发到对应的接口,封帧(源MAC地址为转发到的接口的MAC地址)传递到下一个路由器或主机。
  • 以太网:是目前最流行的有线局域网技术。

    • 以太网帧:前同步码(8字节):前同步码字段前7个字节(10101010)用以“唤醒“接收适配器,并且将它们的时钟和接收方的时钟同步。第八个字节(10101011)最后两个比特(第一次出现两个连续的1)警告适配器,“重要的内容”要来了。
    • 所有以太网技术都向网络层提供无连接服务。发送前不连接,直接发。
    • 所有以太网技术都向网络层提供不可靠服务。当适配器B接收到来自适配器A的帧,执行CRC校验,校验失败,不发送否定确认帧,直接丢弃;校验成功,不发送确认帧,数据传递给网络层。
  • 如果由于丢弃以太网帧而存在间隙,主机B上的应用也会发现这个间隙吗?

    • 使用UDP,会看见此间隙。使用TCP,则主机B中的TCP不会确认包含在丢失帧中的数据,从而引起主机A的TCP重传。注意到当TCP重传数据时,数据最终将回到曾经丢弃它的以太网适配器。因此,从这种意义上来说,以太网的确重传了数据,尽管以太网并不知道它是正在传输一个具有全新数据的数据报,还是一个包含已经被传输过至少一次的数据的数据报。
  • 链路层交换机:交换机的过滤和转发借助于交换机表,过滤是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。转发是决定一个帧应该被导向那个接口,并把该帧移动到那些接口的交换机功能。

    • 到达端口x的目的地MAC为DD-DD-DD-DD-DD-DD帧:
      • 此帧不在交换表中,交换机广播帧到除x的所有端口
      • 在交换表中此帧和x端口关联,交换机通过丢弃该帧执行过滤功能即可。
      • 表中有一个表项将DD-DD-DD-DD-DD-DD与接口y!=x联系起来,该帧需要被转发到与接口y相连的局域网网段。通过输出缓存完成转发功能。
  • 交换机:自学习,无需配置。

    • 消除碰撞
    • 链路隔离
    • 安全
  • 交换机是即插即用的;交换机还能够具有相对高的分组过滤和转发速率。

  • 路由器提供了更健壮的流量隔离方式和对广播风暴的控制,并在网路主机之间使用更“智能”路由。

  • MPLS多标签协议交换:一个MPLS使能的路由器常被称为标签交换路由器,因为它通过在其转发表中查找MPLS标签,然后立即将数据报传递给适当的输出端口来转发MPLS帧。因此,MPLS使能的路由器不需要提取目的IP地址和在转发表中执行最长前缀匹配的查找。

  • P326 web页面请求www.google.com历程

    • 1 DHCP获取本机IP,设置本地路由网关IP
    • 2 DNS 成帧,需要网关MAC,发起ARP,获取网关MAC,发送DNS请求,获取google的IP
    • 3 TCP三次握手,HTTP请求

第七章 无线网络和移动网络

  • 有线链路和无线链路间的许多重要区别:

    • 递减的信号强度。电磁波在穿过物体(如无线电信号穿过墙壁)时强度将减弱。即使在自由空间中,信号仍将扩散,这使得信号强度随着发送方和接收方距离的增加而减弱(路劲损耗path loss)
    • 来自其他源的干扰:在同一个频段发送信号的电波源将相互干扰。
    • 多径传播:当电磁波的一部分受物体和地面反射,在发送方和接收方之间走了不同长度的路径,则会出现多径传播。这使得接收方收到的信号变得模糊。位于发送方和接收方之间的移动物体可导致多径传播随时间而改变。
    • 上述讨论表明,无线链路中比特差错将比有线链路更为常见。因此,无线链路协议不仅采用有效的CRC错误检测码,还采用链路层ARQ协议来重传受损的帧。
  • 对于给定的调制方案,SNR越高,BER越低。由于发送方通过增加它的传输功率就能够增加SNR,因此发送方能够通过增加它的传输功率来降低接收到差错帧的概率。到达一定的阈值,增加无益。缺点,发送方必须消耗更多的能量。

    • 信噪比SNR:收到的信号和噪声强度的相对测量
    • 比特差错率BER:接收方收到的有错传输比特的概率
    • 对于给定的SNR,具有较高比特传输率的调制技术(无论差错与否)将具有较高的BER。
    • 物理层调制技术的动态选择能用于适配对信道条件的调制技术。
  • 码分多址CDMA:划分编码空间,并且给每个节点分配一段专有的代码空间

  • 移动IP标准由三部分组成:

    • 代理发现。移动IP定义了一个归属代理或数据代理用来移动节点通告其服务的协议,以及移动节点请求一个外部代理或归属代理的服务所使用的协议。

    • 向归属代理注册。移动IP定义了移动节点和/或外部代理向一个移动节点的归属代理注册或注销COA所使用的协议。

    • 数据报的间接路由选择。该标准也定义了数据报被一个归属代理转发给移动节点的方式,包括转发数据报使用的规则、处理差错情况的规则和几种不同的封装形式。

第八章 计算机网络中的安全

  • 安全通信:

    • 机密性:仅有发送方和希望的接收方能够理解传输报文的内容。因为窃听者可以截获报文,这必须要求报文在一定程度上进行加密encrypted。
    • 报文完整性。确保通信的内容在传输过程中未被改变–或者意外篡改或者意外改动。
    • 端点鉴别。发送方和接收方都应该能证实通信过程所涉及的另一方,以确信通信的另一方确实是其所声称的身份。
    • 运行安全性。
  • 攻击:

    • 唯密文攻击:入侵者只能截取到密文,不了解明文报文的内容。
    • 已知明文攻击:当入侵者知道(明文,密文)的一些匹配
    • 选择明文攻击:入侵者能够选择某一明文报文并得到该明文报文对应的密文形式。
  • 对称密钥系统:密钥是相同的并且是秘密的。

  • 公开密钥系统:使用一对密钥:一个密钥为全世界所知【公钥】,另一个密钥只有自己知道【私钥】。

  • 报文完整性,也称为报文鉴别。

  • 密码散列函数:MD5,SHA-1

  • 鉴别密钥,类似于salt,交流双方Alice和Bob共享密码s字符串【即鉴别密钥】,

  • 报文鉴别码:发送方发送m+H(m+s),接收方接到数据,提取消息m,用约定好的s,计算H(m+s)是否和传过来的相等。H(m+s)为报文鉴别码MAC

  • HMAC:通过散列函数运行数据和鉴别密钥两次。

  • 数字签名:私钥加密报文,公钥解密

  • 数字签名的一个重要应用是公钥认证,即证实一个公钥属于某个特定的实体,

  • 将公钥与特定实体绑定通常是认证中心(CA)完成的,CA的职责就是识别和发行证书合法化。

    • CA证实一个个体的真实身份。
    • 一旦CA验证了某个实体的身份,这个CA会生成一个将其身份和实体的公钥绑定起来的证书(certificate)。这个证书包含这个公钥和公钥所有者全局唯一的身份标识信息。
    • CA用它的私钥签名持有者的公钥及信息。客户端用CA的公钥来验证证书的合法性。
  • Alice给Bob发送一个报文,用Alice的私钥签名消息的hash值,连接消息,采用随机秘钥Ks加密之前的串,用Bob的公钥加密Ks,和Ks加密后的串连接一起发送。

  • SSL握手过程 https://www.cnblogs.com/happyhippy/archive/2007/05/14/746476.html

    • 1.客户发送它支持的密码算法的列表,连同一个客户的不重数。
    • 2.从该列表中,服务器选择一种对称算法(例如AES),一种公钥算法(例如具有特定秘钥长度的RSA)和一种MAC算法。它把它的选择以及证书和一个服务器不重数返回给客户。
    • 3.客户验证该证书,提取服务器的公钥,生成一个前主秘钥(Pre-Master Secret,PMS),用服务器的公钥加密该PMS,并将加密的PMS发送给服务器。
    • 4.使用相同的秘钥导出函数(就像SSL标准定义的那样),客户和服务器独立地从PMS和不重数中计算出主秘钥(Master Secret,MS)。然后该MS被切片以生成两个密码和两个MAC秘钥。此外,当选择的对称密码应用于CBC(例如3DES或AES),则两个初始化向量(Initialization Vector,IV)也从该MS获得,这两个IV分别用于该连接的两端。自此以后,客户和服务器之间发送的所有报文均被加密和鉴别(使用MAC)
    • 5.客户发送所有握手报文的一个MAC
    • 6.服务器发送所有报文的一个MAC
  • 第5与第6步用以防止握手本身遭受篡改。设想一个攻击者想要控制客户端与服务器所使用的算法。客户端提供多种算法的情况相当常见,某些强度弱而某些强度强,以便能够与仅支持弱强度算法的服务器进行通信。攻击者可以删除客户端在第1步所提供的所有高强度算法,于是就迫使服务器选择一种弱强度的算法。第5步与第6步的MAC交换就能阻止这种攻击,因为客户端的MAC是根据原始消息计算得出的,而服务器的MAC是根据攻击者修改过的消息计算得出的,这样经过检查就会发现不匹配。由于客户端与服务器所提供的随机数为密钥产生过程的输入,所以握手不会受到重放攻击的影响。这些消息是首个在新的加密算法与密钥下加密的消息。

  • 第1步对应一条单一的握手消息,ClientHello.

  • 第2步对应一系列SSL握手消息,服务器发送的第一条消息为ServerHello,其中包含了它所选择的算法,接着再在Certificate消息中发送其证书。最后,服务器发送ServerHelloDone消息以表示这一握手阶段的完成。需要ServerHelloDone的原因是一些更为复杂的握手变种还要在Certifacate之后发送其他一些消息。当客户端接收到ServerHelloDone消息时,它就知道不会再有其他类似的消息过来了,于是就可以继续它这一方的握手。

  • 第3步对应ClientKeyExchange消息。

  • 第5与第6步对应Finished消息。该消息是第一条使用刚刚磋商过的算法加以保护的消息。为了防止握手过程遭到篡改,该消息的内容是前一阶段所有握手消息的MAC值。然而,由于Finished消息是以磋商好的算法加以保护的,所以也要与新磋商的MAC密钥—起计算消息本身的MAc值。

  • ssl1

  • 计算机网络--自顶向下方法学习笔记_第5张图片

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

  • IP安全协议称为IPsec,它为网络层提供了安全性。

  • 虚拟专用网VPN:使用IPsec创建运行在公共因特网之上

  • 在 tunnel 和 transport 模式下的数据封装形式如下图所示,图中 data 为原 IP 报文。

  • 隧道模式下,外层ip为隧道两端ip,内层ip和data为加密数据

  • 计算机网络--自顶向下方法学习笔记_第6张图片

  • 入侵检测系统IDS:观察到潜在恶意流量能产生告警的设备。

  • 入侵防止系统IPS:清除可疑流量的设备。

  • 开源IDS:Snort

你可能感兴趣的:(读书笔记,网络,网络,网络协议)