【计算机网络】传输层

2016-10-19  本文已影响200人  666真666

【计算机网络】传输层

传输层协议概述

传输层协议为运行在不同host上的进程提供了一种逻辑通信机制。使得端到端不需要关心中间的过程,直接可以看作是可以通信的进程。

网络层和传输层的区别

网络层是为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信。

传输层对收到的报文进行差错检测,IP数据报首部中的校验和字段只检验头部是否出现差错,而不检查数据部分。

传输层位于网络层之上,依赖于网络层服务,对网络层服务进行增强,向高层屏蔽了下面网络核心的细节。它使应用进程看见的就好像在两个运输层实体之间有一条端到端的逻辑通信信道。

传输层的协议

两个对等运输实体在通信时传送的数据单元叫做运输协议数据单元TPDU,但在TCP/IP体系中,TCP叫报文段,UDP叫数据报。

两种服务均不保证:延迟、带宽

常见应用使用的协议

传输层的端口

在协议栈层间的抽象的协议端口是软件端口,硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体间进行层间交互的一种地址。端口号只具有本地意义。

两大类端口号:

多路复用和多路分用

如果某层的一个协议对应直接上层的多个协议/实体,则需要复用/分用。

接收端进行多路分用:传输层依据头部信息将接收到的Segment交给正确的Socket,即不同的进程
发送端进行多路复用:从多个Socket接收数据,为每块数据封装上头部信息,生成Segment,交给网络层。

分用的流程:

无连接分用:

面向连接的分用:

端口分用

用户数据包协议UDP

UDP概述

用户数据包协议UDP只在IP的数据报服务上增加了很少一点的功能,就是复用和分用的功能记忆差错检测功能。

UDP的特点

UDP面向报文

UDP的首部格式

UDP有两个字段:数据字段和首部字段。

首部字段有8字节:

UDP首部

如果接收方UDP的目的端口号不正确,就丢弃该报文,并有ICMP发送“端口不可达“差错报文给发送方。

UDP 校验和(checksum)

目的:检查UDP段在传输中是否发生错误(如位翻转)

发送方:

接收方:

计算校验和

TCP 概述

TCP主要特点

TCP面向流的概念

TCP连接

TCP 把连接作为最基本的抽象。

每条TCP连接都有两个端点,这两个端点叫做套接字socket。端口号拼接到IP地址即构成了socket。

可靠传输的工作原理

理想传输条件的两个特点:

停止等待协议

”停止等待“就是每发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。

无差错情况
停止等待协议
出现差错

如果接收方接收到数据时,检测出了错误,就丢弃数据,其他什么都不做,也可能是数据报在传输过程中丢失了。这两种情况,接收方不发送任何信息。

可靠传输协议是这么设计的:发送方超过一段时间仍然没有收到确认消息,就认为刚发送的分组丢失了,因而重传前面发送过的分组,这就是超时重传

完成超时重传,就要每发送完一个分组设置一个定时器。如果在超时计时器到期之前就收到了对方的确认,就撤销已设置的超时计时器。

注意点:

确认丢失和确认迟到

确认丢失时,发送方重传数据,接收方丢失这个重复的分组,并且要再次向发送方发送确认

确认丢失和确认延迟

上诉的这种可靠传输协议称为自动重传请求ARQ

信道利用率

停止等待协议的优点就是简单,但缺点就是信道利用率低。

流线线协议

连续ARQ协议、滑动窗口协议

为提高传输效率,可采用流水线传输,采用连续ARQ协议滑动窗口协议,滑动窗口协议较复杂,是TCP协议的精髓,后面介绍。

连续ARQ协议,发送方维持发送窗口,意义是:位于发送窗口内的5个分组都可以连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。发送方每收到一个确认,就把发送方窗口向前滑动一个分组的位置。

连续ARQ协议原理

接收方一般采用累积确认的方式,接收方不必对收到的分组逐个发送确认,而可以在收到几个分组后,对按序到达的最后一个分组发送确认,表示到这个分组为止的所有分组都已正确收到了。

累计确认优点容易实现,缺点不能向发送方反映出接收方已经确认收到的所有分组的信息。比如,发送方发送了5个分组,但中间的第三个丢失了,这时接收方只能对前两个分组发出确认,发送方无法知道后面三个分组的下落,只好把后面的三个分组都重发,浪费网络资源。

滑动窗口协议

Selctive Repeat 协议

TCP报文段的首部格式

TCP首部的20个字节是固定的,后面4N字节是根据需要而增加的。

TCP首部结构

各个字段:

TCP可靠传输的实现

以字节为单位的滑动窗口

举例:A收到B发来的确认报文段,其中窗口是20字节,确认号是21(表明B期望的下一个序号是31,30之前的数据已经收到了),下图就是A构造的自己的发送窗口

发送窗口:在没有收到B的确认的情况下,A可以连续把窗口内的数据都发送出去,凡是发送过的数据,在未收到确认之前都必须暂时保留,以便超时重传时使用。

发送窗口的位置由窗口前沿和后沿的位置共同确定。前沿可能向后收缩,发生在对方通知的窗口缩小。

缓存空间和序号空间都是有限的,并且都是循环使用的。

发送缓存用来暂时存放:

接收方缓存:

超时重传时间的选择

TCP采用一种自适应的算法,它记录一个报文段发出的时间,以及收到相应的确认的时间,这两个时间之差就是报文段的往返时间RTT。

选择确认SACK

若收到的报文段无差错,只是未按序号,中间缺少一些序号的数据,那么能否只重传未正确达到的数据,选择确认就是一种处理方法。

如果要使用选择确认,在建立连接时,在TCP首部增加”允许SACK“的选项。

TCP的流量控制

利用滑动窗口实现流量控制

流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。在建立连接时,接收方要告诉发送方自己的接收窗口,发送方的发送窗口不能超过接收方给出的接收窗口的数值。

持续计时器(防止非零窗口的通知丢失):只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅1字节),而对方就在确认这个探测报文段时给出了现在的窗口值,如果窗口仍然为0,那就重置这个持续计时器,如果窗口不是0,那么死锁的僵局就打破了。

考虑传输效率

TCP报文段发送时机的三种机制:

TCP拥塞控制

拥塞控制的一般原理

若网络中的许多资源同时呈现供应不足,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降,这种情况叫做拥塞。

吞吐量:网络中的数据是由一个个数据包组成,防火墙对每个数据包的处理要耗费资源。吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。其测试方法是:在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。吞吐量测试结果以比特/秒或字节/秒表示。

拥塞控制就是防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不止过载。流量控制往往指点对点通信量的控制,是个端到端的问题,流量控制就是要做抑制发送方数据的速率,以便接收到来得及接收。

造成拥塞的原因很复杂:

网络吞吐量与负载的关系

拥塞控制是一个动态的问题,分为开环控制闭环控制两种方法。开环控制方法就是在设置网络事先将有关拥塞的因素考虑周到,力求网络在工作时不产生拥塞。

闭环控制的措施:

几种拥塞控制方法

四种算法:

慢开始和拥塞避免

发送方维持一个拥塞窗口的状态变量,拥塞窗口的大小取决于网络的拥塞程序,并动态变化,发送方让自己的发送窗口等于拥塞窗口。只要网络没出现拥塞,拥塞窗口就再增大一些。

慢开始算法:由小到大逐渐增大发送窗口,通常在刚刚开始发送时,先把拥塞窗口cwnd设置为一个最大报文段MSS,每收到一个确认后,拥塞窗口增加至多一个MSS,每经过一个传输轮次,拥塞窗口cwnd就加倍。发生拥塞(计时器超时还未收到确认)就将拥塞窗口值减到1,再开始慢开始算法。

拥塞避免算法:慢开始之后,进入拥塞避免阶段,拥塞窗口每次增加1,按线性规律慢慢增长。

快重传和快恢复

快重传:要求接收方每收到一个失序的报文段 就立即发出重复确认,尽早重传未确认的报文段

TCP的连接管理

TCP连接过程解决的问题:

TCP连接建立

三次握手建立TCP连接

流程:

说明:A还要发送一次确认,是为了防止已失效的连接请求报文段突然又传送了B,因而产生错误。具体情况:A发出第一个连接请求,但延迟了,A就重发了一个请求,第一个请求延误到连接释放后的某个时间才到达B,这本来是一个失效的连接请求,但B以为是一个新的请求,就会给A一个确认,如果没有第三次握手,那么连接就建立了,会造成资源浪费,有了第三次握手,A并不会理财B的确认,这样连接就不会建立。

TCP连接释放

四次握手TCP连接释放

流程:

TCP的有限状态机

TCP有限状态机
上一篇 下一篇

猜你喜欢

热点阅读