计算机网络谢希仁知识点总结,计算机网络谢希仁期末重点
计算机网络基础知识(一)
参考:计算机网络 谢希仁 第7版
一、现在最主要的三种网络
? 电信网络(电话网)
? 有线电视网络
? 计算机网络 (发展最快,信息时代的核心技术)
二、internet 和 Internet
? internet 是普通名词
泛指一般的互连网(互联网)
? Internet 是专有名词,标准翻译是“因特网” 世界范围的互连网(互联网)
使用 TCP/IP 协议族
前身是美国的阿帕网 ARPANET
三、计算机网络的带宽
计算机网络的带宽是指网络可通过的最高数据率,即每秒多少比特。 描述带宽也常常把“比特/秒”省略。
例如,带宽是 10 M,实际上是 10 Mb/s。注意:这里的 M 是 106。
四、对宽带传输的错误概念
在网络中有两种不同的速率:
? 信号(即电磁波)在传输媒体上的传播速率(米/秒,或公里/秒)
? 计算机向网络发送比特的速率(比特/秒),也叫传输速率。 这两种速率的意义和单位完全不同。
宽带传输:计算机向网络发送比特的速率较高。 宽带线路:每秒有更多比特从计算机注入到线路。 宽带线路和窄带线路上比特的传播速率是一样的。
早期的计算机网络采用电路交换,新型的计算机网络采用分组交换的、基于存储转发的方式。 分组交换:
? 在发送端把要发送的报文分隔为较短的数据块
? 每个块增加带有控制信息的首部构成分组(包)
? 依次把各分组发送到接收端
? 接收端剥去首部,抽出数据部分,还原成报文
IP 网络的重要特点
? 每一个分组独立选择路由。
? 发往同一个目的地的分组,后发送的有可能先收到(即可能不按顺序接收)。 ? 当网络中的通信量过大时,路由器就来不及处理分组,于是要丢弃一些分组。 ? 因此, IP 网络不保证分组的可靠地交付。
? IP 网络提供的服务被称为:
尽最大努力服务(best effort service) 五、最重要的两个协议:IP 和 TCP
TCP 协议保证了应用程序之间的可靠通信,IP 协议控制分组在因特网的传输,但因特网不保证可靠交付.
在 TCP/IP 的应用层协议使用的是客户服务器方式。
? 客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。
? 客户服务器方式所描述的是进程之间服务和被服务的关系。
? 当 A 进程需要 B 进程的服务时就主动呼叫 B 进程,在这种情况下,A 是客户而 B 是服务器。
? 可能在下一次通信中,B 需要 A 的服务,此时,B 是客户而 A 是服务器。
注意:
? 使用计算机的人是“用户”(user)而不是“客户”(client)。
? 客户和服务器都指的是进程,即计算机软件。
? 由于运行服务器进程的机器往往有许多特殊的要求,因此人们经常将主要运行服务器进程的
机器(硬件)不严格地称为服务器。
? 例如,“这台机器是服务器。” 意思是:“这台机器(硬件)主要是用来运行服务器进程(软件)。” ? 因此,服务器(server)一词有时指的是软件,但也有时指的是硬件。
六、总结
? 因特网(Internet)是世界范围的、互连起来的计算机网络,它使用 TCP/IP 协议族,并且它的前身是美 国阿帕网 ARPANET。
? 计算机网络的带宽是网络可通过的最高数据率。
? 因特网使用基于存储转发的分组交换,并使用 IP 协议传送 IP 分组。
? 路由器把许多网络互连起来,构成了互连网。路由器收到分组后,根据路由表查找出下一跳路由器的
地址,然后转发分组。
? 路由器根据与其他路由器交换的路由信息构造出自己的路由表。
? IP 网络提供尽最大努力服务,不保证可靠交付。
? TCP 协议保证计算机程序之间的、端到端的可靠交付。
? 在 TCP/IP 的应用层协议使用的是客户服务器方式。
? 客户和服务器都是进程(即软件)。客户是服务请求方,服务器是服务提供方。
? 服务器有时也指“运行服务器软件”的机器。
一、IP 网络是虚拟网络
? IP 网络是虚拟的。在 IP 网络上传送的是 IP 数据报(IP 分组)。
? 实际上在网络链路上传送的是“帧”,使用的是帧的硬件地址(MAC 地址)。
? 地址解析协议 ARP 用来把 IP 地址(虚拟地址)转换为硬件地址(物理地址)。
二、IP 地址的表示方法
IP 地址的表示方法有两种:二进制和点分十进制。
IP 地址是 32 位二进制数字,为方便阅读和从键盘上输入,可把每 8 位二进制数字转换成一个十进制数字,并 用小数点隔开,这就是点分十进制。
三、因特网的域名
因特网的域名分为: ? 顶级域名 ? 二级域名 ? 三级域名
? 四级域名
四、域名服务器 DNS (Domain Name Server)
因特网中设有很多的域名服务器 DNS,用来把域名转换为 IP 地址。
五、电子邮件
发送邮件使用的协议——简单邮件传送协议 SMTP (Simple Mail Transfer Protocol) 接收邮件使用的协议——邮局协议版本 3 POP3 (Post Office Protocol version 3) 注:邮件的传送仍然要使用 IP 和 TCP 协议
六、统一资源定位符 URL (Uniform Resource Locator)
? URL 用来标识万维网上的各种文档。
? 因特网上的每一个文档,在整个因特网的范围内具有惟一的标识符 URL。 ? URL 实际上就是文档在因特网中的地址。
七、超文本传送协议 HTTP (HyperText Transfer Protocol) 万维网客户程序与服务器程序之间的交互遵守超文本传送协议 HTTP。
八、结束语
? IP 地址是 32 位二进制数字。为便于阅读和键入,也常使用点分十进制记法。 ? 个人用户上网可向本地 ISP 租用临时的 IP 地址。
? 域名服务器 DNS 把计算机域名转换为计算机使用的 32 位二进制 IP 地址。 ? 发送电子邮件使用 SMTP 协议,接收电子邮件使用 POP3 协议。
? 统一资源定位符 URL 惟一地确定了万维网上文档的地址。
? 超文本传送协议 HTTP 用于万维网浏览器程序和服务器程序的信息交互。
? 超文本标记语言 HTML 使万维网文档有了统一的格式。
? IP 电话不使用 TCP 协议。利用 IP 电话网关使得在普通电话之间可以打 IP 电话。
一、因特网服务提供者 ISP (Internet Service Provider) 根据提供服务的覆盖面积大小以及所拥有的 IP 地址数目的不同,ISP 也分成为不同的层次。
二、两种通信方式
在网络边缘的端系统中运行的程序之间的通信方式通常可划分为两大类:C/S 方式 和 P2P 方式
(Peer-to-Peer,对等方式)。
三、因特网的核心部分
网络核心部分是因特网中最复杂的部分。
网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一个主机都能够向其 他主机通信(即传送或接收各种形式的数据)。
因特网的核心部分是由许多网络和把它们互连起来的路由器组成,而主机处在因特网的边缘部分。
在因特网核心部分的路由器之间一般都用高速链路相连接,而在网络边缘的主机接入到核心部分则通 常以相对较低速率的链路相连接。
主机的用途是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。路由器的用途则是用 来转发分组的,即进行分组交换的。
在网络核心部分起特殊作用的是路由器(router)。
路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分
最重要的功能。
四、电路交换
电路交换必定是面向连接的。 电路交换的三个阶段:建立连接、通信、释放连接。
五、网络的分类
? 不同作用范围的网络
? 广域网 WAN (Wide Area Network)
? 局域网 LAN (Local Area Network)
? 城域网 MAN (Metropolitan Area Network)
? 个人区域网 PAN (Personal Area Network)
? 从网络的使用者进行分类
? 公用网 (public network)
? 专用网 (private network)
? 用来把用户接入到因特网的网络
? 接入网 AN (Access Network),它又称为本地接入网或居民接入网。
注:由 ISP 提供的接入网只是起到让用户能够与因特网连接的“桥梁”作用。
六、计算机网络的性能指标
? 速率
? 带宽
? 吞吐量
? 时延(delay 或 latency)
? 传输时延(发送时延) —— 从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完 毕所需的时间。
? 传播时延 —— 电磁波在信道中需要传播一定的距离而花费的时间。 注:信号传输速率(即发送速率)和信号在信道上的传播速率是完全不同的概念。
? 处理时延 —— 交换结点为存储转发而进行一些必要的处理所花费的时间。
? 排队时延 —— 结点缓存队列中分组排队所经历的时延。 总时延 = 发送时延+传播时延+处理时延+处理时延
? 时延带宽积
? 利用率 —— 分为信道利用率和网络利用率。
? 信道利用率——某信道有百分之几的时间是被利用的(有数据通过)。 ? 网络利用率——全网络的信道利用率的加权平均值。 注:信道利用率并非越高越好。
七、网络协议(network protocol) 简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。其组成要素有以下三点:
? 语法 ? 语义 ? 同步
数据与控制信息的结构或格式 。
需要发出何种控制信息,完成何种动作以及做出何种响应。 事件实现顺序的详细说明。
八、实体、协议、服务和服务访问点
实体(entity)——表示任何可发送或接收信息的硬件或软件进程。 协议——是控制两个对等实体进行通信的规则的集合。
? 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。 ? 要实现本层协议,还需要使用下层所提供的服务。
? 本层的服务用户只能看见服务而无法看见下面的协议。
? 下面的协议对上面的服务用户是透明的。
? 协议是“水平的”,即协议是控制对等实体之间通信的规则。
? 服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。 同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP (Service Access Point)。
九、TCP/IP 的体系结构
路由器在转发分组时最高只用到网络层,而没有使用运输层和应用层。
计算机网络基础重要知识点
计算机网络基础重要知识点,第一章概述的知识点包含章节导引,第一节计算机网络的定义与作用,第二节计算机网络技术的发展,第三节计算机网络的分类与主要性能指标,第四节计算机网络的体系结构,。参考模型的七层结构很重要,要理解如下:
从最底层到最高层:物理层,内数据链路容层,网络层,传输层,会话层,表示层,应用层.
物理层:在通信系统间建立物理链接,实现原始位流的传输。工作在该层的设备有 中继器 集线器 网卡 数据的传输单位 是 比特流.
数据链路层:实现物理网络中的系统标识,具有组帧功能,在共赏传输介质的网络中,还提供访问控制功能,提供数据的无错传输。 工作在层的设备有 交换机
网桥。 传输单位 是帧。
网络层:对整个互联网络中的系统进行统一的标识,具有分段和重组功能还具有寻址的功能,实现拥塞控制功能。
传输层: 实现主机间进程到进程的数据通信。 数据传输的单位是 段。
会话层:组织和同步不同主机上各种进程间的通信。
表示层:为应用进程间传送的数据提供表示的方法即确定数据在计算机中编码方式。
应用层: 是(唯一)直接给网络应用进程提供服务。
运输层知识要点——谢希仁《计算机网络》
为了在计算机网络中有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所 交换数据的格式 以及有关的 同步 问题。
同步的含义:在一定条件下应当发生什么事件,因而含有时序的意思。
网络协议:为进行网络中的数据交换而建立的规则、标准或约定。
网络协议由以下三个要素组成:
? ?1)语法:即数据与控制信息的结构或格式
? ?2)语义:即需要发出何种控制信息,完成何种动作以及做出何种反应
? ?3)同步:即事件实现顺序的详细说明
一、运输层协议的概述
? ?1.1 进程之间的通信
? ?1.2 运输层的两个主要协议
? ?1.3 运输层的端口
二、用户数据报协议UDP
? ?2.1 UDP概述
? ?2.2 UDP的首部格式
三、传输控制协议TCP概述
? ?3.1 TCP的最主要的特点
? ?3.2 TCP的连接
四、可靠传输的工作原理
? ?4.1 停止等待协议
? ?4.2 连续ARQ协议
五、TCP报文段的首部格式
六、TCP可靠传输的实现
? ?6.1 以字节为单位的滑动窗口
? ?6.2 超时重传时间的选择
? ?6.3 选择确认SACK
七、TCP的流量控制
? ?7.1 利用滑动窗口实现流量控制
? ?7.2 必须考虑传输效率
八、TCP的拥塞控制
? ?8.1 拥塞控制的一般原理
? ?8.2 几种拥塞控制方法
? ?8.3 随机早期检测RED
九、TCP的运输连接管理
? ?9.1 TCP的连接建立
? ?9.2 TCP的连接释放
? ?9.3 TCP的有限状态机
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1.1 进程之间的通信
1.只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到了下三层的功能
2.两个主机进行通信就是两个主机中的应用进程互相通信。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。(IP协议能把分组送到目的主机)
网络层时为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
3.运输层一个重要功能——复用、分用。 (应用进程复用、分用运输层)
1.2 运输层的两个主要协议
1.UDP—User Datagram Protocol 用户数据报协议(无连接):DNS/RIP/DHCP/SNMP/NFS
TCP—Transmission Control Protocol 传输控制协议(面向连接):SMTP/TELNET/HTTP/ FTP
1.3 运输层的端口
问题:为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须使用统一的方法(而这种方法必须与特定操作系统无关)对TCP/IP体系的应用进程进行标识。
为什么不用进程号来区分?(第一,不同操作系统的进程标识符不同;第二,用功能来识别,而不是进程,例如邮件服务功能,而不管具体是哪个进程)
解决方案:在运输层使用协议端口号,即端口。软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。(端口号只具有本地意义,只是为了标识本计算机应用层中各个进程在和运输层交互时的层间接口。)
端口分为两大类:
1)服务器使用的端口号:熟知端口号或系统端口号(0~1023);登记端口号(1024~49151)
2)客户端使用的端口号:49152~65535
2.1 UDP概述
1.UDP只在IP的数据报服务至上增加了很少一点功能,就是复用、分用以及差错检测功能
2.特点
? ?1)无连接
? ?2)尽最大努力交付
? ?3)面向报文 (不合并、不拆分、保留这些报文的边界)
? ?4)UDP没有拥塞控制
? ?5)UDP支持一对一、一对多、多对一和多对多的交互通信
? ?6)UDP的首部开销小,只有8字节
应用进程本身可以在不影响应用的实时性的前提下,增加一些提高可靠性的措施,如采用前向纠错或重传已丢失的报文。
2.2 UDP的首部格式
1.traceroute 让发送的UDP用户数据报故意使用一个非法的UDP端口号,接收方丢弃报文,并由ICMP(网络控制报文协议)发送“端口不可达”差错报文给发送方。
2.计算检验和。IP数据报的校验和只检验IP数据报的首部,但UDP的校验和是把首部和数据部分一起都检验。(12字节的首部+真正的首部+数据来进行校验和的计算)
? ?Q1.为什么计算校验和要加12字节的伪首部
? ?Q2.计算校验和的原理是什么?
3.1 TCP的最主要的特点
1.面向连接的运输层协议(建立连接、传输数据、释放连接)
2.点对点,每一条TCP连接只能有两个端点
3.可靠交付(无差错、不丢失、不重复、并且按序到达)
4.全双工通信。TCP连接的两端都设有发送缓存和接收缓存。
5.面向字节流。(流指的是流入到进程或从进程流出的字节序列;面向字节流:TCP把应用程序交下来的数据看成是一连串的无结构字节流。 接收方的应用程序必须有能力识别接收到的字节流,把它还原成有意义的应用层数据。 因此TCP可以根据窗口值和当前网络状况调整发送的报文长度。划分短一点,或者积累到足够多再发送出去。)
3.2 TCP的连接
1.TCP把连接作为最基本的抽象。
2.每一条TCP连接有两个端点。TCP连接的端点叫作套接字。
? ?套接字soket = (IP地址:端口号)
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。
? ?TCP连接 ::= {socket1, socket2}
理想的传输条件有以下两个特点:
? ?1)传输信道不产生差错
? ?2)不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
实际的网络并不具备,因此:
? ?1)出现差错时,让发送方重传
? ?2)接收方来不及处理时,及时告诉发送方适当降低发送数据的速度
4.1 停止等待协议
1.“停止等待”就是没发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。
2.超时重传。在每发完一个分组就设置一个超时计时器,如果在超时计时器之前收到对方的确认,就撤销已设置的超时计时器。如果未收到,就认为刚才的分组丢失,并重传。
3.三种情况:A发送的分组出错、丢失;B发送的确认丢失;B发送的确认迟到
确认丢失:B丢弃重复的分组,向A重传确认
确认迟到:A丢弃重复的确认,B丢弃重复分组,并向A重传确认
4.常称为自动重传请求ARQ,重传时自动进行的(超时即重传)
5.缺点:信道利用率太低
? ?U=Td/(Td+RTT+Ta)
为了提高传输效率,发送方不使用停止等待协议,而是采用流水线传输。流水线传输就是发送发可连续发送多个分组,不必等每发完一个分组就停顿下来等待对方的确认。(连续ARQ协议和滑动窗口协议)
4.2 连续ARQ协议
1.位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。
2.累积确认:接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认。
3.缺点:Go-back-N (发送前5个分组,第3个分组丢失,后面三个要重传)
1.源端口和目的端口
2.序号。 每个字节都按顺序编号。
3.确认号。 期望收到对方下一个报文段的第一个数据字节的序号。
若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
4.数据偏移。 指出TCP报文段的数据起始处距离TCP报文段的起始处有多远(也即TCP报文段首部长度)。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。
5.窗口。窗口字段明确指出了现在允许对方发送的数据量。窗口值是经常在动态变化着。
6.1 以字节为单位的滑动窗口
1.发送缓存用来暂存:
? ?1)发送应用程序传送给发送方TCP准备发送的数据;
? ?2)TCP已发送但未收到确认德尔数据
2.接收缓存用来存放:
? ?1)按序到达的、但尚未被接收应收程序读取的数据;
? ?2)未按序到达的数据
3.注意三点:
? ?1)A的发送窗口是根据B的接收窗口设置的,但是在同一时刻,由于网络传输的滞后,A的发送窗口并不总是B的接收窗口一样大
? ?2)TCP通常对不按序到达的数据是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程
? ?3)TCP接收方有累计确认功能(不能过分推迟发送确认,否则会导致发送方不必要的重传)
6.2 超时重传时间的选择
1.超时重传时间设置太短,会引起很多不必要的重传;如果设置太长,使网络的空闲时间增大,降低传输效率。
2.新的RTTs = (1-a)x(旧的RTTs) + ax(新的RTT样本),其中RTT样本的时间为:记录一个报文段发出的时间,以及收到相应的确认时间,时间差就是报文段的往返时间RTT。
3.RTO = RTTs + 4 x RTTd,其中RTO为超时重传时间,RTTd是RTT的偏差的加权平均值。
新的RTTd = (1-b) x (旧的RTTd)+ b x |RTTs - 新的RTT样本|
4.一个问题:发送一个报文段,设定的重传时间到了,还没有收到确认。于是重传报文段。经过一段时间,收到了确认报文段。现在的问题是:如何判定此确认报文段是对先发送的报文段的确认,还是对后来重传的报文段的确认?
1)解决方法1,在计算加权平均值RTTs时,只要报文段重传了,就不采用其往返时间样本。
引入的问题:报文段的时延突然增大的情况
2)解决方法2,报文段每重传一次,就把超时重传时间RTO增大一些(一般是2倍)。当不在发生报文段的重传时,再根据加权平均计算。
6.3 选择确认SACK
SACK文档并没有指明发送发应当怎样响应SACK。因此大多数的实现还是重传所有未被确认的数据块。
7.1 利用滑动窗口实现流量控制
1.流量控制:就是让发送方的发送速率不要太快,要让接收方来得及接收。
2.利用滑动窗口机制可很方便地在TCP连接上实现对发送方的流量控制。发送方的发送窗口不能超过接收方给出的接收窗口的数值。
3.死锁情况:B向A发送了零窗口的报文段后不久,B又有了一些缓存空间,因此B向A发送rwnd = 400.然而该报文段在传送过程中丢失。A一直等待B发送的非零窗口的通知,B也一直等待A发送的数据。( 窗口通知不超时重传?为什么? )
解决方法:TCP为每个连接设有一个持续计时器。只要一方收到对方的零窗口通知,就启动计时器。计时器到期后,发送一个零窗口探测报文段,而对方就在确认这个探测报文段时给出了现在的窗口值。若仍为零,收到报文段的一方重新设置持续计时器。
7.2 必须考虑传输效率
1.应用程序把数据传送到TCP的发送缓存后,剩下的发送任务就由TCP来控制了。
2.三种不同的机制来控制TCP报文段的发送时机:
? ?1)TCP维持一个变量,它等于最大报文段长度MSS,只要缓存中的存放的数据达到MSS,就组装成一个TCP报文段发送出去
? ?2)由发送方的应用进程指明要求发送报文段,即TCP支持推送操作
? ?3)发送方设置一个定时器
3.问题一、若用户只发送一个字节,则非常浪费带宽。
解决方法:若发送应用程序把要发送的数据逐个字节地送到TCP的发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文段发送出去。(采用收到确认就发送+并开始缓存的方式;同时当到达的数据已达到发送窗口大小的一半或已达到报文段的最大长度时,就立即发送一个报文段。)
4.问题二、糊涂窗口综合症。接收缓存已满,应用程序一次只读取一个字节,然后向发送方发送确认。
解决方法:让接收方等待一段时间,使得接收缓存已有足够空间容纳一个最长的报文段,或者等到接收缓存已有一半空闲的空间。则接收方就发出确认报文。
8.1 拥塞控制的一般原理
1.拥塞的定义:对资源的需求 可用资源。 在计算机网络中的链路带宽、交换结点中的缓存和处理机等,都是网络中的资源。
2.拥塞解决不能靠解决某一个部分的问题。因为这会将瓶颈转移到其他地方。问题的实质往往是整个系统的各个部分不匹配。只有所有部分都平衡了,问题才会得到解决。
3.拥塞控制与流量控制的比较。
? ?1)拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
? ?拥塞控制有个前提:网络能够承受现有的网络负荷
? ?拥塞控制是一个全局性过程。(发送拥塞时,不知道在某处、什么原因造成的)
? ?2)流量控制:点对点通信量的控制,是个端到端的问题
? ?流量控制:抑制发送端发送数据的速率,以便使接收端来得及接收。
4.寻找拥塞控制的方案无非就是使不等式 “对资源的需求 可用资源 ”不再成立的条件。但是必须考虑该措施带来的其他影响。
5.计算机网络是个复杂的系统。从控制理论的角度来看拥塞控制,可以分为开环控制和闭环控制两种方法。
? ?1)开环控制:设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。但一旦系统运行起来,就不再中途改正。
? ?2)闭环控制:基于反馈环路。
? ?步骤一、监测网络系统以便检测到拥塞在何时、何处发生;
? ?步骤二、把拥塞发生的信息传送到可采取行动的地方
? ?步骤三、调整网络系统的运行以解决出现的问题
8.2 几种拥塞控制方法(只考虑网络拥塞程度,即假设接收方总是有足够大的缓存空间)
1.慢开始和拥塞避免
1)发送方维持一个拥塞窗口。
? ?拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。
? ?控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口增大;如果网络出现拥塞,则减小。
2)慢开始的思路:由小到大逐渐增大拥塞窗口数值。每收到一个对新的报文段的确认,把拥塞窗口增加至多一个MSS的数值。(没经过一个传输轮次,拥塞窗口cwnd就加倍)
轮次:把拥塞窗口所允许发送的报文段都连续发送出去,并收到了对已发送的最后一字节的确认。
慢开始的“慢”并不是指cwnd的增长速率慢,而是指TCP开始发送报文段时先设置cwnd=1(一个MSS数值)。
3)慢开始门限ssthresh
? ?为防止拥塞窗口增长过大,引入一个慢开始门限ssthresh。
? ?当cwnd ssthresh时,使用上述的慢开始算法
? ?当cwnd ssthresh时,停止使用慢开始算法而改用拥塞避免算法
4)拥塞避免算法
思路:让拥塞窗口cwnd缓慢增大,即没经过一个往返时间RTT就把发送方的拥塞窗口cwnd增加1,而不是加倍。
5)慢开始门限的设置
只要发送方判断网络出现拥塞(没有按时收到确认),就把慢开始门限ssthresh设置为出现拥塞时发送方窗口值的一半,然后把拥塞窗口cwnd重置为1,执行慢开始算法。
6)乘法减小和加法增大
乘法减小:网络出现拥塞时,把慢开始门限ssthresh减半(当前的ssthresh的一半),并执行慢开始算法。
加法增大:执行拥塞避免方法
2.快重传和快恢复
1)快重传(尽快重传未被确认的报文段)
首先,要求接收方每收到一个失序的报文段后就立即发出重复确认。(如接收方收到了M1和M2后都分别发出了确认,但接收方没有收到M3但接着收到了M4。此时接收方立即发送对M2的重复确认。)
其次,发送方只要一连收到三个重复确认,就应当立即重传对方尚未收到的报文段M3.
2)快恢复
要点一、当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始门限ssthresh减半。
要点二、由于发送方认为网络很可能没有发生拥塞(因为收到了连续的重复确认),把cwnd设置为慢开始门限ssthresh减半后的值,然后开始执行拥塞避免算法
慢开始算法只在TCP连接建立时和网络出现超时才使用。
3.发送方的窗口
发送方窗口的上限值 = Min [rwnd, cwnd]
8.3 随机早期检测RED(IP层影响TCP层的拥塞控制)
1.网络层的分组丢弃策略
网络层的策略对TCP拥塞控制影响最大的就是路由器的分组丢弃策略。
如果路由器队列已满,则后续到达的分组将都被丢弃。这就叫做尾部丢弃策略。
2.全局同步
由于TCP复用IP,若发生路由器中的尾部丢弃,就可能会同时影响到很多条TCP连接,结果就使许多TCP连接在同一时间突然都进入到慢开始状态。全局同步使得全网的通信量突然下降了很多,网络恢复正常后,其通信量又突然增大很多。
3.随机早期检测RED
使路由器的队列维持两个参数,即队列长度最小门限THmin和最大门限THmax。当每一个分组到达时,RED就先计算平均队列长度Lav。RED算法是:
1)若平均队列长度小于最小门限THmin,则把新到达的分组放入队列进行排队
2)若平均队列长度超过最大门限THmax,则把新到达的分组丢弃
3)若平均队列长度在最小门限THmin和最大门限THmax之间,则按照某一概率p将新到达的分组丢弃。
随机体现在3),在检测到网络拥塞的早期征兆时(即路由器的平均队列长度超过一定的门限值时),就先以概率p随机丢弃个别的分组,让拥塞控制只在个别的TCP连接上进行,因而避免发生全局性的拥塞控制。
4.平均队列长度Lav和分组丢弃概率p
Lav = (1-d) x (旧的Lav) +d x (当前的队列长度样本)
p = ptemp / (1- count x ptemp)
ptemp = pmax x (Lav - THmin) / (THmax - THmin)
TCP时面向连接的协议。
运输连接就有三个阶段:连接建立、数据传送和连接释放
运输连接的管理:使运输连接的建立和释放都能正常地进行。
在TCP连接建立过程中要解决以下三个问题:
? ?1)要使每一方能够确知对方的存在
? ?2)要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳等等)
? ?3)能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配
9.1 TCP的连接建立
1.TCP规定,SYN=1报文段不能携带数据,但消耗一个序号
2.TCP规定,ACK=1报文段可以携带数据,如果不携带数据则不消耗序号
3.为什么A还要发送一次确认?为了防止已失效的连接请求报文突然又传送到B,因而产生错误。
“已失效的连接请求报文段”
A发出第一个连接请求报文段,在网络中滞留超时,又发出了第二个连接请求。但B收到第一个延迟的失效的连接请求报文段后,就误认为是A又发出了一次新的连接请求。于是就向A发出确认报文段,同意建立连接。假定不采用三次握手,那么只要B发出确认,新的连接就建立。此时A不会理睬B的确认,也不会发数据,但B一直等A发送数据,B的许多资源就浪费了。
采用三次握手,A不会向B发送确认,因此B就知道A并没有要求建立确认。
9.2 TCP的连接释放
1.TCP规定,FIN报文段基石不携带数据,也消耗一个序号
2.第二次握手后,TCP通知高层应用程序,因而从A到B这个方向的连接就释放,TCP连接处于半关闭状态
3.为什么A在TIME-WAIT状态必须等待2MSL的时间
? 1)为了保证A发送的最后一个ACK报文段能够到达B。因为ACK可能丢失,此时B可能会超时重传,然后A重传确认,并重新启动2MSL计时器
? 2)防止“已失效的连接请求报文段”出现在本连接中。可以使本连接持续时间内所产生的所有报文段都从网络中消失。
9.3 TCP的有限状态机