计算机网络期末复习知识点

之前期末自己整理的知识点,分享一下O.o

计算机网络和因特网

1.1 因特网

主机,端系统,传输速率bps,路径(一个分组经过的链路和分组交换机)

通信链路:连接网络的线路—实体到实体的一条链路构成路径

分组交换机:路由器和链路层交换机;

边缘路由:负责将端系统接入网络的第一个路由器

因特网服务提供商ISP(InternetServiceProvider),传输控制协议TCP(TransmissionControlProtocol),网际协议IP(InternetProtocol)

互联网是什么?节点和边,通过网络互联设备连接起来 分布式应用以及为它提供通信服务的基础设施 分布式应用程序,套接字接口

1.2 网络边缘:主机、应用程序

客户(client),服务器(server), CS模式,P2P模式

1.3 网络核心:互联网端系统的分组交换机和通信链路构成的网状结构

电路交换:频分复用FDM,时分复用TDM(独享)

分组交换(将长报文划分为较小的数据块):虚电路网络,数据报网络

(电路交换会预留资源,分组交换不会)

存储转发传输(交换机开始向输出链路传输前必须先收到整个分组):d(端到端)=NL/R,N表示中间路径数

★分组交换与电路交换的对比:

提供了比电路交换更好的带宽共享 比电路交换更简单有效,实现成本更低

*分组交换:存储-转发传输:分组交换机先全部接收一组信息,存储,然后在发送端空闲时转发搬移到下一段链路上;

优点:不需要预先专门建设一条线路,无连接时延,传输时间较短,共享性

缺点:存在转发时延,网络通信量越大造成的时延越大,只能传输数字信号,分组交换可能出现失序、丢包的问题

*电路交换:以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道

优点:数据时延小,专线建立连接,按顺序发送,没有时序问题,既可以传送模拟信号,也可以传送数据信号,控制设备比较简单

缺点:电路交换平均连接建立时间对计算机通信来说较长,利用率低

*转发表:收到的信息中含由目的地信息,通过查询转发表获取应该转发到的目的链路转发出去,通过路由选择协议自动更新转发表;

基本内容:目的地址、子网掩码、下一跳地址、输出接口、路由类型、度量值(路由的优先级或成本,决定了当有多个路径可用时,选择哪条路径进行转发。)

工作原理:接收数据包,查看目的地址->查找转发表(最长前缀匹配)->确定下一跳地址和输出接口->转发数据包

1.4 分组交换的时延/丢包和吞吐量

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

处理时延:微秒或更低  排队时延:毫秒到微秒

传输时延:分组推向链路,L/R,分组长度/链路带宽,毫秒到微秒

传播时延:链路到被接收,d/s,物理链路长度/传播速度,毫秒量级

流量强度I=La/R,,所有分组由Lbit组成,R为传输速率,a为到达分组的平均速率

流量强度I不能大于1,I接近1时,平均排队时延趋向于无穷大

吞吐量,接收到的信息长度/时间 取决于瓶颈链路的传输速率

丢包:大概率由于缓存满,导致新接收的包被丢弃;

封装:上层协议的数据被下层附加信息打包的过程

有效载荷字段:除了附加的包头,即指包体内容

1.5 协议层次与服务模型

协议栈,5个层次,应用层(HTTP、SMTP、FTP、DNS等)(报文),运输层(TCP、UDP)(报文段),网络层(IP)(数据报),链路层(帧),物理层

服务   原语   服务访问点SAP

2 应用层     

SAP服务访问点 SDU服务数据单元 PDU协议数据单元

2.1 应用层协议原理

2.1.1 应用程序体系结构

客户-服务器体系结构,P2P体系结构(自扩展性)

2.1.2进程通信:进程作为通信主体,发起通信的作为客户端,等待连接的作为服务器,通过套接字这个软件接口从网络中收发信息

寻址:主机地址+进程端口号

2.1.3 可供应用程序使用的运输服务:可靠数据传输,吞吐量(带宽敏感应用<>弹性应用),定时,安全性

2.1.4 因特网提供的运输服务

TCP:面向连接的服务,可靠的数据传送服务 ,拥塞控制机制  UDP

安全套接字SSL(SecureSocketLayer)

2.2 Web和Http

2.2.1 HTTP 超文本传输协议(HyperTextTransferProtocol)

HTTP,建立在TCP上,默认端口80,定义了Web服务器返回/Web客户端请求 内容的方式,以及请求/响应报文的格式,它是一种无状态协议,每次收发都不记录请求者状态

2.2.2 非持续连接和持续连接

非持续连接:每个请求/相应是经过单独的TCP连接发送,每个TCP连接在服务器发送一个对象后关闭,该连接并不为其他的对象而持续下来。

持续连接:服务器在发送响应后保持该TCP连接打开,后续的请求和响应能够通过相同的TCP连接进行传送。

往返时间(RTT,RoundTripTime),总响应时间=2*RTT+传输HTML文件时间

2.2.3 HTTP报文格式

HTTP请求报文:

GET /somdir/page.html HTTP/1.1 #请求方法,URL和HTTP版本字段

Host: www.someschool.edu #请求主机对象

Connection: close  #使用非持续性连接

User-agent: Mozilla/5.0  #代理/版本(浏览器)

Accept-language: fr

方法包括:GET,POST,HEAD,PUT,DELETE

HTTP响应报文:

HTTP/1.1 200 OK   # HTTP版本、状态码、状态信息

Connection: close

Date: Tue, 18 Gug 2015 15:44:04 GMT 时间信息

Server: Apache/2.2.3 (CentOS) 服务器软件信息

Last-Modified: Tue, 18 Gug 2015 15:11:03 GMT 最后一次更新时间

Content-Length: 6821

Content-Type: text/html 返回内容的类型

(data data ......)

状态码包括200 OK  301 Moved Permanently   400 Bad Request

404 Not Found   505 HTTP Version Not Supported

*URL(统一资源定位符)格式:访问协议,用户名,口令字,主机名,路径名,端口

2.2.4 Cookie

HTTP是一个无状态协议,服务器不保存用户的信息。使用cookie可以让服务器标识一个客户,提供服务。cookie有以下4个组件:

响应报文中的一个cookie首部行

请求报文中的一个cookie首部行

用户端系统中保留一个cookie文件,由浏览器管理

位于Web站点的一个数据库,记录用户信息

2.2.5 Web缓存

Web缓存器(WebCache)也叫代理服务器(proxy server)

优先请求本地代理服务器,若得不到满足再请求目标服务器

能够代表初始Web服务器满足HTTP请求。Web缓存器可以在存储器空间中保留最近请求过的对象的副本。使用Web缓存器可以大大减少对客户请求的响应时间,还能够大大减少一个机构的接入链路到因特网的通信量。

Web缓存器通常由ISP购买和安装   Web缓存器既是服务器又是客户

Web缓存器带来的一个问题是存放在缓存器中的副本可能不是最新的,因此需要有方式去证实请求的对象是最新的。解决:使用条件GET方法,在首部行中添加"If-Modified-Since",这样只在指定日期后对象被修改过,才发送该对象。返回304NotModified表示未修改

2.2.* FTP  默认端口21  server主动向client的20号端口建立连接。

有状态协议

2.3 因特网中的电子邮件

默认端口 25  三个重要组成部分:用户代理,邮件服务器,简单邮件传输协议(SMTP,SimpleMailTransferProtocol)

过程:用户代理---->邮件服务器----SMTP---->邮件服务器---->用户代理

SMTP是一个推协议,由发送邮件的服务器将文件发给接收邮件的服务器,接收邮件的用户是不能使用该协议获取接收到的邮件的。获取接收到的邮件使用的是邮件访问协议。流行的邮件访问协议有:POP3,IMAP,HTTP。

POP3(拉协议)

POP3协议简单,但功能有限。用户代理打开与邮件服务器的TCP连接后,POP3开始工作。POP3工作有三个阶段:

特许:用户代理发送用户名和口令以鉴别用户。

事务处理:用户代理取回报文,对报文进行删除标记,取消删除标记,获取邮件的统计信息。获取报文有以下两种方式:下载并保留 ||下载并删除

更新:结束POP3会话,删除被标记为删除的报文。

IMAP(拉协议)

使用POP3协议只能获取报文,不能在服务器上创建文件夹对报文进行管理。为了解决这个或一些其他问题,产生了IMAP协议。IMAP服务器把每个报文与一个文件夹联系起来,报文到达时与INBOX文件夹相关联,而收件人能够把邮件移到一个新的文件夹中,阅读,删除或是移动到别的文件夹。IMAP还提供了查询邮件的命令,且IMAP维护了IMAP会话的用户状态信息(文件夹的名字等)。另外,IMAP还允许用户代理获取报文某些部分的命令。这样当用户处于低带宽连接时,可以选择性的只取回(MIME)报文的一部分。

基于Web的电子邮件

基于Web的电子邮件,用户代理就是浏览器,用户和远程邮箱之间的通信通过HTTP进行。用户发送和获取电子邮件时,都通过HTTP协议在浏览器和邮件服务器之间进行报文传输,但是邮件服务器之间发送和接收报文仍然使用SMTP。

用户代理–HTTP–>邮件服务器–SMTP–>邮件服务器–HTTP–>用户代理

2.4 DNS:因特网的目录服务

2.4.1 DNS概述与DNS服务

DNS是由分层的DNS服务器实现的分布式数据库。

DNS是使主机能够查询分布式数据库的应用层协议。

DNS协议运行在★★★UDP★★★上,使用53端口。

A,NS,CNAME,MX

服务:1.进行主机名到IP地址的转换  2. 获取主机别名对应的规范主机名和IP地址   3.获取邮件服务器别名的规范名字和IP地址。4.负载均衡:一个站点可能会被冗余分布在多台服务器上,有不同的IP地址。这些IP地址构成了一个IP地址集,DNS服务器可以在返回这些IP地址时循环改变次序,客户通常选择先返回的IP地址请求服务,这样通过更改返回IP地址的顺序,就能起到负载分配的作用。

2.4.2 DNS工作原理

使用单个DNS服务器有单点故障、通信容量,远距离集中(高时延),维护等问题,因此DNS采用了分布式的设计方案。按照层次,DNS服务器分为三种:根DNS服务器;顶级域服务器;权威DNS服务器。除了以上三个层次外,还有一类重要的DNS服务器是本地DNS服务器。本地DNS服务器一般离主机很近,起到代理的作用。在进行DNS查询时,有两种查询方式:递归查询和迭代查询。通常,请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的。

查询过程:对于一个网络应用,需要将主机转化成IP时,打开DNS客户端->从URL读取主机名,传给DNS客户端->向DNS服务器发送一个包含主机名的查询请求->收到服务器回复的IP->网络应用向该IP地址+相应端口发起TCP连接请求

DNS服务器结构等级:根级别全球13台;顶级域:.com、.org、.edu等;权威级别amazom.org、scu.edu

查询方式有两种:递归查询:主机->本地DNS服务器->根->TLD->权威(到达权威再返回);迭代查询:主机->本地<->下一个服务器(每次返回下一个DNS地址,直到权威服务器给出解析结果。

为了改善时延性能和减少报文传输,DNS还广泛使用了缓存技术。DNS服务器会缓存主机名/IP地址对,一段时间后才丢弃缓存信息。

2.5 P2P文件分发

使用P2P体系结构的网络应用对总是打开的基础设施服务器有最小的依赖。P2P体系结构具有内在自扩展性,无论有多少对等方,P2P体系结构的应用的文件分发时间都小于客户-服务器体系结构的应用。BitToreent是一种用于文件分发的流行P2P协议,以下是BitTorrent的部分功能原理。

在BitTorrent协议中,参与一个文件分发的所有对等方的集合称为一个洪流。洪流中的对等方互相下载等长度的文件块(典型长度256KB)。对等方刚进入洪流时没有块,一段时间后就持有了块,并可为其他对等方上载块。每个洪流有一个追踪器,当对等方加入洪流时,将向追踪器注册自己,并周期性通知追踪器自己仍在洪流中。

当一个对等方A加入洪流后,追踪器会给出一个对等方子集及这些对等方的IP地址,A可以从中选择临近的对等方建立TCP连接,交换块列表。选择向邻居请求哪些块使用的策略是最稀缺优先,首先请求邻居中副本最少的块,从而加快这些块的分发。而响应邻居的哪些请求则使用的是一种对换算法,优先响应前四个给A提供数据最高速率的邻居(他们被称为疏通),并且还会每30s随机选择一个对等方B,如果B的速率够高,就把B换进前四位列表。这样对等方能够趋向于找到彼此的协调的速率上载。除了这五个对等方外,其他相邻的对等方不会收到A的块。这种激励机制被称为“一报还一报”。

2.6 视频流和内容分发网

2.6.1 视频流

​ 视频是一系列的图像,可以被压缩,通常用比特率来衡量质量。视频可以被压缩到不同的比特率,让用户根据网络带宽来选择观看的版本。对流式视频最重要的性能度量是平均端到端吞吐量,流式视频应用得到的平均吞吐量至少与压缩视频的比特率一样大。

​ 在HTTP流中,视频只是一个普通的文件。用户请求视频文件,将收到的字节进行缓存,一旦超过了预先设定的门限就开始播放,将字节处理成帧,并将这些帧解压缩展现在视频上。视频编码为不同比特率的版本经HTTP传输,被称为经HTTP的动态适应流(DASH)。使用DASH后,视频有不同版本存放在服务器中,服务器会有一个告示文件,提供每个版本的URL和比特率信息。客户可以根据可用带宽指定URL和一个字节范围,对视频数据块请求。

2.6.2 内容分发网

​ 因特网视频公式每天都需要向百万计的用户发送数据,如果在数据中心存储所有视频,主要有三个问题:1.如果用户离数据中心太远,很可能产生停滞时延。2.流行的视频可能经相同链路发送多次,浪费带宽。3.单个数据中心出现单点故障,就不能分发视频流了。为了解决分发视频数据的问题,使用内容分发网CDN。CDN管理分布在多个位置的服务器,将用户请求定位到能提供最好服务的CDN位置。CDN包括专用CDN(内容提供商自己的)和第三方CDN(代表多个内容提供商分发内容)。

​ CDN通常集群部署。每个集群只保留一些视频,当用户请求视频时,如果集群中没有该视频,再从其他集群或中心仓库拉取视频到集群,并在本地存储一个副本。CDN的部署通常采用两种原则:

深入:在全球接入ISP中部署服务器集群,靠近端用户。

邀请做客:在少量关键的位置建造大集群,邀请ISP做客。

​ 使用CDN,用户的请求需要被重定向到CDN服务器,这通常是由DNS进行截获和重定向的。DNS检测到URL中有video以及内容提供商的名字,就返回一个CDN域的主机名,用户将再次发送请求到这个CDN域的DNS系统,并得到CDN节点的IP地址。CDN的集群选择策略是CDN部署的核心,一种简单的策略是指派用户到地理上最为临近的集群,也有周期性实时测量集群和用户到集群时延和丢包性能来选择集群的策略。

*DASH:服务器将视频分割成块,独立存储且编码于不同码率,客户端获取告示文件(块的URL),并根据带宽请求相匹配码率的块

*CDN内容分发网络:缓存节点,存储服务内容,为就近用户提供服务,提高用户体验

3.传输层

(为不同主机上的进程提供逻辑通信;网络层负责不同主机通信)

UDP(用户数据报协议)它提供一种不可靠、无连接的服务;另一种是TCP,它提供可靠的,面向连接的服务;运输层分组也被称为报文段;

网络层协议有一个名字即IP,即网际协议。IP为主机间提供逻辑通信,IP的服务模型为尽力而为交付服务best-effort delivery service)这意味着IP尽最大的努力在主机间交付报文段,但是不做任何保证。不保证报文段的交付、不保证报文段按序交付、不保证报文段中数据的完整性;即IP提供一种不可靠的服务;每台主机都需要有一个网络层地址,即IP地址

多路复用和多路分解:

传输层和应用程序进程之间通过Socket(套接字:进程与计算机网络的接口)关联

面向连接的多路复用和多路分解

TCP socket:(源IP,源port,目标IP,目标port)

过程无连接的多路复用和多路分解

UDP socket:(源IP,源port)目标在发送时指定

多路分解:传输层解析报文字段定向到指定进程套接字的过程

多路复用:传输层从不同套接字中收集数据块,将数据块封装并添加首部信息产生报文段,发送到网络层的过程

无连接传输 UDP:尽力而为的服务,报文段可能丢失/乱序,发送端与接收端无连接,常用于流媒体、DNS,SNMP

好处:关于何时、发送什么数据的应用层控制更为精细,无需连接,无需维护连接状态,分组首部更小 减少了延时,简单,开销小,发送速率块

UDP首部只有4个字段,每个字段占用两个字节,分别是:源端口号、目的端口号、长度和校验和;其中,长度表示包含首部在内的UDP报文段长度,以字节为单位

可靠数据传输

一个可靠数据传输协议,将要面对以下问题:分组丢失、分组损坏到达、分组乱序到达

总结可靠传输需要的技术:检验和、序号、定时器、肯定和否定确认分组

版本1:rdt1.0:假设底层通信信道可靠,直接发送和接收数据即可

rdt2.0:假设为有bit差错的信道,使用——差错校验+接收方发送ACK/NAK+重传机制(每次发送完需要等接收方发送回ACKorNAK后才能继续发送,这种模式叫做停等模式)

rdt2.1:考虑发送回的确认包有可能错误,导致重传时不能确定是新发送的包还是重传包,因此引入组序号机制

rdt2.2:取消NAK,改为发送上一次成功的ACK和序号

rdt3.0:添加了丢包的考虑,为防止确认包丢失长时间等待,发送方发送时启动倒计时定时器——启动定时器,中断响应定时器或者接收成功取消定时器

版本2:经完全可靠信道的可靠数据传输:rdt 1.0

经具有比特差错信道的可靠数据传输:rdt 2.0假设所有发送的分组都可以按其发送顺序被接收。基于重传机制的可靠数据传输协议称为自动重传请求协议(ARQ)。增加了ACK和NCK

ARQ协议中还需要另外三种协议功能来处理存在比特差错的情况:差错检测,接收方反馈,重传。

rdt2.0的发送端每发送一个分组需要等待接收端的确认信号,这种协议被称为停等协议

rdt 2.1 考虑ACK和NAK受损的两个可能性:

增加足够的校验和比特 当接受到模糊不清的ACK和NAK分组时,只需要重传当前数据分组。这引入了冗余分组(但接收方不知道上次发送ACK和NAK是否被发送发收到,无法是分组是新的还是重传)

rdt2.2

在有比特差错信道上实现的一个无NAK的可靠数据传输协议。

rdt 2.1和rdt 2.2的区别在于,接收方此时必须包括由一个ACK报文所确认的分组序号

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

丢包的问题让发送方解决。不管是发送的分组丢失,还是接收方返回的确认分组丢失,只要在经过一定的时延后,让发送方重发该分组即可

实现基于时间的重传机制,需要一个倒计时定时器

流水线可靠数据传输协议

允许发送方在未得到对方确认的情况下一次发送多个分组。

差错回复的两种方法(两种通用的流水线协议):回退N步和选择重传

*回退N步(GBN):N为发送方窗口长度,因此也叫滑动窗口协议

在回退N步中,发送方维护一个N和一个base—发送方期待收到的最小待确认分组序号  其需要响应的事件有:上层调用、收到ACK、超时事件

发送方:上层调用时,判断发送窗口是否满,满了一般加入发送缓存/或者满了就不允许上层调用;收到ACK采用累计确认机制,该ACK前面的组也确认收到;超时时重发所有没有被确认的包,每收到一个ACK更新一次定时器;

接收方:只维护一个接收口,一次只接收顺序到达的一个包;其他情况(乱序,包错误)返回上一次接收成功的包序号ACK,不缓存乱序包

*选择重传机制(SR):有选择性的重新传输超时的组

发送方:上层调用同理;收到ACK将该包标记为确认,不在重发;为每个发送的包设置定时器,超时只重复一个包;

接收方:缓存乱序包,等到前面的空缺包到达一起递交;正确收到一个包返回对应序号的ACK

SR 发送方动作:若在发送方的窗口内,则将数据打包发送,每个分组有单独的定时器,倘若该分组序号在窗口内,则 SR 发送方将那个被确认的分组标记为已接收。如果该分组的序号等于send_base,则窗口基序号向前移动到具有最小序号的未确认分组处。如果窗口移动了并且该序号落在窗口内的未发送分组,则发送这些分组。

SR 接收方动作:收到的分组落在接收方的窗口内,一个选择 ACK 被回送给发送方。如果该分组以前没收到过,则缓存该分组。如果该分组的序号等于接收窗口的基序号,则该分组及以前缓存的序号连续的分组交付给上层。

序号的重用问题,如果在分组中序号字段的位数为k,那么最大的序号为2^k-1,所以有可能不同分组同时占用一个序号,为了避免这种情况,需要做的是控制分组的生命周期。窗口长度必须小于或等于序号空间大小的一半。

TCP连接      (seq=前一次ack,ack=前一次seq+1)

*TCP:点对点面向连接,可靠的、按顺序的字节流,管道化(拥塞控制和流量控制),发送和接收缓存,全双工数据,

三次握手:(SEQ随机生成,ACK等于收到的SEQ+1)

1、SYN:客户端发送一个SYN(同步序列编号)报文到服务器,以表明客户端希望建立连接,并提出自己的初始序列号。

2、SYN-ACK:服务器收到SYN后,发送一个SYN-ACK(同步确认)报文作为响应,确认收到了客户端的SYN,并同时提出服务器的初始序列号。

3、ACK:客户端收到SYN-ACK后,发送一个ACK(确认)报文给服务器,确认收到了服务器的SYN-ACK。

四次挥手:

1、FIN:当一方(比如客户端)完成数据发送后,它需要发送一个FIN报文给对方(服务器),表明它没有数据发送了,请求关闭连接。

2、ACK:服务器收到这个FIN后,发送一个ACK报文给客户端,确认收到了客户端的终止请求。

3、FIN:服务器准备好关闭连接时,发送一个FIN给客户端。

4、ACK:客户端收到服务器的FIN后,发送一个ACK报文作为响应。

三次握手四次挥手的原因:服务器收到客户端的FIN请求后,需要发送ACK进行确认,但此时服务器可能还有数据未发送完毕,所以不能立即发送FIN。等服务器数据发送完毕后,再发送FIN给客户端,需要客户端的确认。

TCP使用超时重传和冗余确认技术来处理超时、丢失等情况;使用确认、序号等技术来保证按序到达;使用校验和来检验是否报文段在传输过程中是否发生了错误

在发送方last Sent-last Acked应该小于等于接收方的窗口大小;在接收端A=last Received-last Read就是已经使用的空间大小,所以窗口大小=buffer-A;

流量控制

流量控制:流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收。

接收窗口(receive window)由发送方维护

接受方接收到报文段后,将报文段存放到接收缓存当中,应用进程从中取出数据。如果应用程序读取的速度较慢,而发送方发送的数据太多太快,就会导致接收缓存溢出。因此TCP提供了流量控制服务,使发送方的发送速率与接收方应用程序的读取速率匹配。这与拥塞控制很相似,但是完全是出于不同的原因。

TCP通过让发送方维护一个称为接收窗口的变量来进行流量控制。接收窗口表示接收方可用缓存的大小。发送方需要维护两个变量:

lastbyteread:读出的最后一个字节

lastbyterecv:已到达接收缓存的最后一个字节

不允许接收缓存溢出,则lastbyterecv-lastbyteread<=rcvbuffer。

则接收窗口为:rwnd=rcvbuffer-[lastbyterecv-lastbyteread]

rwnd是一个动态的值。在起始时,rwnd=recvbuffer,此后接收主机会维护该值,并将其发给发送主机,而发送主机需要进行如下的控制:

lastbytesent−lastbyteacked<=rwnd

为了避免发送主机收到rwnd=0后被阻塞,如果接收窗口为0,发送主机将发送一个只有一个字节的报文段,接收主机将会回发确认,并在确认报文中包含一个新的非0rwnd值。

TCP提供了以上的流量控制服务,UDP是不提供这样的服务的。因此如果使用UDP,进程从缓存中读取报文段的速度不够快,缓存将会溢出,并丢失报文段。

拥塞控制

拥塞控制:拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况;

TCP拥塞控制算法,该算法包含三个主要部分:慢启动、拥塞避免、快速恢复

1、慢启动SS:起始时,CongWin的值以一个MSS开始,每个RTT增加一个MSS(对每个ACK都将cwnd增加一个MSS),故相当于cwnd*2;直到丢包发生,记录此时慢启动阈值ssthresh=cwnd/2;

然后有两种应对方法——当超时丢包:将cwnd重新设置为1然后重新慢启动,到达阈值时采用拥塞避免算法;

当出现三个冗余ACK:进入快速恢复模式,ssthresh=cwnd/2,cwnd=ssthresh+3MMS,拥塞避免

2、拥塞避免CA:丢包后,又一次慢启动到达阈值时,采用线性增长方法,每个RTT都受到ACK后,增加1个MSS,直到丢包发生,更新阈值重新慢启动/采用快速恢复

3、快速恢复:三个冗余ACK后,不重新到1个MSS,而是直接设置为当前cwnd/2+3(记录的冗余ACK数量),然后进入拥塞避免模式开始线性变化  若出现超时丢包,与慢启动的反应相同,返回并重新开始慢启动

对TCP吞吐量的宏观描述

有了TCP的拥塞控制算法,可以考虑长期存活的TCP连接的吞吐量了。

当窗口长度是w,往返时间为RTT,TCP的发送速率大约是W/RTT,在一个窗口内发送了w后,收到前一半发送的分组的ACK,因此发送速率约为W/RTT。不考虑慢开始阶段(指数增长,很快结束),发生丢包时,假设速率减半,再增加到W/RTT。在以上情况下,TCP的速率重复从W/2RTT到W/RTT的过程,在两个值之间线性增长,可以得出一个高度理想化的TCP稳态动态性模型:

一条连接的平均吞吐量 = 0.75 * W /RTT

在高带宽路径中,结合MSS和丢包率L,可以得出一条TCP连接的吞吐量公式:

一条连接的平均吞吐量 = 1.22 * MSS / (RTT * sqrt(L) )

4 网络层:数据平面

*概述:负责把数据送到对应主机

路由:决定分组采用的源到目标的路径

转发:将分组从路由器的输入链路转移到输出链路

*虚电路网络(VCN):有链接的网络服务,在发送方和接收发之间维护一条链路

*数据报网络:无连接状态的网络,发送发只负责将含有目标IP地址的datagram包发送给下层输送到网络中即可,不需要先建立维护一条路径,会有路由器自动根据转发表转发到目标地址

4.1 导论

路由(控制平面,全局)<>转发(数据平面,局部)

传统方式:基于目标地址+转发表

SDN方式:基于多个字段+流表

保证:服务模型,带宽,丢失,保序,延迟,拥塞反馈

4.2 路由器工作原理

路由器结构组件(4个):

输入端口,交换结构,输出端口,路由选择处理器

输入端口处理和基于目的地的转发:最长前缀匹配规则

“匹配+动作”抽象

交换结构:

经内存交换:由CPU(路由选择处理器)直接控制

经总线交换:输入端口经一根共享总线将分组直接传送到输出端口

经互联网络交换:纵横式交换机

内存/总线一次只能处理一个,纵横式只要彼此输出端口不同,一次可以处理n个

交换速率:N倍输入/输出端口速率,否则会成为瓶颈

输出端口处理

何处出现排队:输入排队,输出排队

输入排队:线路前部阻塞(HOL):由于队列前面的受到竞争而阻塞,后面的即使不存在竞争也要等待

输出排队:弃尾,主动队列管理(AQM)

多少缓存?

缓存数量B=平均往返时延RTT*链路容量C(少量TCP流量)B=RTT*C/sqrt(N) (大量TCP流量,N条)

分组调度:FIFO,优先权排队(同一优先权分组之间使用FIFO,另:非抢占式优先权排队),循环和加权公平排队()

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

IPv4数据报格式

包括版本,首部长度,服务类型,数据报长度,标识,标志,片偏移,寿命,协议,首部检验和,源和目的ip地址,选项(允许ip首部扩展),数据(有效载荷)

IPv4数据报分片

MTU(最大传送单元)(链路层帧能承载的最大数据量)

标识,标志(最后为0,其余为1),片偏移(计算题)

★IPv4编址(地址协议)

一个IP地址与一个接口(主机与物理链路的边界)相关联,而不是该接口的主机或路由器

子网划分(子网掩码)【考题:计算】

网络地址(子网掩码确定的子网地址,后面部分全为0)

主机地址(在网络地址和广播地址之间)

广播地址(子网掩码确定的子网地址,后面部分全为1)

*特殊用途的IP地址:网络部分全为0-本网络;主机部分全为0 -本主机;主机部分全为1-广播地址

特殊IPv4地址:

默认路由:0.0.0.0

环回地址:127.0.0.0/8(测试IP协议栈是否正常)

链路本地地址:169.254.0.0/16

无类别域间路由选择(CIDR)

a.b.c.d/x前x最高比特构成IP地址的网络部分(网络前缀/前缀)

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

★网络地址转换NAT(NetworkAdressTranslation):应对IP不够分配的情况,允许本地子网地址转换为统一唯一的IP地址共用一个公网IP

10.0.0.0/8这类地址被保留用于专用网络,仅在给定的网络中才有意义。

NAT自己运行一个DHCP服务器给子网用户分IP地址,并从ISP的DHCP服务器得到自己的IP地址。

NAT转换表(WAN端,LAN端)

NAT缺点 :服务器进程在周知端口号上等待入请求,P2P对等方在充当服务器时需要接受入连接,违背IP设计理念,破坏端到端模型,延迟增加,应用限制,端口限制(端口数量有限),单点故障,未标准化,突破NAT穿越问题很麻烦

IPv6

IPv6数据报格式:版本,流量类型,流标签,有效载荷长度,下一个首部,跳限制,源地址和目的地址,数据

★注意:IPv6地址共128bit,IPv6不允许在中间路由器上进行分片/重新组装,并因此取消了首部检验和,同时取消了选项字段。

IPv4到IPv6的迁移:建隧道,在中间使用IPv4的路段使用IPv4封装IPv6

4.4 通用转发和SDN

匹配加动作转发表在Openflow中称为流表。表项包括:

首部字段值的集合,计数器集合,当分组匹配流表项时所采用的动作集合

SDN三大特征

集中控制、分离数据平面和可编程性

P4 可编程协议无关报文处理语言

SD-WAN 广域网组网

5.网络层:控制平面

5.1 路由选择算法

分类方式(集中式/分散式,静态/动态,负载敏感/负载迟钝)

链路状态(LS)算法(全局 集中式)/距离向量(DV)算法(分散式)

链路状态路由选择算法(LS)

Dijkstra算法

问题:拥塞敏感的路由选择的振荡

解决:确保并非所有路由器同时运行LS算法,避免自同步(发送链路通告的时间随机化)

距离向量路由选择算法(DV)(Bellman-Ford算法)

迭代的,异步的,分布式的算法

问题:

好消息传播快,坏消息传播慢(算法本身对于信息的真伪无法甄别)

无穷计数问题:(链路突然变坏的消息没有及时被别的节点收到,误以为那条路仍然是好的,且这个消息会干扰到直接与那条路相连的节点)

(解决:毒性逆转:z通告y路由选择到目的地x,则z向y通告它到x的距离是无穷大【三个以上节点的环路无法检测】)

解决:水平分割:路由器不使用接收更新的同一接口来通告同一网络(从根本上解决问题)

LS和DV比较

报文复杂性:

收敛速度:DV算法收敛慢,会遇到无穷计数问题

健壮性:LS好,DV上一个不正确的节点计算会扩散全网

LS算法对应OSPF(开放最短路径优先协议) DV算法对应RIP(路由选择信息协议)

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

5.2 开放最短路优先(OSPF)算法。

OSPF是一种链路状态协议,使用洪泛链路状态信息和Dijkstra最短路径算法。每台路由器在本地运行Dijkstra算法,构建一个关于整个自治系统的完整拓扑图。

使用OSPF时,路由器向自治系统内所有其他路由器广播路由选择信息(不仅仅是向邻居广播),当链路状态变化或经过一个特定周期,路由器就会广播链路状态信息。

OSPF通告包含在OSPF报文中,直接由IP承载。

OSPF优点如下:

安全:使用鉴别,仅有受信任的路由器能参与一个AS内的OSPF协议。

多条相同开销的路径:对于多条相同开销路径,OSPF允许使用多条路径,这样可以负载均衡。

对单播与多播路由选择的综合支持。

支持在单个AS中的层次结构:一个OSPF自治系统能够层次化配置多个区域,每个区域都运行自己的OSPF链路状态路由选择算法,路由器只在区域内进行广播,一台或多台边界路由器负责为流向区域外的分组提供路由选择。

5.3 网关协议

*内部网关协议IGP:使用最多的是RIP协议和OSPF协议,外部网关协议EGP:BGP

*AS:在一个统一的管理机构下运行的一组路由器和网络的集合,这些网络和路由器通过一个共同的路由策略对外表现为一个单一的实体。

5.4 BGP:边界网关协议(Border Gateway Protocol)

对于BGP来说,只要把分组送到分组的目标网络,不需要考虑送到目标主机的问题。因此BGP中,一个目的地是一个地址前缀,即一个网络。

BGP通过两个手段将分组送到目标网络:

从邻居AS获取前缀的可达性信息:BGP允许每个子网向因特网中的其他部分通告自己的存在,这样一个AS就知道一个子网的存在,才可能将分组送达这个子网。即“我在这里”

确定最好的路由路径:基于策略和可达性信息,路由器会选择一条尽可能好的路由路径传送分组。

通告BGP路由信息

路由器只有两种:网关(AS边缘)和内部路由器(AS内)

路由器通过使用179端口的半永久【TCP连接】交换路由选择信息,每条路由器之间的连接和发送的BGP报文,称为BGP连接

跨越两个AS的BGP连接为外部BGP(eBGP),

AS内部路由器的BGP会话为内部BGP(iBGP)

BGP属性

AS-PATH和NEXT HOP(AS-PATH起始路由器的IP地址)

确定最好的路由:

热土豆路由选择:尽可能快地(最低开销地)送出本AS,即最靠近NEXT-HOP

路由选择算法:依次采取以下规则:指派一个本地偏好作为属性之一,选择具有最短AS-PATH(AS-PATH就是从当前AS到达一个AS的路径)的路由,使用热土豆路由选择,使用BGP标识符

注意:当在转发表中对于热土豆路由选择增加AS向外前缀时,AS间路由选择协议(BGP)和AS内部路由选择协议(OSPF)都要用到。

IP任播(常用于DNS)

用处:在分散不同的地理位置,替换不同服务器上的相同内容,让每个用户从最靠近的服务器访问内容

原理:为多台服务器指派相同的IP地址,并使用标准BGP通告该IP地址。这样当某台BGP路由器收到对于该IP地址的多个路由通告时,它会认为这是对相同物理位置的不同路径,因而根据本地的BGP路由选择算法选择一个较优的路径,事实上访问了最靠近的内容

在CDN网络实践上并没有采用:BGP路由选择变化能导致相同的TCP连接的不同分组到达Web服务器的不同实例(即到达了不同的服务器上,虽然是同一个IP)

5.5 SDN控制平面

关键特征:基于流的转发;数据和控制平面分离;网络控制功能位于数据平面交换机外部;可编程的网络。

5.6 ICMP:因特网控制报文协议

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

ping的实现,ICMP源抑制报文,Traceroute的实现(向不可达UDP端口号发送TTL逐次递增的报文)

其他零碎知识

一、数据中心网络:负载均衡、等级体系结构

数据中心中的主机称为刀片   机架顶部交换机    边界路由器

二、回顾:Web页面请求的历程

DHCP(UDP)→DHCP服务器返回分配的IP地址,默认网关路由器IP地址,DNS服务器IP地址→ARP→查询默认网关路由器MAC地址→DNS(UDP)→查询www.hnu.edu.cn的IP地址(路由器根据自治区内OSPF知道DNS服务器该如何转发)→TCP三次握手,HTTP GET

三、TCP四次挥手

第一次挥手:客户端打算断开连接,向服务器发送FIN报文(FIN标记位被设置为1),FIN报文中会指定一个序列号,之后客户端进入FIN_WAIT_1状态。

也就是客户端发出连接释放报文段(FIN报文),指定序列号seq = u,主动关闭TCP连接,等待服务器的确认。

第二次挥手:服务器收到连接释放报文段(FIN报文)后,就向客户端发送ACK应答报文,以客户端的FIN报文的序列号 seq+1 作为ACK应答报文段的确认序列号ack = seq+1 = u + 1。

接着服务器进入CLOSE_WAIT(等待关闭)状态,此时的TCP处于半关闭状态(下面会说什么是半关闭状态),客户端到服务器的连接释放。客户端收到来自服务器的ACK应答报文段后,进入FIN_WAIT_2状态。

第三次握手:服务器处理完数据后也打算断开连接,向客户端发送连接释放(FIN)报文段,之后服务器进入LASK_ACK(最后确认)状态,等待客户端的确认。

服务器的连接释放(FIN)报文段的FIN=1,ACK=1,序列号seq=m,确认序列号ack=u+1。

第四次握手:客户端收到来自服务器的连接释放(FIN)报文段后,会向服务器发送一个ACK应答报文段,以连接释放(FIN)报文段的确认序号 ack 作为ACK应答报文段的序列号 seq,以连接释放(FIN)报文段的序列号 seq+1作为确认序号ack。

之后客户端进入TIME_WAIT(时间等待)状态,服务器收到ACK应答报文段后,服务器就进入CLOSE(关闭)状态,到此服务器的连接已经完成关闭。

客户端处于TIME_WAIT状态时,此时的TCP还未释放掉,需要等待2MSL后,客户端才进入CLOSE状态。

为什么四次?:由于 TCP 的半关闭(half-close)特性,TCP 提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。

通俗的来说,两次挥手就可以释放一端到另一端的 TCP 连接,完全释放连接一共需要四次挥手。

四、DHCP协议过程   动态主机配置协议  4个步骤

DHCP服务器发现:新加入的主机用广播地址发送DHCP发现报文

DHCP服务器提供:服务器响应以广播地址发送DHCP提供报文回馈相关信息

DHCP请求:客户选择配置参数后向选中的服务器发送DHCP请求报文

DHCP ACK:服务器用DHCP ACK报文确认

通过一台DHCP服务器为接入的主机动态分配IP地址的方法(接入的主机可获得不同的随机分配的IP或固定IP),使得接入的新主机获取到IP地址、第一跳路由器、本地DNS服务器地址,子网掩码等,也叫即插即用的协议

过程:主机向服务器广播,确认服务器位置->服务器向主机广播/单播,返回IP地址信息->主机向服务器广播,选择IP地址->服务器向主机广播/单播,确认可以使用IP

五、QUIC(Quick UDP Internet Connection)

QUIC实现了TCP + HTTPS + HTTP/2的功能,目的是保证可靠性的同时降低网络延迟。

低延迟连接建立:QUIC结合了TCP和TLS的功能,支持0-RTT连接建立,这意味着在客户端和服务器之间首次握手时,可以在不增加额外往返时间的情况下发送数据。

集成的安全性:QUIC默认包含加密机制,类似于TLS 1.3。

减少头部阻塞:与TCP不同,QUIC在数据包丢失时不会阻塞后续数据包的传输,因为它使用多路复用技术在单个连接上管理多个独立的流。

减少头部阻塞:与TCP不同,QUIC在数据包丢失时不会阻塞后续数据包的传输,因为它使用多路复用技术在单个连接上管理多个独立的流。

灵活的拥塞控制:QUIC允许使用不同的拥塞控制算法,可以根据具体的网络情况选择最合适的算法,提高传输效率。

六、往返时间估计RTT(round trip time)

EstimatedRTT = (1-α) * EstimatedRTT + α * SampleRTT ( α推荐值是0.125)

DevRTT = (1-β) * DevRTT + β * |SampleRTT - EstimatedRTT| (β推荐值为0.25)

TimeoutInterval = EstimatedRTT + 4*DevRTT

TimeoutInterval初始为1,超时翻倍,SampleRTT更新时才按公式更新

七、产生TCP ACK的建议   接收方的事件—TCP接收方动作

所期望序号的报文段按序到达。所有在期望序号之前的数据都已经被确认—延迟的ACK。对另一个按需报文段的到达最多等待500ms。如果下一个报文段在这个时间间隔内没有到达,则发送一个ACK。

有期望序号的报文段到达。另一个按序报文段等待发送ACK—立即发送单个累积ACK,以确认两个按序报文段

比期望序号大的报文段乱序到达。检测出数据流中的间隔—立即发送重复的ACK,指明下一个期待字节的序号

能部分或完全填充接收数据间隔的报文段到达—若该报文段起始于间隔(gap)的低端,则立即发送ACK

八、拥塞 锁死

当红色的 增加时,所有到来的蓝色分组都在最上方的队列中被丢弃了,蓝色吞吐->0。网络中有注入而无输出,发生锁死。拥塞的代价:当分组丢失时,任何“关于这个分组的上游传输能力”都被浪费了。

九、TCP平均吞吐量

平均TCP吞吐量作为窗口大小的函数,RTT

忽略缓慢启动,假设总是有数据要发送

W: 发生丢失的窗口大小(以字节为单位)

平均窗口大小(飞行中的字节数)为¾W

TCP平均thruput为3/4 W/RTT

十、调度策略 FCFC、优先级、round robin、weighed fair queueing

十一、*子网:具有相同前缀IP的多个相互连接的接口构成一个子网,比如223.1.1.0/24,表示前24为前缀相同的接口组成了223.1.1.0这个网段的子网,后8位全零标识子网,全1表示广播地址。

子网掩码:是用于区分IP地址的网络部分和主机部分的一个32位的二进制值.子网掩码中的连续1表示网络部分,连续0表示主机部分。

* CIDR(无分类编址)表示法:使用IP地址和前缀长度表示一个网络,例如,192.168.0.0/24,其中“192.168.0.0”是网络地址,“/24”表示网络前缀的长度,即前24位是网络部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值