计算机网络(三十一):总结

第一章、计算机网络概念

  1. 从具体构成角度,网络的具体构成包括构建网络的硬件部分,包括端系统、通信链路和分组交换机,以及实现运行的软件部分,端系统通过因特网服务提供商ISP接入因特网
  2. 从发送端系统到接收端系统,一个分组所经历的一些列通信链路和分组交换机称为通过该网络的路径,而计算机网络=端系统+通信链路+转发设备(分组交换机),即通过交换网络互连主机
  3. 从服务的角度,网络是通信的基础设施,将信息从一个端系统传递到另一个端系统。网络可以为不同的网络的应用提供不同的网络服务,注意,这些网络应用程序不运行在网络核心的分组交换机,而是请求的端系统
  4. 与因特网相连的端系统提供了一个应用程序编程接口(API),规定了运行在一个端系统上的软件请求因特网基础设施向运行在另一个端系统上的特定目的地软件交付数据的方式。本质上上是一套发送软件必须遵守的规则集合,使用网络和从网络接收消息的接口,是网络向应用开放的接口。
  5. 协议的概念:网络协议就是计算机网络中数据交换必须遵守的规则,好比交通系统。报文的发送和接收,以及当这些报文发送和接收时所采取的一些列约定俗成的动作,就是网络协议的核心
  6. 网络分为网络边缘(主机,网络应用)、接入网络(网络传输介质,即有线无线通信链路)、网络核心(互连的路由器和交换机)
  7. CS客户机-服务器模式:客户机只能发送请求,服务器只负责提供服务,客户机与客户机不能直接通信
  8. 对等P2P模式:两者既可以提供服务又可以请求服务。微信、qq等。
  9. 接入网络:实际上就是将端系统连接到其边缘路由器的物理链路,边缘路由器是端系统到任何其他远程端系统的路径上的第一台路由器
  10. DSL:类似于拨号调制解调器,是一种新型调制解调器技术,通过限制用户和ISP调制解调器之间的距离,可以以高得多的速率实现传输和接收数据
  11. HFC:与DSL类似,都需要特殊的调制解调器,即电缆调制解调器,是一种频分多路复用(不同频带<载波>上传输不同频道)
  12. FTTH:光纤接入,一类是有源的PON(接入到小区网络,再与运营商对接);一类是无源的PAN(直接与运营商对接)
  13. 网络核心就是互连的路由器网络,关键功能是路由(确定分组从源到目的传输路径)和转发(将分组从路由器的输入端口交换至正确的输出端口)
  14. 传输方式主要有电路交换(传统电话)和分组交换(计算机网络)。路由器有一个路由转发表(本地转发表),规定了去目的地址需要走哪一条链路。简单地讲,就是两家餐厅,一家需要预定,一家不需要预定但是不能保证可以进行安排
  15. 电路交换可以划分为三个阶段:呼叫(电路)建立阶段,建立连接;通信;电路拆除,释放连接。注意链路与电路的区别,一条链路可以有很多条电路
  16. 频分多路复用:链路的频谱由跨越链路创建的所有连接所共享,特别是,该链路在链接期间为每条连接(电路)专用一个频段,改频段的宽度被称为带宽
  17. 时分多路复用:时间被划分为固定区间的帧,并且每帧又被划分为固定数量的时隙。一条电路的传输速率等于一个时隙中的比特数乘以该帧的速率
  18. 传播延时:第一个字节从始点到终点所用的延时
  19. 传输延时:把数据放到链路所用的时间(格式转换等)
  20. 分组交换资源利用率高,但不一定能够保证服务质量。分组以链路的最大传输速率在通信链路上进行传输。分组交换的性能取决于当前用户数。
  21. 如果分组到达交换机的速率超过了交换机跨越输出链路转发分组的速率,就会造成拥塞。
  22. 每个路由器具有一个转发表,用于将目的地址(或者目的地址的一部分)映射到输出链路。当分组到达一台路由器时,该路由器检查目的地址,并用这个目的地址搜索转发表,以找到合适的输出链路。并将该分组导向输出链路。因特网具有一些特殊的选路协议,用于自动的设置转发表。如可以决定从每台路由器到每个目的地的最短路径,并使用最短路径进行配置。
  23. 吞吐量即每秒能够传输的数据量
  24. 分组交换公式为:所有分组下放到第一个路由器的时间+最后一个分组从第一个路由器到达目的地址所需要的时间
  25. 处理时延:当交换设备接收到设备时要检查数据是否出错,还要决定数据会被转发到那条线路上,毫秒微秒级别
  26. 排队时延:每个输出上都有个缓冲的部分(队列)
  27. 传输时延:将一个比特推送到链路上所花费的时间叫传输时延,传输时延和链路带宽有关,也叫发送速率,毫秒微妙级别
  28. 传播时延:将比特从线路的一端传到另一端所需要花费的时间,与链路长度、速率有关,毫秒级别
  29. 最大吞吐量:一台路由器能够转发分组的最大速率
  30. 协议分层:以分层的方式组织协议以及实现这些协议的网络硬件和软件。每个协议属于一层。
  31. 协议栈:特定网络系统的一系列协议,或者说各层的所有协议。因特网的协议栈由5个层次组成:物理层、链路层、网络层、运输层、应用层。
  32. ISO提出计算机网络应组织为大约七层,称为开放系统互联模型OSI模型,即应用层、表示层、会话层、运输层、网络层、链路层、物理层。
  33. 对于一个信息,首先发送端的主机将信息经过五层(全部的因特网协议)进行一个封装;然后到达交换机,交换机向上解析两层,获得链路层层次的目的地址,再重新封装两层的协议(这个时候协议中的目的地址可能已经发生了改变),然后进行传输;然后路由器向上解析三层,获得网络层层次的目的地址,再重新封装三层的协议(这个时候协议中的目的地址可能已经发生了改变),然后进行传输;到达接收端的主机后,主机向上解析五层,获得被封装的信息。

第二章、应用层

  1. 应用层只在端上存在,因此写的时候只需在端上构建
  2. 应用层的功能是为两端系统中的应用程序交换报文。支持用户通过用户代理(如浏览器)或网络接口使用网络(服务)。实现应用于应用之间的规范,这个应用不在同一个端系统上。只需要规范传输到应用的信息。即宏观上的两个端系统上的应用的传输
  3. 第一个网络应用程序是email
  4. CS结构:即客户机/服务器体系结构。有一个总是打开的主机称为服务器,他服务于来自许多其他称为客户机的主机请求,客户机相互之间不直接通信。服务器有固定的、周知的地址,称为IP地址,且总是处于打开状态,多个服务器共同对外提供服务(即主机群集,有时候称为服务器场),构成一个抽象的虚拟服务器,以应对客户端的规模性。
  5. P2P体系结构:即对等体系结构。对总是打开的基础设施服务器有最小的依赖。任意简短连接的主机(对等方)直接相互通信。
  6. 混合结构。即时信息系统:QQ、微信。进行用户定位时用CS系统,当开始聊天时变为P2P系统
  7. 套接字是同一台主机内应用层与运输层之间的接口。由于套接字是在网络上建立网络应用程序的可编程接口,因此也将套接字称为应用程序和网络之间的应用程序编程接口。
  8. 套接字可以理解为简单地read和write函数,名称不一定是read。
  9. 每一个进程一旦创建以后都要与一个套接字进行绑定,套接字类型与协议有关
  10. 传输层辅助将数据发送到对方传输层。服务器通过套接字从本地缓存中将数据取回去。
  11. 当进程想向位于另一台主机的另一个进程发送报文时,他把报文推出门(套接字),该发送进程假定门到另一侧之间有运输的基础设施,该设施将把报文传送到目的进程的门口,一旦抵达,则通过报文接收进程的门(套接字)传递。
  12. 应用程序服务要求:可靠数据传输(丢包)、吞吐量()带宽、定时(时延)和安全性(安全)
  13. TCP提供了可靠地端到端数据传输服务。目前的因特网运输层没有提供吞吐量和定时保证两种服务。但是设计时尽最大可能弥补了这两种服务。
  14. 进程寻址:为了识别接收进程,需要定义两种信息:①该主机的名称或地址;②用来指定目的主机上接收进程的标识。主机用IP地址来进行标志,IP地址是用来唯一标识主机的32比特数。目的地端口号标识了主机上的接收进程
  15. 应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文
  16. web应用层协议是超文本传输协议HTTP,是web的核心。
  17. 对象:简单来说就是文件,这些文件可通过一个URL地址寻址。
  18. web页面(文档):是由对象组成的,多数web页面含有一个基本HTML文件以及几个引用对象
  19. 基本HTML文件:在基本HTML文件中通过对象的URL地址对对象进行引用。
  20. URL地址:由两部分组成:存放对象的服务主机名和对象的路径名。例如URL地址http://www.somesc.edu/sd/pic.gif中的www.somesc.edu就是主机名(域名),而/sd/pic.gif就是路径名。
  21. web浏览器:实现了HTTP的客户机端
  22. web服务器:存储web对象,对象由URL寻址,实现了HTTP的服务器端
  23. 分层结构最大的优点,即HTTP协议不用担心数据丢失,也不用担心TCP是如何从网络的数据丢失和乱序故障中恢复的
  24. 一个HTTP服务器并不保存关于客户机的任何信息,所以我们说HTTP是一个无状态协议。
  25. 目的端口号为80(80指向的就是一个web应用);
  26. 非持久连接:每个请求/响应对是经一个单独的TCP连接发送。
  27. 往返时间RTT:一个小分组从客户机到服务器再返回客户机所需要的时间。包括分组传播时延、分组在中间路由器和交换机上的排队时延和分组处理时延。
  28. 三次握手:浏览器在浏览器和web服务器之间发起一个TCP连接,会有三次:
    ①、客户机向服务器发送一个小TCP报文段
    ②、服务器用一个小TCP报文段做出确认和响应
    ③、客户机向服务器返回确认
  29. 总的响应时间=两个RTT+服务器传输HTML文件的时间。
  30. 持久连接:所有的请求及相应的响应经相同的TCP连接发送。如果一个连接经过一定时间间隔(一个可配置的超时间隔)仍未被使用,服务器就关闭该连接。
  31. HTTP报文有两种:请求报文和响应报文
  32. GET产生1个TCP数据报,header与data一起发送(获取data);POST会产生2个TCP数据包,先发送header再发送data(提交data)。
  33. 请求环境(即首部行形容的环境):请求时间+运行版本+请求对象最后的更新时间+内容长度+内容类型。
  34. 如果用户在服务器进行了注册,即提供了他的全名、邮箱地址、邮政地址和信号用卡账号,则会在数据库中记录了这些信息,并将这些信息与识别码关联(以及过去访问的所有页面)。
  35. cookie可以用于标识客户。用户首次访问站点时,可能需要提供一个用户标识(可能是名字)。在后继访问中浏览器向服务器传递一个cookie首部,提供服务器识别该用户。因此,cookie可以在无状态的HTTP上建立一个用户会话层。
  36. web缓存器也叫代理服务器,能够代表初始web服务器来满足HTTP请求的网络实体。有自己的磁盘存储空间,可以保留最近请求过的对象的拷贝。
  37. 通过代理服务器可以不访问原始的服务器,而是从代理服务器上访问。如果代理服务器上没有这个页面,那么它会代替客户机去访问原始服务器。当代理服务器得到这个页面后,首先将这个页面缓存。
  38. HTTP和FTP都是文件传输协议,都运行在TCP上。但是FTP使用两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。
  39. FTP协议使用一个分离的控制连接,故也称FTP的控制信息时带外传送的。同理可以说HTTP是带内发送控制信息的。
  40. FTP的数据连接精确地传送一个文件并关闭连接,如果在同一个会话期间想要传送多个文件,需要打开多个数据连接,即控制连接贯穿了整个用户会话期间,而针对会话中的每一个文件传输都要建立一个新的数据连接。
  41. FTP服务器必须在整个会话期间保留用户的状态信息,必须追中用户在远程目录树上的当前位置,而HTTP是无状态的,不必对任何用户状态进行追踪。
  42. 注意,只有指令和指令的回答是在控制连接上传颂的,所有的文件,包括文件列表都是在数据连接上传送的。
  43. internet电子邮件系统通常包括:用户代理、邮件服务器、简单邮件传输协议SMTP。
  44. 邮件服务器向客户代理发送时不能使用推协议,因为客户不是随时都在线,所以SMTP只能用于发送,如果要接收需要使用POP3协议。
  45. SMTP一般不使用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球的两端也是如此,即TCP连接是两个邮件服务器之间的直接相连。
  46. 如果接收方的邮件服务器没有开机,该报文会保留在发送方的邮件服务器上(报文发送队列中)。
  47. SMTP是用的是持久连接,如果发送邮件服务器有几个报文发往同一个接收邮件服务器,就可以通过同一个TCP连接发送所有的报文。握手中有HELO、MAL FROM、RCPT TO三条命令。对每一个报文,客户机都用一个mall from:crepes.fr开始,以CRLF。CRLF结束。用一个独立的句点表示该邮件的结束,并且当且仅当所有邮件发送完后才发送QUIT
  48. DNS是一种能够进行主机名到IP地址转换的目录服务
  49. DNS通常是运行在BIND软件的UNIX机器,DNS协议运行在UDP之上,使用53号端口。
  50. 在请求链中,当一个DNS服务器接收到一个DNS回答时,DNS服务器能将回答中的信息缓存在本地存储器。这个缓存包含在回答中的任何信息,包括主机名/地址对。因为主机和主机名与IP地址间的映射不是永久地,所以DNS服务器在一段时间后(通常为两天)将丢弃缓存的信息。
  51. 集中式索引(集中目录分发):提供了一个集中式索引,由一台大型服务器来提供索引服务。索引服务器从每个活动的对等方那里收集IP地址和可供共享的文件名称,从而建立一个集中式的动态索引,将每个文件拷贝映射到一个IP地址集合。实际上是一种P2P和CS混合体系结构,文件分发是P2P的,搜索是CS的。
  52. 查询洪泛(完全分布式方法):建立在Gnutella协议基础上的。在查询洪泛中,索引全面地分布在对等方的区域中,每个对等方索引可供共享的文件而不索引其他文件
  53. 网络应用程序有两类,一类是网络应用程序,由RFC所定义的标准协议的实现。当客户机程序或服务器程序实现了由某RFC定义的协议时,应该使用与协议相关的端口号;另一类是专用的网络应用程序。客户机程序和服务器程序使用的应用层协议不必符合任何现有RFC,不能使用已经在RFC中定义的周知端口号,服务器程序与客户机程序的端口号必须相同。
  54. TCP服务器程序不能处于睡眠状态,且必须先于客户机程序运行;服务器程序必须有某种套接字来面对来自运行在任意机器上客户机程序发起的连接。
  55. 当TCP客户机创建他的套接字时,他指定服务器进程的地址,即服务器的IP地址和进程的端口号。
  56. TCP服务器将创建一个新的套接字,为某个特定的客户机程序服务,这个套接字与原套接字基本相同,只是目的地址确定,仅负责该目的地址的通信,通信结束,套接字被回收销毁。
  57. TCP连接是客户机套接字和服务器连接套接字之间的一个直接的虚拟管道,这个管道一直保持,直到某个进程将其关闭。客户机进程可以向他的套接字发送任意字节的数据,TCP保证服务器进程能够按发送的顺序接收到每个字节的数据。TCP因此在客户机进程和服务器进程之间提供了可靠字节流服务。
  58. 因为UDP没有管道,所以当发送数据的时候,发送进程需要为这批字节附上目的进程地址,并且,该过程对于每批由发送进程所发送的字节都必须重复做。
  59. UDP可以先运行客户机,再运行服务器,因为客户机进程没有试图和服务器建立起连接。

第三章、运输层

  1. 运输层协议为运行在不同主机牛的应用进程之间提供了逻辑通信功能。
  2. 运输层实现进程与进程之间的传输,这个进程不在同一个端系统上。只是规范传输到进程的信息。即宏观上的两个端系统上的应用所产生的进程之间的信息传输。运输层实际上就是将数据传输到相应的进程,并有一个将报文划分为分组(运输层分组称为报文段)的过程。类似于交通工具。
  3. 运输层协议只工作在端系统中 在端系统中,运输层协议将来自应用进程的报文移动到网络边缘(即网络层)
  4. 两种运输层协议分别是UDP (用户数据报协议) ,它为调用它的应用程序提供一种不可靠、无连接的服务。另一种是 TCP (传输控制协议) ,它为调用它的应用程序提供了一种可靠的、面向连接的服务。
  5. UDP TCP 最基本的责任是,将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。将主机间交付扩展到进程间交付被称为运输层的多路复用与多路分解。
  6. UDP TCP还可以通过在其报文段首部中包括差错检查字段而提供完整性检查。进程到进程的数据交付和差错检查是两种最低限度的运输层服务,也是UDP 所能提供的仅有的两种服务。
  7. 将运输层报文段中的数据交付到正确的套接字的工作称为多路分解。在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用。
  8. 运输层是怎样实现分解服务:在主机上的每个套接字能够分配一个端口号,当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。然后报文段中的数据通过套接字进入其所连接的进程。
  9. TCP套接字是由一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来标识的。这样,当TCP报文段从网络到达一台主机时,该主机使用全部4个值来将报文段定向(分解)到相应的套接字。特别与UDP不同的是,两个具有不同源IP地址或源端口号的到达TCP报文段将被定向到两个不同的套接字。
  10. 服务器主机可以支持很多并行的TCP套接字,每个套接字与一个进程相联系,并由其四元组来标识每个套接字。当一个TCP报文段到达主机时,所有4个字段(源IP地址,源端口,目的IP地址,目的端口)被用来将报文段定向(分解)到相应的套接字。
  11. 当一台主机中的DNS应用程序想要进行一次查询时,它构造了DNS查询报文并将其交给 UDP。无须执行任何与运行在目的端系统中的UDP实体之间的握手,主机端的UDP为此报文添加首部字段,然后将形成的报文段交给网络层。
  12. TCP的拥塞控制会导致如因特网电话、视频会议之类的实时应用性能变得很差。而UDP中缺乏拥塞控制能够导致UDP发送方和接收方之间的高丢包率。
  13. UDP检验和:由于0xFFFF+0xFFFF最大值也只能是0x1FFFE,所以不会出现无限循环的情况。之所以使用反码是为了解决不同操作系统大小端的计算情况,使用反码即便字节的顺序调换,其结果也仅是字节顺序同步调换。
  14. TCP在不可靠的(IP)端到端网络层之上实现的可靠数据传输协议。
  15. 可以让发送方负责检测和恢复丢包工作。假定发送方传输一个数据分组,该分组或接收方对该分组的ACK发生了丢失,在这两种情况下,发送方都收不到应当到来的接收方的响应。如果发送方愿意等待足够长的时间以便确定分组已丢失,则它只需重传该数据分组即可。
  16. 流水线可靠数据传输系协议:不使用停等方式运行,允许发送方发送多个分组而无需等待确认。因为许多从发送方向接收方输送的分组可以被看成是填充到一条流水线巾,故这种技术被称为流水线。
  17. 在回退N步协议中,允许发送方发送多个分组(当有多个分组可用时)而不需等待确认,但它也受限于在流水线中未确认的分组数不能超过某个最大允许数。
  18. 那些已被发送但还未被确认的分组的许可序号范围可以被看成是一个在序号范围内长度为N的窗口。随着协议的运行,该窗口在序号空间向前滑动。因此N常被称为窗口长度,GBN协议也常被称为滑动窗口协议。
  19. 选择重传:GBN 协议潜在地允许发送方用多个分组"填充流水线",因此避免了停等协议中所提到的信道利用率问题。选择重传(SR)协议通过让发送方仅重传那些它怀疑在接收方出错(即丢失或受损)的分组而避免了不必要的重传。
  20. 简单地讲,无论GBN和SR都是为了在不可靠的传输(网络层)的情况下,通过运输层协议的方式来实现一个可靠地传输。GBN传输协议就是流水线传输,但是只要有一个未成功或者出现了乱序,就将目前已经收到的分组(乱序部分)全部丢去,然后重新传输;而SR是为了提高效率,在一个未成功的时候,不会全部丢弃,而是先进行缓存,直到未成功的到达,并形成了有序的队列就进行向上传输,然后才向后移动窗口。
  21. TCP是面向连接的,因为在一个应用程可以开始向另一个应用进程发送数据之前,这两个进程必须先相互"握手",即它们必须相互发送某些预备报文段,以建立确保数据传输的参数。
  22. 三次握手:客户首先发送一个特殊的TCP报文段,服务器用另一个特殊的TCP报文段来响应,最后,客户再用第三个特殊报文段作为响应。前两个报文段不承载“有效载荷”,也就是不包含应用层数据;而第三个报文段可以承载有效载荷。
  23. TCP可从缓存中取出并放入报文段中的数据数量受限于最大报文段长度 MSS。MSS通常根据最初确定的由本地发送主机发送的最大链路层帧长度(即所谓的最大传输单元MTU)来设置。
  24. TCP 连接的组成包括:一台主机上的缓存、变量和与进程连接的套接字,以及另一台主机上的另一组缓存、变量和与进程连接的套接字。
  25. 简单地讲,TCP的双方都是可以通信的,发送方可以接受到接收方提示的需要哪一个字节(特指是字节,而不是哪一个报文段),而接收方也可以接收到发送方发送的数据。
  26. 定时器过期很可能是由网络拥塞引起的,即太多的分组到达源与目的地之间路径上的一台(或多台)路由器的队列中,造成分组丢失或长时间的排队时延。在拥塞的时候,如果源持续重传分组,会使拥塞更加严重。相反,TCP使用更文雅的方式,每个发送方的重传都是经过越来越长的时间间隔后进行的。
  27. 比期望序号大的失序报文段到达,检测出了间隔,即可能发生了报文段丢失,就会立刻发送冗余ACK,用来指示下一个期待字节的序号。如假如我要传送1.2.3.4,现在接收到了1.3,2可能发生了丢失,那么就发送对1的ACK信号,指示我想要2。
  28. 快速重传:简单地讲,就是在重复接收到3个某一个报文段的冗余ACK的时候,就认为他之后的报文段发生了丢失,不管有没有发生超时,立刻进行重传。
  29. 即使流量控制和拥塞控制采取的动作非常相似(对发送方的遏制),但是它们显然是针对完全不同的原因而采取的措施。
  30. 流量控制是因为网络太好,导致发送方发送太快,接收方的缓存空间不够而导致出错或者丢失的控制,是一个发送方与接收方的速度匹配问题,是在端上的控制。拥塞控制是因为网络不好,导致路由器发生了排队,导致丢包,是在网络核心上的控制。
  31. TCP必须使用端到端拥塞控制而不是使网络辅助的拥塞控制,因为IP层不向端系统提供显式的网络拥塞反馈。
  32. TCP发送方的行为类似于要求越来越多糖果的孩子,直到最后告知他/她"不行!",孩子后退一点,然后过一会儿再次开始提出请求。
  33. TCP拥塞控制算法有三个部分,即慢启动、拥塞避免、快速恢复。其中慢启动和拥塞避免是强制的,而快速恢复是可选的。
  34. 慢启动简单地讲,就是每当正常传输的时候,就在下次发送两倍的分组,直到发生了超时然后重新开始,或者达到了一个阈值。
  35. 拥塞避免:一旦进入拥塞避免状态,cwnd的值大约是上次遇到拥塞时的值的一半,而此时无法在通过对每一个RTT再将cwnd的值翻番,于是选择每个RTT只将cwnd的值增加一个MSS。即更加精确,更加靠近最大的窗口数。
  36. 快速恢复:如果出现超时事件,快速恢复在执行如同在慢启动和拥塞避免中相同的动作后,迁移到慢启动状态:当丢包事件出现时,cwnd 的值被设置为1MSS,并且ssthresh(即拥塞窗口阈值)的值设置为cwnd值的一半。
  37. 可以看出来,TCP的主要思路是通过“重启”的思路进行控制,通过一次一次的重启,来得到最接近于最大拥塞窗口的一个参数,而这个参数就代表了我们的流水线传输中可以在链路上可以传输的最大分组数目,然后在这个参数下进行传输
  38. TCP的拥塞控制是:首先通过慢启动得到比较接近最大拥塞窗口的数值(每个RTT内cwnd翻番,但最后只能取到阈值),然后每个RTT内cwnd线性(加性)增加1MSS,然后出现3个冗余ACK 事件时,cwnd 减半(乘性减)。
  39. Tahoe版本的TCP在每次出现封包丢失的时候都重新开始执行Slow-Start算法,这样使得网络的吞吐率并不高,即不管是冗余ACK造成的丢失还是超时造成的丢失,都会重新慢启动,将当前cwnd设为1。
  40. 但Reno版本出现冗余ACK的时候,并不是把当前cwnd设为1,而是设为出现封包丢失时的1/2+3(注意,一般的快速恢复是1/2,但Reno版本修改为了1/2+3)但阈值仍是1/2。所以Reno版本的TCP的平均吞吐率较Tahoe更高。

第四章、网络层

  1. 网络层实现主机与主机之间(不同网络)的传输,有路由器,选择路由器(路由路径和转发规则)。只要规范传输到主机的信息。即宏观上的两个端系统之间的信息传输。逻辑寻址:全局唯一逻辑地址,确保数据分组被送达目的主机,即IP地址。路由:路由器互联网络,负责路径选择
  2. 仅在网络层提供连接服务的计算机网络称为虚电路网络(虚拟了一条不存在的电路连接);仅在网络层提供无连接服务的计算机网络称为数据报网络(通过直接发送数据报文实现通信)
  3. 简单地讲,就是说每当建立一条虚电路时,会对虚电路上所需要经过的链路进行一次编号,然后在每个链路交界处的路由器中的转发表中,按照入VC和出VC的形式进行存储。即便是同一条链路,在不同的虚电路中的VC号是不同的。
  4. 简单地讲就是可以让同一条链路在两端的路由器中具有完全不同的vc号,比方说在R1中是出链路,出VC号为1,而在R2中是入链路,入VC号为任意一个数字,不一定非是1。
  5. 网络层还可以预留该虚电路路径上的资源(如带宽)。即确认发送方与接收方主机,确认路径(链路+路由器,通过最短路径算法确定),修改转发表。
  6. 对于虚电路网络,简单地讲,就是说运输层只需要调用网络层的服务,给定一个发送方和一个接收方,就可以搭建一条连接。而网络层需要在给定的发送方和接收方的基础上,计算出这条路径上所需要的链路和路由器,然后告知这些路由器,由此建立一条虚拟电路。
  7. 在数据报网络中,每当一个端系统要发送分组,它就为该分组加上目的端系统的地址,然后将分组推进网络中。无需建立任何虚电路,路由器不维护任何虚电路的状态信息。
  8. 在路由器的转发表中就没有必要有40亿表项(全部表项),因为针对一个路由器,其能够到达的目的地址是有限的,而且不同分支能够到达的目的地址可以有明显的相似性。
  9. 由于数据报网路不需要实时的建立连接,在创建实体网络的时候,其转发就相对固定,所以不需要经常修改转发表。
  10. 在虚电路网络中,通过路由器建立一条新的连接,或通过路由器拆除一条现有的连接,路由器中的转发表就被更新。对一台第一层主干路由器而言,这很容易以微秒的时间尺度进行更新。即由于每次建立连接都要新的链路连接,所以需要实时对转发表进行更新,表更新更频繁。
  11. 因为在数据报网络中的转发表能够在任何时刻修改,从一个端系统到另一个端系统发送一系列分组可能在通过网络时走不同的路径,并可能无序到达。即由于转发表的转换和分组并无太大关联,并不是同步的,所以可能一系列分组没有传输完,而转发表就发生了改变。
  12. 简单地讲,输入输出端口就是接口,交换结构是芯片,路由选择处理器是运行在芯片上的选择代码。
  13. 简单地讲,通过路由选择器建立路径,并产生转发表,然后在输入端口中根据转发表选择相对应的输出端口,在交换结构中根据产生的转发表进行硬件的搭建,依靠硬件可以在极短的时间内实现传输。
  14. 通过输入端口的查找功能(在转发表副本中查找)可以确定某分组的输出端口,此时该分组就能发送进入交换结构(交换结构负责连接输入端口和相对应的输出端口,将分组按照转发表指定的地址进行转发)
  15. 总的来说,输入端口有以下操作:
    ①、查找输出端口(转发表副本)
    ②、出现链路层和物理层处理
    ③、检查分组的版本号、检验和以及寿命字段,并重写检验和以及寿命字段
    ④、更新用于网络管理的计数器(如接收到的IP数据报的数目,避免攻击)
  16. 内存式交换结构:简单地讲,就是根据输入端口从转发表得到的输出端口号,直接写到对应输出端口的缓存中。
  17. 总线式交换结构:简单地讲就是加上一个标签(如输出端口号),然后向总线发送分组,此时所有输出端口都接收到,但只有与标签相匹配的输出端口才开放缓存进行存储。
  18. 纵横式交换结构:简单地讲,就是多条总线的交叉,虽然不再需要标签,但需要一个总线开关控制的过程。
  19. 输出端口:简单地讲,就是一个寄存器加一个输出线路。
  20. 当处理速度是输入速度*端口个数(输入=输出)的时候,最坏情况就是同一时间所有输入端口都接受到了一个分组,并且这个分组想要发送给同一个输出端口。此时只要能够在下一个输入端口的分组到来前,将这些分组给到相应的输出端口,就不会在输入端口发生排队
  21. 由于交换的速率超过了输出端口能够发送的速率,导致输出端口会发生排队,最终导致丢包。
  22. 个人理解,输出端口的排队基本上是不可避免的,所以问题就是如何处理排队问题和减轻排队问题。处理排队问题的方法要么是丢弃到达的分组,要么删除已经在队列中的分组。于是便有了主动队列管理算法,并且最出名的就是随机早期检测RED算法。就是有一个上下限,低于下限时可以直接加入队列,高于上限时丢弃到达的分组或者标记,当在上下限之间时,将会有一定概率标记或丢弃分组。这个概率随着队列长度的变化而变化
  23. 线路前部HOL阻塞:简单地讲,就是输入端口争夺输出端口,而交换结构的交换速率较低,导致在下一批分组到来前,当前输入端口的分组没有完全通过交换结构,有剩余,此时输入端口就会产生等待队列。
  24. 一个链路层帧能承载的最大数据量叫做最大传送单元MTU。因为每个据报封装在链路层帧中从一台路由器传输到下一台路由器,故链路层协议的MTU严格地限制着IP数据报的长度。
  25. 分片:简单地讲,就是把一个大的IP数据报切分为符合当前协议的MTU的数据报,并且数据报的标志除了最后一个为0,其余都是1。其中首部字节为20,其余的MTU-20字节均为数据字节。偏移量为字节数/8。
  26. 主机与链路一般只有一个接口,所以一个主机一般只有一个IP地址作为索引;而一台路由器与多个链路相连作为十字路口,所以每一个接口对应一个IP地址作为索引。
  27. IP地址中每一个字节可以代表一个分支,不同的分支构成了一颗四层的树,而每一个分支可以看做一个小的子网,一般是最左边最大,越往右越下层。子网中无需通过路由器就能够物理上互相到达。
  28. 当子网掩码为20的时候,外界只需要知道他的前20位,即他能转发到符合前20位的IP地址,而不需要关心后12位的具体内容,即不需要知道他能转发到的具体地址。
  29. 动态主机配置协议DHCP:简单地讲,就是定义了一个ip地址池,其前缀与子网掩码相同,后缀随机进行分配。每当一个主机进入时,自动给予一个IP地址;当一个主机离开时,回收该IP地址。可分配IP地址范围是:子网地址-广播地址。
  30. 简单地讲,就是首先客户机广播发送发现报文,企图发现服务器。在发现报文的传播范围内,所有的服务器产生回应,广播发送提供报文。在客户机接收到不同的提供报文后,选择最优并发送请求报文,基于参数,请求建立连接。然后服务器用ACK报文产生回应,证实已收到参数。
  31. 网络地址转换NAT:即把内部私有网络地址翻译成合法网络IP地址的技术。能够改变本地网络中的设备地址,而不必通知外部。本地网络中的设备不显式地可寻址、由外部所见 (增强安全性)。简单地讲,就是把一个家庭网络的对外IP进行了改变。从本质上讲,NAT使能路由器对外界隐藏了家庭网络的细节。
  32. 全局式路由选择算法:用完整的、全局性的网络知识计算出从源到目的地之间的最低费用路径。通常被称作链路状态LS算法。
  33. 分散式路由选择算法:以迭代、分布式的方式计算出最低费用路径。
  34. 静态路由选择算法中,随着时间的流逝,路由的变化是非常缓慢的,通常是人工干预进行调整(如人为手工编辑一台路由器的转发表)
  35. 动态路由选择算法能够当网络流量负载或拓扑发生变化时改变路由选择路径。一个动态算法可周期性地运行或直接响应拓扑或链路费用的变化而运行。
  36. 链路状态路由选择算法LS:网络拓扑和所有的链路开销都是已知的,是一种使用全局信息的、集中式的算法。实践中通过让每个节点向网络中所有其他节点广播链路状态分组来完成,其中每个链路状态分组包含它所连接的链路的标识和开销。
  37. 振荡:当两条路径上的费用仅在两条道路上的负载相等时才相等,则可能出现第一次LS算法,所有分组集中于其中一条路,第二次LS算法,所以分组集中于另一条路,第三次又回到第一条路,以此类推。
  38. 距离向量路由选择算法DV:一种迭代的、异步的和分布式的算法。当遇到路由选择环路的时候可能会产生无穷计数的问题
  39. 互联网按组织边界划分为多个自治系统。每个自治系统由运行相同路由协议和路由选择算法的路由器组成
  40. 在相同的 AS 中的路由器都全部运行同样的路由选择算法(如一种LS或DV算法),且拥有彼此的信息
  41. 简单地讲,RIP就是DV算法在因特网使用中的具体化。通过将每个子网之间的跳转次数作为费用,来计算费用向量,并得到RIP表指导路由选择。
  42. 简单地讲,OSPF是LS算法在因特网使用中的具体化。通过不断周期性的广播得到整张图的拓扑结构,然后根据dijkstra算法计算得到以路由器自身为根节点的到所有子网的最短路径。

第五章、链路层

  1. 链路层实现相邻节点(同一网络)之间的传输,未经过路由器。只要规范在同一个网络之间的信息。即宏观上每两个相邻节点(一条通信链路)之间的信息传输。物理寻址:在帧头中增加发送端和/或接收端的物理地址表示数据帧的发送端和/或接收端。有流量控制(避免淹没接收端)、差错控制(检测并重传损坏或丢失帧,并避免重复帧)、访问控制(在任意给定时刻决定哪个设备拥有链路控制使用权)
  2. 一个游客好比一个数据报,每个运输区段好比一条链路,每种运输方式好比一种链路层协议,而旅行社好比一个路由选择协议。
  3. 链路层提供的服务:即封装成帧、输入链路、链路传输、帧纠错四步
  4. 链路层在何处实现:尽管大部分链路层是在硬件中实现的,但部分链路层是在运行于主机 CPU 上的软件中实现的。链路层的软件组件实现了高层链路层功能,如组装链路层寻址信息和激活控制器硬件。在接收端,链路层软件响应控制器中断,处理差错条件和将数据报向上传递给网络层。所以,链路层是硬件和软件的结合体,即此处是协议栈中软件与硬件交接的地方
  5. 差错检测和纠正技术使接收方有时但并不总是检测出已经出现的比特差错。即使采用差错检测比特,也还是可能有未检出比特差错。即判定是否出错,以及一定程度上的对错误进行改正。
  6. 检错码:如果编码集的汉明距离(任意编码之间相差比特位的最小值)ds=r+1,则该差错编码可以检测r位的差错。例如,编码集{0000,0101,1010,1111}的汉明距离 ds=2,可以100%检测1比特差错。
    这里是0000与0101相差2,与1010相差2,与1111相差4,以此类推,得到最小的相差值为2,所以当这四个四比特段中出现1比特的差错,可以找出。
  7. 纠错码:如果编码集的汉明距离ds=2r+1,则该差错码可以纠正r位的差错。例如,编码集{000000,010101,101010,111111}的汉明距离 ds=3,可以纠正 1 比特差错,如 100010 纠正为 101010。
    这里是00000000与010101相差3,以此类推得到最小相差3,所以当这四个字节段中出现1比特的差错,可以纠正。
  8. 奇偶校验:简单地讲,如果字节中有奇数个1,则为1,否则为0(偶校验)
  9. 单比特奇偶校验的一种二维一般化方案:简单地讲,就是针对每一行每一列的奇偶校验
  10. CRC循环冗余检测
    计算机网络(三十一):总结_第1张图片
    以上图为例,给定的数据段D=101110,给定的G为1001,然后用G对D的每一位进行异或操作,直到没有余数。图中由于加入3比特后可以整除,所以r为3,得到的R=011。即r=G-1,是G的位数-1。
  11. 点对点链路:由链路一端的单个发送方和链路另一端的单个接收方组成。很多链路层协议都是为点对点链路涉及的,如点对点协议(PPP)和高级数据链路控制(HDLC)
  12. 广播链路:能够让多个发送和接收结点都连接到相同的、单一的、共享的广播信道上。这里使用的“广播”是因为当任何一个结点传输一个帧时,信道广播该帧,每个其他结点都收到一个副本。以太网和无线局域网是广播链路层技术的例子。
  13. 简单地讲,就是一个是两人交谈,一个是一人演讲,但这里是不同的物理链路,而不是不同的方式。
  14. 多路访问问题:如何协调多个发送和接收结点对一个共享广播信道的访问。简单地讲,就是如何把两人式的网络与广播式的网络连接起来。
  15. TDMA:“周期性”接入信道。每个站点在每个周期,占用固定长度的时隙(长度=分组传输时间)。
  16. FDMA:信道频谱划分为若干频带。每个站点分配一个固定的频带。无传输频带空闲。
  17. CDMA:对每个结点分配一种不同的编码,然后每个结点用它唯一的编码来对它发送的数据进行编码。
  18. 即时间分段(流水交通)、频率(信道)分段(多车道)和编码分段(限号)。
  19. 随机接入协议:信道不划分,允许冲突,为解决冲突采用冲突“恢复”机制。 即随便发送,当阻塞或冲突的时候,随机选择其中一个停下,再进行传输。
  20. 时隙 ALOHA: 简单地讲,就是每隔一定时间,尝试发送一个帧,如果没有碰撞,则传输下一个;如果有碰撞,则在后续的时隙中,首先判断是否重传(概率p),直到该帧被传输成功。
  21. ALOHA 协议:简单地讲,就是将判断是否重传放在了发送新帧的后面。
  22. 载波侦听多路访问协议CSMA:简单地讲,就是等待信道空闲的时候争夺信道资源。
  23. 具有碰撞检测的载披侦听多路访问 (CSMA/CD):简单地讲,就是不再时时刻刻监听信道资源,而是仅在想要发送帧的时候监听信道,当信道空闲的时候,争夺信道资源。
  24. CSMA/CD效率:假设T=LAN中两个结点间的最大传播延迟,t=最长帧传输延迟。效率=1/(1+5*T/t),当T接近于0或t趋近于无穷大时,效率趋近于1。
  25. 轮询协议:主结点轮流“邀请”从属结点发送数据,典型应用:“哑”从属设备。问题:轮询开销、等待延迟、单点故障
  26. 令牌传递协议:该协议中无主结点。控制令牌一次从一个结点传递到写一个结点,令牌指的是一个特殊帧。问题:令牌开销、等待延迟、单点故障。
  27. 即一个是主节点(请求节点)不断地依次询问发送方,一个是有一个令牌,令牌不断地在结点间传输。
  28. MAC地址:简单地讲,就是给路由器的每一个接口一个MAC地址,和IP地址很像,基本上一个IP地址对应于一个MAC地址?。
  29. 地址解析协议ARP:地址解析协议(ARP)的基本思想:在每一台主机中设置专用内存区域,称为ARP高速缓存(也称为ARP表)。存储该主机所在局域网中其他主机和路由器的IP地址与MAC地址的映射关系。
    地址解析协议(ARP)的基本步骤:
    • ARP查询分组:通过一个广播帧发送的
    • ARP响应分组:通过一个单播帧发送的
    • ARP是即插即用的:一个ARP表是自动建立的,不需要系统管理员来配置。
    即在每一台主机中都有一个本地局域网的ARP表,通过这个表在已知主机IP地址的情况下可以得到局域网内其他主机或路由器的MAC地址。
  30. 在报文中,IP地址是目的主机的IP地址,但MAC地址并不是,是下一个跳转路由器接口的MAC地址,而每到一个路由器,都会对MAC地址进行更新,直到最后一个路由器转接点时,将MAC地址更新为目的主机的MAC地址。所有的MAC地址都是通过ABP获得的。

你可能感兴趣的:(计算机网络)