运输层:UDP协议

运输层向其上层的应用层提供通信服务。当应用层的某个进程发送一个报文时,这个报文便会在应用层上被添加控制信息。然后交付给其下层的运输层。运输层收到消息之后再处理,然后交付其下层…本节就总结下运输层的相关知识,其主要总结下UDP等相关知识,至于最重要的TCP就单独开一节总结。

知识点

在这里插入图片描述

一、运输层协议

1、进程之间的通信

(1)须知

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

(2)疑问解析

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

在这里插入图片描述

1、从ip层来说通信的两端是两个主机,而ip数据报的首部也明确的标志了两个主机的IP地址。但这样就说两主机之间的通信是不够确切的。因为真正通信的是两主机上的进程之间进行通信。例如上图中主机A的AP1进程和主机B的AP3进行通信。因此严格的说两主机进行通信是两主机之间的应用进程进行通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层,还没有经过传输层上交给应用进程。
2、从运输层的角度看,通信的真正端点并不是主机,而是主机之间的进程,也就是说端到端之间的通信是应用进程之间的通信。
3、其实两计算机之间进行通信时一般都不是单进程通信的,可能,计算机A上的多个进程和计算机B上的多个进程进行通信。其实传输层还具有分用复用的功能。

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

4、从图中可以看出网络层IP层)为主机之间提供逻辑通信(可以认知为,吧消息发给网上,另一主机就收到了),传输层为应用进程提供逻辑通信。
5、运输层还要对接收的报文进行差错检测,而网络层要对ip数据报的首部进行差错检测(只检查首部而不检查数据部分,数据部分的检测在运输层)

2、运输层的主要协议

(1)主要协议

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

  • 用户数据报UDP(User Datagram Protocol) [RFC 768]
  • 传输控制协议TCP(Transmission Control Protocol) [RFC 793]

(2)术语介绍

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

(3)一些应用使用协议栗子
在这里插入图片描述

3、运输层的端口

(1)分用复用再次理解

在这里插入图片描述

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

显然,给应用层的每个应用进程赋予一个非常明确的标志是至关重要的。
3、使用端口来标识某个应用(注意端口标识的是应用,而不是应用进程)

(2)端口的由来

1、端口:运行在计算机中的进程是用进程标识符(pid)来标志的。为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志,解决这个问题的方法就是在传输层使用协议端口号或端口。虽然通信的终点是应用进程,但只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP / UDP 来完成。端口号只具有本地意义,它只是为了标志本地计算机应用层的各个进程在和传输层交互时的层间接口。
2、在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址.

参考:进程ID[PID(Process ID)]与端口号[(Port ID)]的联系

(3)应用层的端口

1、应用层吧数据交付某应用的端口,剩下的工作由运输层来完成。
2、在后面将讲到的UDP和TCP的首部格式中,我们将会看到它们都有源端口和目的端口这两个重要字段。当运输层收到IP层交上来的运输层报文时,就能够根据其首部中的目的端口号把数据交付应用层的目的应用进程。
3、TCP/IP的运输层用一个16位端口号来标志一个端口。但请注意,端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在因特网不同计算机中,相同的端口号是没有关联的。16位的端口号可允许有65 535(2的16次方减一)个不同的端口号,这个数目对一个计算机来说是足够用的.
4、由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程,根据IP层传递来的报文首部内的源端口或者目的端口传输层就可以吧数据传送到目的进程。)

(4)端口分类

1、服务端使用端口

  • 系统端口号(熟知端口号):数值0-1023,这些都是TCP/的一些重要程序。(常见如下图)
    在这里插入图片描述
  • 登记端口:数值1024-49352,使用这类端口号必须在IANA按照规定的手续登记,以防止重复

2、客户端使用端口

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

二、UDP协议

1、UDP特点

(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短很多)
1、当很多的源主机同时都向网络发送高速率的实时视频流时,网络就有可能发生拥塞,结果大家都无法正常接收,但是不使用UDP会产生更严重的拥塞。
2、一些实时应用可以对UDP进行适当改进,减少数据的丢失性。在这种情况下,应用进程本身可以在不影响应用的实时性的前提下,增加一些提高可靠性的措施,如采用前向纠错或重传已丢失的报文。

2、UDP 首部格式

在这里插入图片描述

用户数据报UDP有两个字段:

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

(1)源端口

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

(2)目的端口

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

(3)长度

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

(4) 检验和

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

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

三、运输层:TCP协议

End

总结: <计算机网络(第6版)>

猜你喜欢

转载自blog.csdn.net/qq_38350635/article/details/103905021