运输层详解

目录

一.运输层概述

二.用户数据报协议UDP

1.概述

2.首部格式

三.传输控制协议TCP

1.概述

2.首部格式

3.可靠传输和流量控制

A.可靠传输

B.流量控制

4.拥塞控制

(1)原理

(2)慢开始和拥塞避免

(3)快重传和快恢复

5.TCP的运输连接管理


 

一.运输层概述

1.运输层向它上面的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最低层。真正进行通信的实体是主机中的用户进程

2.运输层协议与进程之间通过分用复用进行数据的传递,实现多进程传输数据到单个端口

3.运输层的两个主要协议为:用户数据报协议UDP和传输控制协议TCP

4.不能把数据报传输的终点确定为某个进程,因为进程是动态变化的,随时在建立和撤销,所以才有了端口,一个端口连接了多个进程,主机的操作系统提供了端口机制

5.硬件端口是不同硬件设备进行交互的接口(路由器,交换机),软件端口是应用层的各种协议进程与运输实体进行层间交互的地点

6.端口必须有一定容量的缓存来暂存数据,再经由进程提取,端口号只具有本地意义(类似于虚拟网内的本地IP地址),在互联网不同计算机中,相同的端口号没有关联

7.端口号分为:熟知端口号(全球通用端口号)和登记端口号,前者用于TCP/IP最重要的一些程序,让所有用户都知道;后者用于普通程序


二.用户数据报协议UDP

1.概述

1.UDP是无连接的,尽最大努力交付的,面向报文的,没有拥塞控制,支持各种通信,首部开销小

2.UDP一次交付一个完整的报文,应用程序必须选择合适大小的报文,太长要分片(影响传输效率),太短报文相对于首部来说本末倒置

3.UDP的机制很好实现了实时性,但没有控制拥塞功能可能会引起网络发生严重的拥塞问题

2.首部格式

1.首部有源端口,目的端口,长度,检验和四个部分

2.IP数据报的检验和只检验IP数据报的首部,UDP的检验和是把首部和数据部分一起都检验


三.传输控制协议TCP

1.概述

1.TCP是面向连接的,可靠交付的,全双工通信的,面向字节流的,一对一通信的

2.TCP不根据进程发送的报文长度来传输,而是只根据接收端窗口的大小来传输,未发送的数据报会存储在端口的缓存区中(UDP由进程给出)

3.TCP连接的端点叫套接字:端口号拼接到IP地址后便是套接字(由冒号隔开)

2.首部格式

源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。

序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号;

数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。

保留字段——占 6 位,保留为今后使用,但目前应置为 0。

紧急 URG —— 当 URG  1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 

确认 ACK —— 只有当 ACK =1 时确认号字段才有效。当 ACK =0 时,确认号无效。 

推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

复位 RST (ReSeT) —— 当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接

同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。

终止 FIN (FINish) —— 用来释放一个连接。FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。

检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

选项字段 —— 长度可变。MSS 是 TCP 报文段中的数据字段的最大长度。MSS是“TCP 报文段长度减去 TCP 首部长度”。 MSS 与接收窗口值没有关系。 若选择较小的 MSS 长度,网络的利用率就降低。 若 TCP 报文段非常长,则要分片。 因此,MSS 应尽可能大些,只要在 IP 层传输时不需要再分片就行。 但最佳的 MSS 是很难确定的
————————————————
版权声明:本文为CSDN博主「超级大超越」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012632105/article/details/123655166


3.可靠传输和流量控制

A.可靠传输

1.TCP实现可靠传输用的是停止等待协议,即发一个数据报便需要接受端回传一个确认才可以继续发送,当超过超时计时器设定的时间还没有收到确认时便进行重传,由此实现可靠传输

2.TCP的设定需要强调三点

   A.发送端必须保留已发送的分组的副本,在重传时使用

   B.分组和确认分组都必须编号

   C.超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些(接收端需要处理)

B.流量控制

1.TCP实现流量控制使用的是滑动窗口协议,即在停止等待的基础上加上发送窗口和接收窗口,发送端按序发送,接收端采用累积确认,对按序到达的最后一个分组发送确认

2.由累积确认可知若发送端发送的分组有丢失的,即未按序到达,丢失分组顺序后的所有分组就都不会被确认,则都需要重传,这便要求接收端必须有临时存储功能来存储未按序到达的分组

3.TCP的滑动窗口是以字节为单位的,发送端的窗口大小一定不能超过接收端,由于接收端还要处理这些数据,发送数据太多就会导致处理不了的数据被丢失而重传造成网络拥塞

4.发送端的缓存区存放:应用程序传送给发送端准备发送的数据和已发送但未收到确认的数据

接收端的缓存区存放:按序到达的但未被应用程序接收的数据和未按序到达的数据

5.累积确认可以减少传输开销,但接收端不能过分推迟确认,否则会导致重传,还可以通过捎带确认(接收端发送数据,TCP是全双工)减少开销

6.发送端不可能接收到一个数据就发送一次,所以发送时机有三种

  (1)数据达到最大报文段长度MSS时就组成TCP报文段发送

  (2)推送操作,即由发送方的应用程序来指明如何发送

  (3)由发送方的计时器来决定,时间到了就发送(不管数据大小,但不能超过MSS)

7.TCP可通过Nagle算法来实现具体的发送时机

 Nagle算法:先发送一个字节来探路,若收到确认则将后续存储的所有数据报发送,没收到则重传这个字节,好处是可以避免一开始就由于意外导致的大量重传,并且发送端数据达到发送窗口的一半或达到MSS时(即(1)的情况)就立即发送不用再等探路的字节,好处是可以提高网络吞吐量


4.拥塞控制

(1)原理

1.当网络拥塞时,简单的单方面的扩大缓存存储空间,提高链路的传输效率,提高处理机的处理效率都不能真正解决这个问题,只有所有部分都平衡了才能解决(类似于高速公路堵车,若每辆车都匀速且有序就不会发生堵车,但不可能只通过扩大道路,提高车的性能等等来解决)

2.由类比可知拥塞问题基本上不可能完全解决,只能通过拥塞控制来缓解和预防发生严重拥塞

3.流量控制和拥塞控制非常相像,流量控制是为了防止接收端接收不了这么多数据(需要处理)而存在,拥塞控制是为了防止传输过程中由于各种原因造成严重阻塞而存在

4.进行拥塞控制需要付出代价,不仅需要获得网络内部流量分布的信息而造成的额外开销,有时还需要将一些资源分配给个别用户单独使用使网络资源不能实现共享(如十字路口堵车时大吨位的车先过,这是堵塞的直接原因)

5.拥塞控制分为开环控制和闭环控制

开环控制:设计网络时便已经考虑好可能发生拥塞的因素,一旦运行网络就不再更改

闭环控制:网络运行时再进行监测,一旦发生拥塞就调整网络系统的运行进行解决

(即一个是先设定,一个是发生了再解决)

6.拥塞控制的算法有四种:慢开始,拥塞避免,快重传,快恢复

(2)慢开始和拥塞避免

1.发送端的窗口不仅由接收端决定,还由网络的拥塞程度决定,严重则减小窗口,反之增大

2.发送方由发送探路字节来判断是否发生拥塞,若超时重传计时器启动时就表明发生了拥塞

3.慢开始算法:由小到大逐渐增大注入到网络中的数据,即由小到大逐渐增大发送窗口

4.慢开始算法的发送窗口的呈指数增大,所以“慢”不是指增大的慢,而是一开始发送窗口设定为1

5.拥塞避免算法:在快要发生拥塞时,停止再继续由慢开始算法的指数增长,改为发送窗口每次增大1(线性规律缓慢增长)

6.拥塞避免算法可以设定一个慢开始门限ssthresh,发送窗口达到门限时便开始使用拥塞避免算法

7.拥塞避免并非完全避免,而是让发送窗口增长的缓慢一些,使网络不易发生拥塞

8.当发生重传时(即拥塞)则使用慢开始算法重新设定发送窗口(为1),重新开始增长,而一旦发生了拥塞,慢开始门限便需要调整(可调为原先的1/2

(3)快重传和快恢复

1.快重传算法:接收端不管接收到的数据是否有序,也不要进行捎带确认,只要接收到数据就立即发送确认,若接收端未收到某个数据,则重复发送上一个数据的确认,每接收一个数据就发送一次(表明其他数据可正常到达),三次(表明不是偶然性)后发送端便可确认是由于意外导致该数据丢失而非网络拥塞(可知接收端一共发送了丢失数据的上一个数据4次确认)

2.快恢复算法:由快重传算法可知丢失的数据不是由于网络拥塞造成,若继续采用慢开始算法则会导致效率低,采用快恢复算法即发送端口不再设定为1,而是直接设定为1/2门限ssthresh,并继续使用拥塞避免算法(即开始为1/2ssthresh,增长为1

3.由以上算法可知

接收窗口小于拥塞窗口(拥塞情况)时,发送窗口由接收窗口决定

接收窗口大于拥塞窗口时,发送窗口由拥塞算法决定


5.TCP的运输连接管理

1.运输连接有三个阶段:连接建立,数据传送,连接释放

2.主动发起连接建立的应用进程叫客户,被动等待连接建立的应用进程叫服务器

3.连接建立:客户和服务器都先创建传输控制块TCB(存储了每一个连接中的一些重要信息),客户发送请求连接SYN报文段,服务器若接受则发送确认,客户收到确认后再对服务器发送确认(为了防止已经丢失的连接请求突然被服务器接收,而客户不知道,导致服务器一直等待),发送三次数据的行为叫三报文握手

4.连接释放:客户的应用进程先向TCP发送连接释放报文段,并停止发送数据,主动关闭TCP连接,服务器收到后发送确认(但服务器对客户的连接还没有关闭),当服务器没有要对客户发送的数据时,就对客户发送连接释放报文段,客户收到后再发送确认,即四报文握手

5.TCP连接的释放经由4后还要经过时间等待计时器设置的时间2MSL(最长报文段寿命)后才真正释放(2MSL是为了保证客户最后发送的确认报文段能到达服务器,若未到达则超时重传并重新设置2MSL)

6.服务器接收到客户的确认后便结束了TCP连接,比客户要快一些

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值