• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

传输层之协议概述

网络基础 彭东稳 9年前 (2015-09-22) 35581次浏览 已收录 0个评论

一、进程之间的通信

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

从网络层来说,通信的两端是两个主机。IP数据报的首部明确地标志了这两个主机的IP地址。但“两个主机之间的通信”这种说法还不够清楚。这是因为,真正进行通信的实体是主机中的进程,是这个主机中的一个进程和另一个主机中的一个进程在交换数据几通信。因此严格地说,两个主机进行通信就是两个主机中的应用程序互相通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付给主机中的应用层。从传输层的角度看,通信的的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信时应用进程之间的通信。在一个主机中经常有多个应用进程同时分别和另一个主机中的多个应用进程通信。例如,某用户在使用浏览器查找某网站的信息时,其主机的应用层运行浏览器客户进程。如果在浏览网页的同时,还要用电子邮件给网站发送反馈意见,那么主机的应用层就还要运行电子邮件的客户进程。如下图:

传输层之协议概述

两个传输层之间有一个双向粗箭头,写明传输层提供应用进程间的逻辑通信,而逻辑通信的意思是:传输层之间的通信好像是沿水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接。要传送的数据是沿着图中的虚线方向传送的。

同时也可以看出网络层和传输层有明显的区别,网络层是为主机之间提供逻辑通信,而传输层为应用进程之间提供端到端的逻辑通信。然后正如后面还要说的,传输层还具有网络层无法替代的许多其他重要功能。如:传输层要对收到的报文进行差错检测,在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。

二、传输层协议

在传输层根据应用程序的不同需求有两种不同的传输协议,即面向连接的TCPtransmission control protocol)传输控制协议和无连接的UDPuser datagram protocol)用户数据报协议,这两种协议就是传输层的重要组成部分。如下图,给出了这两种协议在协议栈中的位置。

传输层之协议概述

TCP是提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的传输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理器等。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。而UDP在传送数据之前不需要建立连接。远地主机的运输船在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP却是一种最有效的工作方式。

三、传输层的端口

上面说了,传输层是提供进程之间的通信也就是端到端的通信。但是我们现在的主机都是多任务多用户的。主机怎么来区分不同的进程呢?我们知道在互联网上区分不同的主机是通过IP标识来的,同样的道理在主机中区分不同的服务进程使用的就是协议端口号(protocol port number)或通常简称为端口。这就是说,虽然通信的终点是应用进程,但我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作就由TCP/UDP来完成了。

那么在TCP/IP中传输层用一个16位端口号来标志一个端口,但请注意,端口号具有本地意义,它只是为了标志本本计算机应用层中的各个进程在和传输层交互时的层间接口。在因特网不同计算机中,相同的端口号是没有关联的。16位的端口号可袁旭有1-65535个不同的端口号,这个数目对一个计算机来说是足够用的。

由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。这和我们寄信的过程类似。当我们要和某人写信时,就必须知道他的通信地址。在信封上会写明自己的地址。当收信人回信时,很容易在信封上看到发信人的地址。因特网上的计算机通信是采用客户端/服务器方式。客户端在发起通信请求时,必须先知道对方武器的IP地址和要访问服务的端口号。因此端口号分为下面的两大类,即服务端端口号和客户端使用的端口号

服务端使用的端口号

也分为两类,一类叫熟知端口号,数值为0-1023。这些数值可在IANA官网查询,IANA把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。当一种新的应用程序出现后,IANA必须为它指派一个熟知端口,否则因特网上的其他应用进程就无法和它进行通信。下面给出一些常用的熟知端口号,如:

FTP:21SSH:22TELNET:23SMTP:25DNS:53HTTP:80https:443RDP:3389SMTP:25POP3:110DHCP:67SNMP:161SNMP(TRAP):162TFTP:69等等。另一类叫登记端口号,数值为1024-49151,这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。

客户端使用的端口号

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

需要注意的是,不同的应用层协议可能基于不同的传输层协议,如FTP、TELNET、SMTP协议基于可靠的TCP协议。TFTP、SNMP、RIP基于不可靠的UDP协议。同时,有些应用层协议占用了两个不同的端口号,如FTP的20、21端口,SNMP的161、162端口。这些应用层协议在不同的端口提供不同的功能。如FTP的21端口用来侦听用户的连接请求,而20端口用来传送用户的文件数据。再如,SNMP的161端口用于SNMP管理进程获取SNMP代理的数据,而162端口用于SNMP代理主动向SNMP管理进程发送数据。还有一些协议使用了传输层的不同协议提供的服务。如DNS协议同时使用了TCP 53端口和UDP 53端口。DNS协议在UDP的53端口提供域名解析服务,在TCP的53端口提供DNS区域文件传输服务。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (1)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!