运输层在计算机网络五层协议的位置
关键字说明
计算机通信:通信就是交换数据,例:主机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 的运输层有两个不同的协议:
- 用户数据报协议UDP(User Datagram Protocol)
- 传输控制协议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来实现复用与分用功能,答案是不可行的,可以简述为以下几点
- 计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符,无法统一
- 由于进程的创建和撤销都是动态进行的,PID可以随着变化,所以通信的双方很难知道对方主机运行着哪些进程,即无法知道对方有哪些进程PID
- 同一台主机可以启动相同的应用,如启动多个QQ应用,那么PID肯定是多个,且PID数字是任意的,那么通信的双方几乎很难知道对方有哪些进程PID
为了使运行不同操作系统的计算机的应用进程能够互相通信,就
必须用统一的方法
对 TCP/IP 体系的应用进程进行标志。解决这个问题的方法就是在运输层使用
协议端口号
(protocol port number),或通常简称为
端口
(port)
简单的可以理解为,端口是将主机中的应用进行统一通信的逻辑区分,即一个端口代表着一个应用,而传输层通过端口即可完成通信中的复用与分用功能。这种统一可以屏蔽掉不同操作系统的处理细节。
TCP/IP的运输层用一个16位端口号来标志一个端口。16位的端口号可允许有65535个不同的端口号(2的16次方-1),这个数目对一个计算机来说是足够用的。但端口号只具有本地意义,即不同的主机,相同的端口,运行的应用也是不同的。
端口的分类
根据通信我们可以将通信的双方分为客户端与服务端,因为传输层的端口号分为两大类
-
,再细分可以分为两类,最重要的一类叫做熟知端口号或系统端口号,数值为服务器端使用的端口号
。这些数值可在网址http://www.iana.org/查到。另一类叫做登记端口号,数值为0~1023
。这类端口号是为没有熟知端口号的应用程序使用的(比如我们自己开发的某一个应用,服务端可以使用8888)。1024~49151
常用应用 | 端口 | 说明 |
---|---|---|
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
。由于这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。这类端口号留给客户进程临时使用。客户进程结束后释放这个临时端口号,这个端口号就可以供其他
客户进程使用。