您的位置:首页 > 理论基础 > 计算机网络

计算机网络(七)--运输层概述

2017-03-03 19:33 423 查看
运输层是整个网络体系结构中的关键层次之一。

(1)运输层为相互通信的应用进程提供逻辑通信。

(2)端口和套接字的意义。

(3)无连接的UDP的特点。

(4)面向连接的TCP的特点。

(5)在不可靠的网络上实现可靠传输的工作原理,停止等待协议和ARQ协议。

(6)TCP的滑动窗口、流量控制、拥塞控制和连接管理。

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

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

解答:两个主机进行通信就是两个主机中的应用进程互相通信。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。

运输层有一个很重要的功能:复用(multiplexing)和分用(demultiplexing)

复用:指在发送方不同的应用进程都可以使用同一个运输层协议传送数据(当然需要加上适当的首部)

分用:指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。

注意:IP层也有复用和分用的功能。

逻辑通信:通信好像沿水平方向直接传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。即“好像是这样通信,但事实上并非真的这样通信”

网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。

在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。运输层还要对收到的报文进行差错检测。

运输层有两种不同的运输协议:面向连接的TCP和无连接的UDP。

运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别。

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

TCP/IP运输层的两个主要协议都是因特网的正式标准,即:

(1)用户数据报UDP(User Datagram Protocol)

(2)传输控制协议TCP(Transmission Control Protocol)

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

UDP在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP却是一种最有效的工作方式。

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



运输层的端口

运输层从IP层收到数据后必须交付指明的应用进程。所以给应用层的每个应用进程赋予一个非常明确的标志至关重要。

问题:在单个计算机中的进程是用进程标识符(一个不大的整数)来标志的。为什么不能用计算机操作系统所指派的这种进程标识符用来标志运行在应用层的各种应用进程?

解答:在因特网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。

问题:把一个特定机器上运行的特定进程,指明为因特网上通信的最后的终点为什么不行?

解答:因为进程的创建和撤销都是动态的,通信的一方几乎无法识别对方机器上的进程(进程销毁后,新建的进程标识符与销毁的一样)。另外,我们往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个(例如,要和因特网上的某个邮件服务器联系,并不一定要知道这个服务器功能是由目的主机上的哪个进程实现的)。

最终解决方案:运输层使用协议端口号(protocol port number),或通常简称为端口(port)。虽然通信的终点是应用进程,但我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由TCP来完成。

注意:这种在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址

UDP和TCP的首部格式中,都有源端口目的端口这两个重要字段。

TCP/IP的运输层用16位端口号来标志一个端口。端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口(不同计算机中,相同的端口号没有关联)。

运输层的端口号分为两大类:

(1)服务器端使用的端口号

         这里又分为两类:

                     熟知端口号(well-known port number)或系统端口号,数值为0~1023。这些数值可在网站www.iana.org查到。IANA把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。当一种新的应用程序出现后,IANA必须为它指派一个熟知端口,否则因特网上的其他应用进程就无法和它进行通信。

常用的熟知端口号
应用程序FTPTELNETSMTPDNSTFTPHTTPSNMPSNM(trap)
熟知端口号212325536980161162
                     登记端口号,数值为1024~49151。这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。
(2)客户端使用的端口

         数值为49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。这类端口号是留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户进程使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: