天天看点

运输层概述

运输层在计算机网络五层协议的位置

运输层概述

关键字说明

计算机通信:通信就是交换数据,例:主机A与主机B通信,即为主机A与主机B交换数据

主要层负责

  • 网络层:负责主机与主机之间的通信,例:主机A与主机B通信
  • 应用层:负责主机进程与主机进程之间的通信,例:主机A中的QQ程序与主机B中的QQ程序通信(同一个主机上会有多个不同的应用)
  • 网络层

    :为应用层进程通信提供服务,应用层有许多应用,网络层为应用层提供通用的通信服务

总结:IP层(同网际层)为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信

运输层概述

进程之间的通信

从IP层(同网际层)来说,通信的两端是两台主机。IP数据报的首部明确地标志了这两台主机的IP地址。下图为IP数据报格式

运输层概述

从IP层来说,只是负责两台主机之间通信的两端是。由于主机中运行多个应用(如浏览器,QQ,Foxmail邮件等应用)。也就是说真正进行通信的实体是在主机中的进程(一个应用可理解为一个进程),即这台主机中的一个进程和另一台主机中的一个进程在交换数据。

那么运输层在进程之间通信承接什么重要的功能

运输层概述

假设有两台主机X,Y。其中应用A与应用C互相通信,应用B与应用D互相通信。而IP层只负责主机X与主机Y之间的通信,那么传输层将必须具有重要的功能,

复用

分用

运输层概述

上述图片只说明了单方向数据传输,实际上是双向传输,这里为了简单说明

  • 复用,复用是站在发送端角度来看,由于主机运行的应用有多个,但是他们都需要进行应用通信,也就是需要发送数据,那么运输层可以为不同的应用提供发送数据服务,则可以理解为不同的应用共同使用运输层提供的端对端通信服务(端对端可理解为进程之间的通信)
  • 分用,复用是站在接收端角度来看,由于主机运行的应用有多个,那么如何将运输层收到的通信数据正确交付到正确的应用(如,是把数据交付给QQ应用,还是浏览器应用),那么运输层可以为不同的应用提供接收数据服务
运输层概述

运输层还包括其他功能如,对收到的报文进行差错检查,这里就不再说明

总结:从通信和信息处理的角度看,

运输层向它上面的应用层提供通信服务

,它属于面向通信部分的最高层,同时也是用户功能中的最低层

运输层的重要协议

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不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

一些应用和应用层协议主要使用的运输层协议(UDP或TCP)

应用 应用层协议 运输层协议
域名系统 DNS UDP
文件传送 TFTP UDP
路由选择协议 RIP UDP
动态IP地址配置 DHCP UDP
网络管理 SNMP UDP
远程文件服务器 NFS UDP
IP电话 专用协议 UDP
流式多媒体通信 专用协议 UDP
多播 IGMP UDP
电子邮件 SMTP TCP
远程终端输入 TELNET TCP
万维网 HTTP TCP
文件传送 FTP TCP
运输层概述

运输层的端口

图一

运输层概述

图二

运输层概述

上述我们提到了复用与分用的概念,那么计算机是如何来实现这个功能呢?

当我们启动一个应用后,会为计算机的进程分配一个进程标识符,称为进程的PID

运输层概述

那我们是否可以使用进程的PID来实现复用与分用功能,答案是不可行的,可以简述为以下几点

  1. 计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符,无法统一
  2. 由于进程的创建和撤销都是动态进行的,PID可以随着变化,所以通信的双方很难知道对方主机运行着哪些进程,即无法知道对方有哪些进程PID
  3. 同一台主机可以启动相同的应用,如启动多个QQ应用,那么PID肯定是多个,且PID数字是任意的,那么通信的双方几乎很难知道对方有哪些进程PID

为了使运行不同操作系统的计算机的应用进程能够互相通信,就

必须用统一的方法

对 TCP/IP 体系的应用进程进行标志。解决这个问题的方法就是在运输层使用

协议端口号

(protocol port number),或通常简称为

端口

(port)

简单的可以理解为,端口是将主机中的应用进行统一通信的逻辑区分,即一个端口代表着一个应用,而传输层通过端口即可完成通信中的复用与分用功能。这种统一可以屏蔽掉不同操作系统的处理细节。

TCP/IP的运输层用一个16位端口号来标志一个端口。16位的端口号可允许有65535个不同的端口号(2的16次方-1),这个数目对一个计算机来说是足够用的。但端口号只具有本地意义,即不同的主机,相同的端口,运行的应用也是不同的。

端口的分类

根据通信我们可以将通信的双方分为客户端与服务端,因为传输层的端口号分为两大类

运输层概述
  • 服务器端使用的端口号

    ,再细分可以分为两类,最重要的一类叫做熟知端口号或系统端口号,数值为

    0~1023

    。这些数值可在网址http://www.iana.org/查到。另一类叫做登记端口号,数值为

    1024~49151

    。这类端口号是为没有熟知端口号的应用程序使用的(比如我们自己开发的某一个应用,服务端可以使用8888)。
常用应用 端口 说明
ftp 21 File Transfer Protocol
ssh 22 The Secure Shell (SSH) Protocol
telnet 23 Telnet
smtp 25 Simple Mail Transfer
domain 53 Domain Name Server
tftp 69 Trivial File Transfer
http 80 World Wide Web HTTP
pop3 110 Post Office Protocol - Version 3
sftp 115 Simple File Transfer Protocol
snmp 161 SNMP
imap3 220 Interactive Mail Access Protocol v3
https 443 HTTPS
运输层概述
  • 客户端使用的端口号

    数值为

    49151~65535

    。由于这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。这类端口号留给客户进程临时使用。客户进程结束后释放这个临时端口号,这个端口号就可以供其他

    客户进程使用。

继续阅读