计算机网络自顶向下-运输层

本文详细介绍了运输层在网络通信中的作用,包括TCP和UDP协议的区别,多路复用与多路分解原理,UDP的无连接特性及其优点,以及TCP的可靠数据传输机制,包括连接建立、拥塞控制和连接管理。重点讲解了TCP的三次握手、窗口机制和超时重传策略。
摘要由CSDN通过智能技术生成

一、概述

1.运输层位于应用层和网络层之间,是分层的网络体系结构重要部分为运行在不同主机上应用进程提供直接的通信服务。运输层协议是运行在端系统中。运输层将从发送应用程序进程接收到的报文转换成运输层分组。该分组被称为报文段。报文段生成方法是将应用报文分成多个小块,为每一块加上运输层首部以生成运输层报文段。然后发送给网络层封装成网络层数据报发送到目的地。

2.运输层协议:TCP和UDP。

3.运输层和网络层关系:网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上应用进程提供逻辑通信。运输层协议将来自应用程序的报文移动到网络边缘(网络层)。

4.IP:网络层有一个协议叫IP(网际协议),IP为主机之间通信提供了逻辑通信。IP协议是不可靠服务,因为它不保证报文段按序交付、完整性。每一台主机都有一个IP地址。

5.UDP和TCP:他们俩最基本的责任是将两个端系统间IP交付服务扩展为运行在端系统上两个进程之间的交付服务。将主机交付扩展到进程间交付被称为运输层的多路复用与多路分解。进程到进程的数据交付和差错检查是两种最低限度的运输层服务,也是UDP唯一可以提供的服务。UDP套接字由目的IP地址和目的端口号标识。TCP由源端口和源IP以及目的端口和目的IP标识。
UDP常见应用:远程文件服务器、流式多媒体、网络电话、网络管理、DNS
TCP常见应用:电子邮件、远程终端、web、文件传输。

二、多路复用与多路分解

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

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

运输层多路复用要求:1.套接字有唯一标识符。2.每个报文段有特殊字段来指示该报文段所要交付到的套接字(端口号)。

分解服务原理:在主机上的每个套接字能够分配一个端口号,当报文段到达主机时,运输层检测报文段中的目的端口号,并将其定向到对应的套接字。然后报文段中的数据通过套接字进入其所连接的进程。

端口:目的端口用来请求标识接收进程,源端口用来响应标识接收进程

1.无连接的多路复用和多路分解原理:主机A有一个进程具有UDP端口19157,它发送一个应用程序数据块给位于主机B的一个进程,该进程具有UDP端口46213,A的运输层创建一个运输层报文段,其中包括应用程序数据段、源端口号(19157)目的端口号(46123)和另外两个值。然后运输层将得到的报文段传递到网络层,网络层将报文封装到一个IP数据报中,并尽力将报文交付给接收主机B。B运输层就检查该报文段中的目的端口号(46123)并将报文交付给端口46123所标识的套接字。

2.WEB服务器与TCP:高性能的web服务器通常只有一个进程,但是为每个新的客户连接创建一个具有新套接字的新线程。如果web服务器此时使用非持续性HTTP,那么每次请求/响应都会打开/关闭一个连接,这会非常影响服务器的性能,所以此时选择持续性的HTTP。

三、无连接运输:UDP

为什么udp是无连接的:因为udp在发送报文之前,发送方和接收方的运输层没有进行握手。

UDP的优点

  • 实时应用:只要应用程序将数据传给UDP,那么它就可以立即打包发送,而且一些实时应用不希望数据延迟而且可以容忍一些数据的丢失。(视频电话)。

  • 无需连接:TCP需要三次握手,UDP不需要,所以这就会比TCP快很多,大大减少延迟。

  • 无连接状态:不需要维持连接状态就可以支持更多的客户。

  • 分组首部开销少。TCP首部有20个字节,而UDP只有8个。

1.UDP报文结构:如图:
在这里插入图片描述

源/目的端口号:使数据交付给运行在端系统的应用进程。
长度:UDP报文段的字节数。
检验和:接收方用来检查该报文段中是否存在差错。

2.UDP检验和:UDP检验和提供差错检测功能。检验用于确定当UDP报文段从源到目的过程中比特是否发生了变化。如果检测出受损报文段则丢弃。

四、可靠数据传输原理(重点)

可靠数据传输:为上层实体提供一条可靠的信道进行传输,借助于这条信道,传输数据比特不会受到损坏、丢失,且所以数据都是按其顺序进行交付。

1.构造可靠数据传输协议

检验和、序号、定时器、肯定、否定。

1.自动重传请求协议:差错检测、接收方反馈、重传。

2.冗余数据分组:处理信道中冗余的数据。

3.倒计时定时器:超时重传。

2.流水线可靠的数据传输协议

流水线:不以等停方式运行,允许发送方发送多个分组而无需等待确认。但是有以下影响。

  • 增加序号范围,每个组一个序号。

  • 发送方和接收方需要缓冲多个分组。

  • 处理丢失、损坏、延迟的数据方法:回退N步、和选择重传。
    回退N步:流水线中未确认的分组数不得超过N过。N被称为窗口长度。滑动窗口协议(GBN)
    选择重传(SR):让发送方仅仅重传那些怀疑接收方出错的分组而避免不必要的重传。
    SR发送方
    1.从上层收到数据:从上层收到数据之后,SR发送方检查一下可用于该分组的序号,如果序号位于发送方的窗口内,则将数据打包发送,否则将数据缓存。
    2.超时:定时器再次被用来防止丢失分组
    3.收到ACK:SR发送方将被确认的分组标记为已接收,如果是未确认,则发送分组。
    SR接收方
    1.序号在内的分组被正确接收:一个选择ACK被回送给发送方。如果该分组以前没收到过则缓冲该分组。如果该分组序号与以前缓冲的序号是连续的,则将分组交付给上层。

3.可靠数据传输机制总结

	1.检验和:检测在一个传输分组中的比特错误。
	2.定时器:用于超时重传一个分组。
	3.序号:用于从发送方流向接收方的数据分组按序编号
	4.确认:接收方告诉发送方一个分组或一组分组已经正确接收。
	5.否定确认:接收方告诉发送方一个分组或一组分组未正确接收
	6.窗口、流水线:

4.面向连接的运输:TCP

1. TCP连接:
面向连接:是因为在进程发送数据前先进行握手。即他们必须相互发送预备报文段,以建立确保数据传输的参数。
全双工:可以同时收发
点对点:单个发送方和单个接收方之间的连接。
三次握手:客户首先发送一个特殊的TCP报文段,服务器用另一个特殊的TCP报文段回应,最后客户再用第三个特殊报文段响应,前两个不承载有效载荷,也就是应用层数据,第三个报文段承载有效载荷。
TCP连接组成:如图
在这里插入图片描述

MSS: 最大报文段长度:报文段中应用层数据最大长度
MTU:最大传输单元:本地发送主机发送的最大链路层帧长度。

客户进程通过套接字将数据放到发送缓冲中,tcp将数据(受限于MSS)取出并放入到报文段中,另一端接收到数据放到接收缓冲中。

2. TCP报文段结构:首部一般20字节 如图:
在这里插入图片描述

序号和确认号:32比特,用于发送方和接收方实现可靠数据传输。
接收窗口:16比特,用于流量控制
首部长度:4比特,tcp首部长度
选项字段:用于发送方和接收方协商最大报文段长度(MSS)
标志字段:6比特。ACK:确认。
RST、SYN、FIN、用于连接建立和拆除。
PSH:表示接收方将数据交付给上层。
URG:发送方报文段被上层设置为’紧急‘的数据
CWR、ECE:拥塞控制

3. 往返时间估计与超时

RTT:报文从被发出到该报文段的确认被收到之间的时间。
估计RTT:由于路由器的拥塞控制和端系统的负载变化,所以每个RTT是无法给定固定值得。因此一旦有新的RTT来就有以下公式来评估平均RTT(ERTT)

ERTT = (1 - a) * ERTT + a * RTT;  其中a=0.125
			
DRTT:RTT的偏差值: DRTT = (1 - b) * DRTT + b * |RTT - ERTT|;  其中b=0.25;
		
设置和管理重传超时时间间隔:T = ERTT + 4 * DRTT; 超出此时间就进行重传。		

4.可靠数据传输

接收端的字节流与发送端的字节流是完全相同的。
1.超时时间加倍:TCP重传具有最小序号的未被确认的报文段,每次TCP重传都会将定时器时间间隔设置为原先的两倍。
2.快速重传:如果发送方收到接收方对相同数据的3个冗余ACK,则立即执行快速重传。冗余ACK:就是再次接收到之前已经接收到的ACK。

5.流量控制

发送方发送速率与接收方读取速率相匹配。(与拥塞控制不同)发送方和接收方都有缓冲区,当应用程序读取数据相对缓慢,而发送方发送 数据太多、太快时就会造成接收缓冲区溢出。因此TCP提供了流量控制服务,以消除溢出的情况。

TCP通过发送方维护一个称为接收窗口的变量来提供流量控制。接收窗口用于给发送方一个指示-该接收方有多少可用空间。当接收方缓冲满了之后,发送方继续发送一个字节的报文段,这些报文段会被接收,直到接收方将缓冲清空,并且在确认报文段中包含一个非0的值。

6.TCP连接管理

当一台主机想与另一台主机建立一条TCP连接时候,客户主机应用程序通知客户TCP。下面三步也叫三次握手。如图:
在这里插入图片描述

  1. 第一步:客户端的TCP首先向服务端的TCP发送一个特殊的TCP报文段。该报文段不包含应用层数据。但是在报文段首部有一个标志位(SYN)被置1.因此这个特殊的报文段被称为SYN报文。客户端会随机选择一个初始序号放在首部中的序号字段中,该报文被封装在一个IP数据报中被发送。

  2. 第二步:一旦包含了TCP SYN报文段的IP数据报到达服务器主机,服务器就会提取TCP SYN报文段,为该TCP连接分配TCP缓冲和变绿,并向客户端发送允许连接的报文段。允许连接的报文段也不包含应用层数据,但是包含3个信息,1.SYN比特置1。2.TCP报文段首部的确认号字段被+1。3.服务器选择自己的初始序号。该报文段被称为SYNACK报文段。

  3. 第三步:在收到SYNACK报文段后,客户也要给该报文段分配缓冲和变量,客户主机向服务器发送另外一个报文段,该报文段是对服务器的允许连接的报文段进行了确认,此时将服务端的序号+1。因为此时已经建立连接,所以SYN置0。此报文可以携带应用层的数据报。

完成了上面三步之后客户端和服务器之间就可以相互发送报文了,以后的每个数据报中SYN都被置0。参与连接的两个进程都可以终止连接(FIN比特置1)。当连接结束后就会释放资源。

关闭连接:当客户端想要关闭连接时,客户端TCP发送一个带有FIN置1的TCP报文段,并进入FIN_WAIT_1状态,进入FIN_WAIT_1状态的客户端此时等待来自服务端的确认报文,当收到确认报文之后客户端进入FIN_WAIT_2状态,进入FIN_WAIT_2状态的客户端等待服务端FIN比特被置1 的报文,当收到该报文之后,客户端TCP对服务器的报文进行确认,然后进入FIN_WAIT状态,进入FIN_WAIT状态之后一定时间正式关闭连接。如图:
在这里插入图片描述

7.拥塞控制原理

1.拥塞原因

  • 当分组的到达速率接近链路容量时,分组经历巨大的排队时延。

  • 当发送方遇到大时延时候就会进行不必要的重传会引起路由器利用其链路带宽来转发不必要的分组。

  • 当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组而使用的传输容量最终被浪费。

2.控制方法

  • 端到端拥塞控制:TCP的丢失(超时或3次冗余ACK)B=被认为是网络拥塞的一个迹象,TCP会相应减少其窗口长度。使用增加的往返时延作为网络拥塞程度增加的指示。

  • 网络辅助的拥塞控制:路由器向发送方提供网络中拥塞状态的显式反馈信息,用一个比特来指示链路中额拥塞情况。

8.TCP拥塞控制

TCP所采用的是让每一个发送方根据所感知到的网络拥塞控制程度来限制其能向连接发送流量的速率。如果一个TCP发送方感知从目的地之间路径没有拥塞则增加发送速率,如果有则缓减发送速率。

1.TCP如何控制速率:运行在发送方的TCP控制机制跟踪一个额外的变量,即拥塞窗口,它对一个tcp发送方能够向网络中发送流量的速率进行限制。一个发送方未被确认的数量不会超过,拥塞窗口和接收窗口的最小值。因为限制了未被确认数量就间接控制了发送速率。

2.如何感知拥塞:当一条链路拥塞时就会出现路由器缓冲溢出,这时候就会有丢包产生,接着就会引起发送方的超时和3个冗余ACK。这时候发送方就感知到了拥塞。

3.控制发送速率算法:TCP拥塞控制算法

  1. 慢启动:当一条TCP连接开始时候,拥塞窗口通常设置一个MSS较小的值,当报文被确认之后就增加一个MSS值,并且发送两个最大长度的报文,这样拥塞窗口变为4个MSS,就这样下去每一次速率都会翻倍。当发生超时丢包时候就会重新启动慢启动,但是这次慢启动初始值拥塞窗口是上次遇到拥塞时值得一半。接下来进入避免拥塞状态。

  2. 拥塞避免:一旦进入拥塞避免状态,拥塞窗口的值是上次遇到拥塞时值得一半,因此此时就不可以再继续翻倍增加了,而是每次只增加一个MSS。当遇到3个冗余事件时值将再次减半。接下来进入快速恢复状态。

  3. 快速恢复:在快速恢复中,对于每个引起TCP进入快速恢复状态的缺少报文段,对每个收到的冗余ACK,拥塞窗口增加一个MSS。最终,当丢失报文段的一个ACK到达时,TCP在降低拥塞窗口后进入拥塞避免状态。如果出现超时事件,则拥塞窗口值被置为1。

  4. 网络辅助拥塞控制:一个TCP发送方不会收到来自网络层明确的指示,但是通过观察分组丢失来推断拥塞,允许网络明确向TCP发送方和接收方发出拥塞信号。这种形式被称为明确拥塞通告。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值