【计算机网络5】运输层#UDP协议

请添加图片描述

一、运输层作用

运输层向其上层的应用层提供通信服务。当应用层的某个进程发送一个报文时,这个报文便会在应用层上被添加相应的控制信息,然后交付给其下层的运输层。运输层收到消息之后再添加控制信息,然后交付其下层…

当网络边缘的两台计算机使用网络的核心部分的功能进行端到端之间的通信时,只有主机的协议栈才有运输层。而网络核心的路由器在转发分组时只用到传输层以下的协议。即在TCP/IP协议中只用到到了下两层,即网际层,网络接口层。五层网络协议中只用到了下三层,即网络层,数据链路层,物理层。

可见运输层属于面向通信部分的最高层,同时也是用户功能中的最低层。

二、为啥需要运输层

IP协议能够把源主机A发送出的分组按照首部中的目的地址送交到目的主机B,那么,为什么还需要运输层呢?

在这里插入图片描述

从ip层来说通信的两端是两个主机,而ip数据报的首部也明确的标志了两个主机的IP地址。但这样就说两主机之间的通信是不够确切的。因为真正通信的是两主机上的进程之间进行通信。例如上图中主机A的AP1进程和主机B的AP3进行通信。因此严格的说两主机进行通信是两主机之间的应用进程进行通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层,还没有经过传输层上交给应用进程。

从运输层的角度看,通信的真正端点并不是主机,而是主机之间的进程,也就是说端到端之间的通信是应用进程之间的通信。

1、其实两计算机之间进行通信时一般都不只有单个进程通信的,可能计算机A上的多个进程和计算机B上的多个进程同时进行通信。由于应用进程的数据都是来自IP层,都要经过传输层,所以这就要求传输层还具有分用复用的功能。

  • 复用:发送方的不同进程可以使用同一个运输层协议传输数据。当然传送数据时需要加上适当的首部控制作为区分。
  • 分用:接收方的运输层得到报文,从报文中剥出首部后可以吧接收的报文信息正确的发送给相应的应用进程。

2、IP层为主机之间提供逻辑通信(可以认知为,吧消息发给网上,另一主机就收到了),传输层为应用进程提供逻辑通信。
在这里插入图片描述
3、网络层要对ip数据报的首部进行差错检测。只检查首部而不检查数据部分,数据部分的检测在运输层)运输层还要对接收的报文进行差错检测。
4、运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别:

  • 当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。
  • 当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。

三、运输层的主要协议

1、主要协议

根据应用程序的不同需求,运输层主要有两种不同的运输协议:

(1)用户数据报UDP(User Datagram Protocol) [RFC 768]

  • UDP在传送数据之前不需要先建立连接。

  • 远地主机的运输层在收到UDP报文后,不需要给出任何确认。

  • 虽然UDP不提供可靠交付,但在某些情况下UDP却是一种最有效的工作方式。

(2)传输控制协议TCP(Transmission Control Protocol) [RFC 793]

  • TCP则提供面向连接的服务。
  • 在传送数据之前必须先建立连接,数据传送结束后要释放连接。
  • TCP不提供广播或多播服务。
  • 由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
2、术语

1、OSI术语中,两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU(Transport Protocol Data Unit)
2、在TCP/IP体系中,则根据所使用的协议是TCP或UDP,分别称之为TCP报文段(segment) 或UDP用户数据报。

4、一些应用层协议所使用的传输层协议

在这里插入图片描述

四、运输层的端口

1、需求

在这里插入图片描述

1、应用层所有的应用进程都可以吧数据通过运输层协议传送到IP层(网络层),这就是复用。
2、运输层从IP层收到数据后会把数据交付给指明的应用进程。这就是分用。

显然,给应用层的每个应用进程赋予一个非常明确的标志是至关重要的。

2、端口的产生

运行在计算机中的进程是用进程标识符(pid)来标志的。但是计算机的操作系统有很多、不同的操作系统又使用不同格式的进程标识符、进程的创建和撤销都是动态这就导致使用统一的进程标识符对TCP/IP 体系的应用进程进行标志的思路是行不通的,这时有一个解决方案就是在传输层使用协议端口号也即端口。

虽然通信的终点是应用进程,但只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作就由 TCP / UDP 来完成。TCP / UDP 协议字段中有源端口和目的端口两个重要字段,TCP / UDP 根据这两个字段来完成最终的交付工作。

TCP/IP的运输层用一个16位端口号来标志一个端口。但请注意,端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在因特网不同计算机中,相同的端口号是没有关联的。16位的端口号可允许有65 535(2的16次方减一)个不同的端口号,这个数目对一个计算机来说是足够用的.

由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程,根据IP层传递来的报文首部内的源端口或者目的端口传输层就可以吧数据传送到目的进程。)

3、端口分类

1、服务端使用端口

  • 系统端口号(熟知端口号):数值0-1023,IANA把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。当一种新的应用程序出现后,IANA必须为它指派一个熟知端口,否则因特网上的其他应用进程就无法和它进行通信(常见如下图)
    在这里插入图片描述
  • 登记端口:数值1024-49352,这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。

2、客户端使用端口

客户端使用的端口号 数值为49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。这类端口号是留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户进程使用。

五、UDP协议

1、特点

(1)面向无连接

发送数据之前不需要建立连接,当然发送完成也没有连接可释放啦。相对tcp来说减少了开销。降低了发送数据之前的延迟。

(2)尽最大努力交付

即不保证可靠交付数据,主机也不需要维持复杂的状态连接表(表里有很多数据)。

(3)面向报文

udp一次发送或者交付一个完整的报文。应用层(ip层)发送(接收)多长的报文,udp就交付多长的报文。也就是说UDP一次性交付一个完整的报文。也就是说,应用程序必须选择合适大小的报文,若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率。反之,若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率。
在这里插入图片描述

(4)UDP 没有拥塞控制

网络出现的拥塞不会使源主机发送的速率降低。这对某些实时应用很重要,很多实时应用要求源主机以恒定的速率发送数据,而且允许在网络发生拥塞时丢失一些数据,单不允许数据有太大的延迟,正好UDP适合。

(5)UDP支持多种通信方式

  • 一对一
  • 一对多
  • 多对一
  • 多对多。

(6)UDP首部开销小

UDP的首部只有8字节,然而TCP首部有20字节(比TCP短很多)

注意:

虽然某些实时应用需要使用没有拥塞控制的UDP,但当很多的源主机同时都向网络发送高速率的实时视频流时,网络就有可能发生拥塞,结果大家都无法正常接收。因此,不使用拥塞控制功能的UDP有可能会引起网络产生严重的拥塞问题

一些使用UDP的实时应用,需要对UDP的不可靠的传输进行适当的改进,以减少数据的丢失。在这种情况下,应用进程本身可以在不影响应用的实时性的前提下,增加一些提高可靠性的措施,如采用前向纠错或重传已丢失的报文。

2、UDP 首部格式

在这里插入图片描述
用户数据报UDP有两个字段:

  • UDP数据:用户传输的数据
  • UDP首部:首部由8字节组成,四个字段,每个字段占2字节。

(1)源端口

即源端口号,在需要对方回信时选用,不需要时可用全0

(2)目的端口

即目的端口号,在终点交付报文时必须用到。

(3)长度

UDP数据报的长度,最小值是8,代表仅有首部。

(4) 检验和

检测UDP用户数据报在传输中是否有错。有错就丢弃。

当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点——应用进程。如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送方
在这里插入图片描述

UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部。只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和

UDP计算检验和的方法和计算IP数据报首部检验和的方法相似。但不同的是:IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起都检验

End

参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值