当前位置:文档之家› 网络与分布式计算复习笔记

网络与分布式计算复习笔记

第三章运输层3.1概述:1,运输层协议为不同主机上的应用进程彼此之间提供了逻辑通信.2,运输层协议是在端系统而不是网络中的路由器中实现的。

也只工作在端系统。

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

3,网络应用程序可以使用多种运输层协议。

因特网有TCP和UDP两种运输层协议。

4,运输层位于网络层之上,为运行在不同主机上的应用程序之间提供了逻辑通信;而网络层则提供了主机之间的逻辑通信。

5,运输层提供的服务受到了底层网络协议的服务模型的限制。

6,因特网的网络层协议IP协议的服务模型是尽力而为的服务,它不做任何确保,不保证报文段的按序交付,更不保证报文段中的数据完整性。

是不可靠服务7,TCP和U DP最基本的任务是,将两个端系统间IP的交付服务扩展为运行在两个端系统上的进程之间的交付服务。

8,运输层的多路复用与多路分解:将主机间交付扩展到进程间交付。

9,进程间数据交付和差错检查是两种最低限度的运输层服务。

也是UDP所能提供的仅有的两种服务。

10,TCP通过流量控制、序号、确认和定时器等技术,能抱着正确而有序地将数据从发送进程交付给接收进程。

TCP还提供拥塞控制功能。

3.2 多路复用与多路分解1,接收主机中的运输层实际上并没有把数据直接交付给进程,而是通过一个中间的套接字来传递;每个套接字都有唯一的标识符,其格式决定了它是UDP还是TCP套接字。

2,多路分解demultiplexing:将运输层报文段中的数据交付到正确的套接字的工作。

运输层通过检查每个运输层报文段的几个字段来标识套接字,然后将报文段定向到该套接字。

多路复用multiplexing:从在源主机的不同套接字中收集数据,并为每个数据块封装上首部信息(在多路分解时使用)从而生产报文段,然后将报文段传递到网络层的工作。

多路复用的要求:1,套接字有唯一的标识符;2,每个报文段有特殊字段来指示该报文段所要交付的套接字。

这些特殊字段是源端口号字段(作为“返回地址”的一部分,在回发报文段时使用)和目的端口号字段。

端口号有16比特;0到1023范围的端口号成为周知端口号是受严格限制,保留给一些周知的应用层协议使用的。

多路分解的实现:主机上的每个套接字被分配一个端口号,当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。

然后报文段中的数据通过套接字进入其所连接的进程。

3,无连接的多路复用与多路分解DatagramSocket mySocket = new DatagramSocket(19157); //端口号也可以不指定,运输层//会自动为其分配一个端口号(1024到65535之间)。

一个UDP套接字是由一个包含目的IP地址和目的端口号的二元组来全面标识的。

如果两个UDP报文段有不同的源IP地址或端口号,但具有相同的目的IP地址和端口号,它们将通过相同的套接字被定向到相同的目的进程。

4,面向连接的多路复用与多路分解TCP套接字与UDP套接字不同在于,它是由一个四元组标识的(源IP地址,源端口号,目的IP地址,目的端口号)。

如果两个TCP报文段具有不同的源IP地址或源端口号,它们将被定向到两个不同的套接字,除非TCP携带了初始创建连接的请求。

在使用多线程时,多个套接字连接到相同的进程。

即进程与套接字不是一一对应的。

3.3 UDP 无连接运输优点:1,应用层能更好地控制要发送的数据和发送时间;2,无需连接建立;3,无连接状态;分组首部开销小(TCP20个,UDP8个字节)。

UDP潜在的一个严重问题是,因为它没有拥塞控制,将可能引发UDP发送方和接收方的高丢包率,并挤垮有拥塞控制的TCP会话。

使用UDP的应用也是可以实现可靠的数据传输的,这需要在应用程序自身中建立可靠性机制来完成。

UDP报文段结构:源端口号,目的端口号,长度,检查和(提供差错检测,但不进行修复),报文。

UDP检查和:对报文段中所有16比特字的和进行1的补运算,求和时遇到的任何溢出都被丢弃。

用于检查和确定当UDP报文段从源到目的地时,其中的鼻涕是否发生了变化。

UDP并不提供差错恢复。

其差错检查遵循了端到端的设计原则。

3.4 可靠数据传输的原理1,rdt 1.0 完全可靠信道上的可靠数据传输。

2,rdt 2.0 具有比特差错信道上的可靠数据传输:使用了差错检查、肯定确认与否认;重传。

是一种停等协议。

发送放不会发送一块新的数据,直到发送方确认接收方已正确接收当前分组为止。

缺陷:ACK 或NAK分组受损的可能性没有考虑到。

解决方案:首先,引入冗余分组,即只要接收到含糊不清的ACK或NAK,就要求重传数据。

然后,在数据分组中添加一个新字段,让发送方对其数据分组进行编号,即将发送数据分组的序号放在该字段。

这样,接收方只需检查序号即可确定收到的分组是否一次重传,或是新的分组。

Rdt2.2:取消了NAK的使用,而使用冗余ACK3,rdt 3.0 在具有比特差错的丢包信道上的可靠数据传输。

使用基于时间的重传机制。

只要到达一定的时间,则不论是分组丢失(可能是发送过去的分组丢失了,也可能是接收方返回的ACK丢失了),还是超时(发送分组、处理分组、返回ACK的时间过长),发送方都进行重传动作。

这时如果产生冗余分组,利用序号的方法即可解决(在rdt2.0中以提出)4,可靠数据传输协议的要点:检查和(差错检查)、序号(解决冗余分组)、定时器(定时重传)、肯定确认和否认。

5,Rdt3.0还存在一个核心问题:它是一个停等协议。

性能不够好。

解决方案:使用流水线技术,允许发送放发送多个分组而无需等待确认。

流水线引入的问题:a,必须增加序号范围,因为每个传输的分组必须有一个唯一的序号。

b,协议的发送和接收方也许必须缓存多个分组。

c,解决流水线的差错恢复有两种基本方法:回退N步和选择重传。

6,回退N步协议go-back-N,允许发送方传输多个分组而不需等待确认,但它也受限于在流水线中未确认的分组数布恩那个超过最大允许数N。

GBN发送方必须响应三种类型的事件:a,上层的调用。

需要先检查发送窗口是否已满。

b,收到ack。

对于序号为N的分组的确认用于累积确认。

c,超时事件。

发送方重发所有已发送但还未被确认的分组。

在GBN中接收方丢弃所有失序分组。

因为接收方必须按序将数据交付给上层。

7,选择重传:通过让发送方仅重传那些它怀疑在接收方出错(丢失或受损)的分组从而避免了不必要的重传。

这种个别的、按需的重传要求接收方逐个地确认正确接受的分组。

SR 接收方将确认一个正确接受的分组而不管其是否有序。

失序的分组将被缓存直到丢失分组(即序号更小的分组)都被收到为止。

8,总结:p1499,通过假定一个分组在网络中“生存”的时间不会超过某个固定最长时间来确保一个序号在“确信”任何先前发送的序号为X的分组都不再在网络中之前不被再重新使用3.5 面向连接的运输:TCP1,面向连接服务:必须握手,建立确保数据传输所需的参数。

2,连接状态只保存在两个端系统。

只在端系统中运行。

3,提供点对点的全双工服务。

4,Socket clientSocket = new Socket(“hostname”,portNumber).5,MSS,最大报文段长度,TCP可从缓存中取出并放入报文段中的最大数据量(不包括TCP首部)。

MTU,最大传输单元。

6,TCP连接包括:一台主机上的缓存、变量和与另一个进程连接的套接字,以及另一台主机上的一套缓存、变量和与一个进程连接的套接字。

在这两台主机之间的网络要素(路由器、交换机和中继器)中没有为该连接分配任何缓存和变量。

7,TCP报文段结构:(首部字段+数据字段(包含一块应用数据))MSS限制了报文段的数据字段的最大长度;当TCP发送个大文件时,通常将文件分割成长度为MSS的若干块。

报文段结构:首部:源和目的端口号,用于多路分解/复用送至或来自上层的数据;检查和字段32比特的序号字段和32比特的确认号字段。

被TCP发送方和接收方用于实现可靠传输服务,是很关键的部分。

一个大文件被分成很多MSS大小的报文段,每个报文段有一个序号,这个序号表示的也就是数据字段首字节的序号。

确认号表示接收方期望从发送方接收到的下个字节的序号。

16比特接受窗口,用于流量控制。

4比特首部长字段,指示了以32比特字为单位的TCP首部长度。

可选与变长的选项字段。

导致首部长度可变。

6比特标志字段URG(紧急)ACK(指示确认字段中的值有效)PSH(接收方应该立即将数据交给上层)RST SYN FIN(这三者用于建立和拆除连接)8,往返时延的估计与超时:1,估计往返时延:SampleRTT,从该报文段被发出(交给IP)到其确认被接收到的时间量。

EstimateRTT=(1-a)*EstimateRTT + a*SampleRTTDevRTT(往返时延偏差)=(1-β)*(DevRTT+β*|SampleRTT-EstimateRTT|)表示往返时延的波动情况。

2,设置和管理重传超时间隔TimeoutInterval=EstimateRTT+4*DevRTT。

9,TCP可靠数据传输1,TCP发送方与传输和重传有关的3个事件:(高度简化版本)A,从上层应用程序接受数据:将数据封装在一个报文段中,并将其交给IP.B,超时事件。

TCP通过重传引起超时事件的报文段来响应。

随后重启计时器。

C,一个来自接收方的确认报文段(ACK)到达。

TCP将ACK的值与变量sendBase(最早未被确认的字节的序号)比较,采用累积确认。

如果还有未被确认的报文段,则需要重启计时器。

2,加倍超时时间间隔在TCP实现中,每当超时事件发生时,TCP重传具有最小序号的还未被确认的报文段,但是每一次TCP重传都会把下一次的超时时间间隔设为先前之的两倍,而不是根据EstimateRTT和DevRTT来计算。

3,快速重传:使用冗余ACK,当接收方接收到一个大于期望序号的报文段时,它检测到了数据流中的一个间隔,即有报文段丢失。

它就对按序接收到的最后一个报文段发送一个冗余ACK,当发送方接收到3个冗余ACK,就进行快速重传,即在该报文段的定时器过期之前就进行重传。

4,TCP是GBN还是SR?TCP协议的一种修改使用了选择确认,它允许接收方有选择地确认失序报文段,而不是累积地确认最后一个正确接收的报文段。

这种机制与选择重传相结合(跳过那些已被接收方选择性确认过的报文段的重传)。

5,流量控制:消除发送方使接收方缓存溢出的可能性。

TCP通过让发送方保留一个被称为接受窗口(received window)的变量来提供流量控制。

在接收方,因为TCP不允许已分配的缓存溢出,LastByteRcvd-LastByteRead<=RcvBuffer RcvWindow=RcvBuffer-[LastByteRead-LastByteRcvd].接收方把RcvWindow的当前值放入它发给发送方的每个报文段接受窗口字段中,以通知发送方它在该链接的缓存中还有多少可用空间。

相关主题