计算机网络自顶向下方法--第三章 传输层

一.概述

运输层的第一个关键功能:将网络层在两个端系统之间的交付服务扩展到运行在两个不同端系统上的应用层进程之间的交付服务。 运输层协议是在端系统中而不是在路由器中实现的。

1.IP服务模型 IP:网际协议,它为主机之间提供了逻辑通信。IP的服务模型是:尽力而为交付服务,但它不做任务确保。因此IP被称为不可靠服务

每台主机至少有一个网络层地址,即IP地址。

2.UDP、TCP所提供的服务模型

最基本责任:将两个端系统间IP的交付服务拓展为运行在端系统上的两个进程之间的交付服务。

将主机间交付拓展到进程间交付被称为:运输层的多路复用和多路分解

如果报文段首部包括差错检查字段可以提供完整性检查

UDP所提供的服务:进程到进程的数据交付差错检查。(这两种也是最低限度的运输层服务)

UDP和IP一样,也是一种不可靠的服务。

TCP:提供可靠数据传输拥塞控制

拥塞控制:防止任何一条TCP连接用过多的流量来淹没通信主机之间的链路和交换设备。可以通过调节TCP连接的发送端发送进网络的流量速率来做到。UDP的流量速率是不可调节的。

二.多路复用和多路分解

1.多路复用和多路分解是所有计算机网络都需要的。

2.多路分解(接收):运输层----->定向到具体的套接字----->进程

3.多路复用(发送):不同套接字----->报文段(运输层)----->网络层

4.通过端口号标识唯一的进程。端口号:16比特数字(0~65535之间)  周知端口号:0~1023

5.TCP和UDP多路复用和多路分解的差异

UDP的套接字是由一个二元组来标识的(目的IP,目的port)。

TCP的套接字是由一个四元组来标识的(源IP,源port,目的IP,目的port)。

UDP:不同客户端,但目的IP地址和目的port一样,会被导向到相同的目的套接字。

TCP:不用的IP或port,即使是相同的IP地址和目的port,将会被导向不同的目的套接字。

三.UDP

UDP:无非就是对网络层协议增加了多路复用和多路分解功能而已。

UDP的优点:

1.关于何时、发送什么数据的应用层控制更为精细。没有拥塞控制,适合实时应用程序。

2.无需建立连接。不会引入建立连接(三次握手)的时延,速度比较快。(DNS使用UDP的主要原因)

3.无连接状态。此连接状态包括:接收和发送缓存、拥塞控制参数、序列号、确认号。因此可以支持更多的活跃用户。

4.分组首部开销小。每个TCP报文段有20字节首部,而UDP只有8个字节首部。

5.UDP报文段结构

6.检验和

检验和提供了差错检测功能。用于确定报文从源到目的移动时,其中的比特是否发生了改变。(例如:由于链路中的噪声干扰或者存储在路由器中时引入问题)

计算方法:

发送方的UDP:对报文段中的所有16比特字的和进行反码运算,求和时遇到的任何溢出都会被回卷,得到的结果保存到检验和字段。                      

接收方的UDP:全部4个16比特字(包括检验和)加在一起,结果如果为1111111111111111,那么说明没有引入差错,如果有其中一位为0,说明有引入差错。

 1011101110110101  

 1000111100001100

----------------------------------求和

10100101011000001 ----------------------------------回卷,把多出来的首位1,加到尾部  

 0100101011000010 -----------------------------------反码

 1011010100111101------------------------>最终校验和

7.为什么UDP需要提供差错检验:

在既无法确保逐链路的可靠性(即:不能保证所有的链路都提供差错检测),又无法确保内存中的差错检验的情况下,如果端到端数据传输服务要提供差错检测,UDP就必须在端到端基础上在运输层提供差错检测。----------------------->端到端原则

四.可靠数据传输原理

1.可靠数据传输的实现问题不仅在运输层出现,也会在链路层以及应用层出现。

2.可靠数据传输协议(reliable data transfer protocol):保证数据不损坏不丢失,且按照其发送顺序进行交付。

3.rdt 1.0  经完全可靠信道的可靠数据传输

有限状态机(Finite-State-Machine ,FSM)

4.rdt 2.0(停等协议)  经具有比特差错信道的可靠数据传输------------->使用了差错检测、序号、ACK分组、重传

5.ARQ协议中用了处理比特差错的另外三种协议:

a.差错检测。比如检验和字段

b.接收方反馈。接收方向发送方回送ACK(肯定确认,positive acknowledgment)与NAK(否定确认,negative acknowledgment)分组。0:表示NAK;1:表示ACK

c.重传。发送方重传有差错的分组。

6.  rdt 2.0出现的问题:不能确定回传的ack、nak是否出现差错。

解决方案 rdt 2.1:在数据分组中添加一个数据分组的序号。当发送方收到含糊不清的ACK/NAK分组时,重传当前数据分组(冗余分组),接收方只需检查序号即可确定收到的分组是否是一次重传还是新分组

7. rdt 3.0(比特交换协议)  经具有比特差错的丢包信道的可靠数据传输

关注的问题:1.怎么检测丢包    2.发生丢包后要做什么事    --------------->通过超时时间确定是否丢失分组,超时就重发。

解决丢包问题:让发送方负责检测和恢复丢包工作。等待一定时间,如果没有收到ACK就重传该分组(基于时间的重传机制)。需要一个倒计数定时器,在给定的时间量过期后,中断发送方。

8.流水线(pipelining)协议(用于解决停等协议利用率低的缺点)

流水线协议带来的问题:

1.必须增加序列号的范围。

2.发送方和接收方必须缓存多个分组。

3.序列号范围和对缓冲的要求,取决于数据传输协议如何处理丢失、损坏、超时问题。 解决流水线的差错恢复的两种基本方法:回退N步(Go-Back-N , GBN)选择重传(Selective Repeat,SR)

9.回退N步协议(也称为:滑动窗口协议

N称为窗口长度,因此GBN协议也被称作:滑动窗口协议。该长度是由流量控制拥塞控制机制决定的。

TCP有一个32比特的序号字段,TCP序号是按字节流中的字节进行计数的,而不是按分组计数。

GBN:在发送端和接收端都是使用累积确认

发送方的累积确认:发送方如果正确接收序号为n的分组,那么表明序号小于n分组都已经被正确接收。

接收方的累积确认:接收方一次交付一个分组给上层,如果分组k已经接收并交付,这所有序号比k小的分组也已经交付。

在GBN协议中,接收方丢弃所有失序分组。因为接收方必须按序将数据交付给上层。(缺点:丢弃一个正确接收分组,随后对该分组的重传也许会丢失或出错,因此甚至需要更多的重传。优点:接收简单,即接收方不需要缓存任何失序分组)

10.选择重传

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

SR接收方将确认一个正确接收的分组而不管其是否按序。失序的分组将被缓存直到所有失序的分组皆被接收才可以将一批分组按序交付给上层

窗口长度必须小于或等于序号空间的一半

五.面向连接的运输 :TCP

1.TCP连接一般由客户端发起。

2.TCP将数据引导到发送缓存中,发送缓存是在三次握手初期设置的缓存之一。然后TCP再它方便的时候以报文段的形式发送数据。TCP从缓存中取出的数据量受限于最长报文段长度(Maximum Segment Size,MSS),而MSS由最大链路层帧长度(即最大传输单元(Maximum Transmission Unit,MTU))来设置。该MSS要保证一个TCP报文段加上TCP/IP首部长度(通常40字节)适合单个链路层帧,以太网和PPP链路层协议都具有1500字节的MTU,因此MSS的典型值为1460字节

MTU:从源到目的地的所有链路上发送的最大链路层帧。

MSS:报文段李应用层数据的最大长度,而不是指包括TCP首部TCP报文段的最大长度

3.TCP报文段结构

TCP报文段由首部字段(20字节)和一个数据字段(最大大小由MSS决定)组成。数据字段包含一块应用数据。

序号和确认号是可靠传输服务的关键字段。

序号:该报文段首字节的字节流编号。(TCP把数据看出一个无结构的、有序的字节流。序号是建立在传输的字节流之上的,而不是建立在传送的报文段的序列之上。)

确认号:主机A的填充进报文段的确认号是主机A期望从主机B收到的下一个字节的序号。

Telnet:用于远程登录的应用层协议,运行在TCP之上。它是一个交互式应用。Telnet发送数据时没有加密(现在基本上都是使用SSH协议来进行远程登录了)。其报文通常只有一个字节,由于首部占20个字节,所以Telnet发送的报文段通常只有21个字节。

即使没有数据,也要有序号,序号字段是必填的。

4.往返时间的估计与超时

超时时间的设置:超时时间必须大于往返时间(RTT),否则会造成不必要的重传。

问题1.刚开始应该如何估计RTT?

样本RTT(SampleRTT)、EstimatedRTT(SampleRTT均值)、DevRTT(RTT偏差,用于估算SampleRTT和EstimatedRTT的偏离程度)

问题2.超时时间应该设置多大?  

5.可靠数据传输

六.拥塞控制

TCP 的拥塞控制主要来避免两种现象,包丢失和超时重传。一旦出现了这些现象就说明,发送速度太快了,要慢一点。TCP的拥塞控制主要原理依赖于一个拥塞窗口(cwnd)来控制。 

  1. 慢启动
  2. 拥塞避免
  3. 快速恢复

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值