计算机网络运输层(上)运输协议概述

发布于:2025-05-14 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、运输层协议概述

(一)进程之间的通信

1.从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最底层。

2.网络层为主机之间的通信提供服务,运输层为进程之间的通信提供服务。

3.屏蔽作用:运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。

4.可靠信道与不可靠信道:当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道;但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。

(二)运输层的两个主要协议

1.运输协议数据单元:两个对等运输实体在通信时传送的数据单元叫做运输协议数据单元TPDU

2.用户数据报协议UDP

(1)传送的数据单位协议是UDP报文或用户数据报。

(2)传送数据之前不需要先建立连接。

(3)收到UDP报后,不需要给出任何确认。

(4)不提供可靠交付,但是一种最有效的工作方式。

3.传输控制协议TCP

(1)传送的数据单位协议是TCP报文段

(2)提供可靠的、面向连接的运输服务

(3)不提供广播或多播服务

(4)开销较多

4.使用UDP和TCP的典型应用和应用层协议

(三)运输层的端口

1.复用与分用

(1)复用:应用进程都可以通过运输层再传送到IP层(网络层)。

(2)分用:运输层从IP层收到发送给应用进程的数据后,必须分别交付给指明的各应用进程。

2.端口号

指明各应用进程,需要考虑的问题?

        进程的创建和撤销都是动态的,因此发送方几乎无法识别其他机器上的进程。

        我们往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个。

        有时我们会改换接收报文的进程,但并不需要通知所有的发送方。

解决方法:端口号

(1)在运输层使用协议端口号(端口port),把端口设为通信的抽象终点。

(2)软件端口与硬件端口

        软件端口:

                协议栈层间的抽象的协议端口;

                应用层的各种协议进程与运输实体进行层间交互的地点;

                不同系统实现端口的方法可以不同。

        硬件端口:不同硬件设备进行交互的接口。

(3)TCP/IP运输层端口的标志

        端口用一个16位端口号进行标志,允许有65535个不同的端口号;

        端口号只具有本地意义,只是为了标志本计算机应用层中的各进程;

        在互联网中,不同计算机的相同端口号没有关系。

(4)两大类、三种类型的端口

(5)常用的熟知端口

二、用户数据报协议UDP

(一)UDP概述

1.UDP只在IP的服务之上增加了复用和分用、差错检测的功能。

2.UDP的主要特点:

(1)无连接:发送数据之前不需要建立连接。

(2)使用最大努力交付:不保证可靠交付。

(3)面向报文:UDP一次传送和交付一个完整的报文。

        发送方UDP对应用层交下来的报文,既不合并,也不拆分,按照原样发送;接收方UDP对IP层交上来的UDP用户数据报,去除首部后原封不动地交付上层的应用进程,一次交付一个完整的报文。

        应用程序必须选择合适大小的报文:若报文太长,IP层在传送时可能要进行分片,降低IP层的效率;若报文太短,会使IP数据报的首部的相对长度太大,降低IP层的效率。

(4)没有拥塞控制:网络出现的拥塞不会使源主机的发送速率降低,很适合多媒体通信的要求。

(5)支持一对一、一对多、多对一、多对多等交互通信。

(6)首部开销小:只有8个字节。

UDP通信的特点:简单方便,但不可靠。

3.UDP通信和端口号的关系:

(1)复用:把收到的UDP用户数据报组装成不同的IP数据报,发送到互联网

(2)分用:根据UDP用户数据报首部中的目的端口号,将数据报分别传送到相应的端口,以便应用进程到端口读取数据。如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方。

(二)UDP的首部格式

        用户数据报UDP有两个字段:数据字段和首部字段,首部字段有8个字节(四个字段)组成,每个字段都是2个字节。

1.源端口:源端口号,在需要对方回信时选用,不需要时可用全0。

2.目的端口:目的端口号,终点交付报文时必须使用。

3.长度:UDP用户数据报的长度,其最小值是8(仅有首部的情况)。

4.检验和:检测UDP用户数据报在传输中是否有错误,有错丢弃;在计算检验和时,临时把12字节的“伪首部”和UDP用户数据报连接在一起,伪首部仅仅是为了计算检验和;UDP的检验和是把首部和数据部分一起都检验。

三、传输控制协议TCP

(一)TCP概述

1.TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务;在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。

2.TCP的主要特点:

(1)面向连接:应用程序在使用TCP协议之前,必须先建立TCP连接。

(2)可靠交付:通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。

(3)面向字节流:

        流:TCP的“流”指的是流入或流出进程的字节序列。

        面向字节流:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

        TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系;但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。

(4)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)

(5)TCP提供全双工通信:TCP允许通信双方的应用进程在任何时候都能发送数据。

        TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时应用程序在把数据传送给TCP的缓存后,就可以做自己的事,而TCP在合适的时候把数据发送出去;在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。

(二)TCP报文段的首部格式

        TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段;一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中各字段的作用。TCP报文段首部的前20个字节是固定地,后面有4n个字节是根据需要而增加的选项,因此TCP首部的最小长度是20字节。

1.源端口和目的端口:各占两字节,端口是运输层与应用层的服务接口。运输层的复用和分用功能通过端口实现。

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

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

若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。

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

5.保留:占6位,保留为今后使用,但目前应置为0。

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

7.确认ACK:控制位,当ACK=1时,表明确认号字段有效,ACK=时,确认号无效。

8.推送PSH:控制位,接收TCP收到PSH=1的报文段后,就尽快(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满后再交付。

9.复位RST:控制位,当RST=1时,表明TCP连接中出现严重错误(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

10.同步SYN:控制位,当SYN=1时,表明这是一个连接请求或连接接受报文。当SYN=1,ACK=0时,表明这是一个连接请求报文段;当SYN=1,ACK=1时,表明这是一个连接接受报文段。

11.终止FIN:控制位,用来释放一个连接,FIN=1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

12.窗口:占16位,窗口值告诉对方:从本报文首部中的确认号算起,接收方目前允许对方发送的数据量(以字节位单位)。

窗口字段明确指出了现在允许对方发送的数据量,窗口值经常再动态变化。

13.检验和:占16位,检验和字段检测的范围包括首部和数据这两部分,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部,伪首部仅仅是为了计算检验和。

14.紧急指针:占16位,在URG=1时,指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),指出了紧急数据的末尾在报文段中的位置。

15.选项:长度可变,最长可达40字节。

(1)TCP最初只规定了一种选项,最大报文段长度MSS(选项(2)),告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”,与接收窗口值没有关系。

        TCP报文段长度=数据字段长度+TCP首部长度;数据字段长度=TCP报文段长度-TCP首部长度。

       最大报文段长度MSS的取值:不能太小,网络利用率降低;不能太大,开销增大,IP层传输时要分片,终点要装配;分片传输出错时,要整个分组;应尽可能大, 只要在IP层传输时不再分片,默认值=536字节,报文段长度=556字节,IP数据报长度576字节。

        *注意辨析MTU与MSS

(2)窗口扩大(选项(3)),TCP窗口字段长度=16位,最大窗口大小=64K字节,对于传播时延和带宽都很大的网络,为获得高吞吐率,需要更大的窗口。

        窗口扩大选项:占3字节,其中一个字节表示位移值S,新的窗口值位数从16为位增大到(16+S),相当于把窗口值向左移动S位,移位值允许使用最大值是14,窗口最大增大到2^(16+14)-1=2^30-1。

        窗口扩大选项可以在双方初始建立TCP连接时进行协商。

(3)时间戳(选项(8)),占10字节,最主要的是2个字段,时间戳值字段(4字节)和时间戳回送回答字段(4字节)。

        2个主要功能:

        计算往返时间RTT        

        防止序号绕回PAWS:序号重复时,为了使接收方能够把新报文段和迟到很久的旧报文段区分开,可以在报文段中加上时间戳。

16.填充:使整个TCP首部长度是4字节的整数倍。


网站公告

今日签到

点亮在社区的每一天
去签到