应用进程跨越网络的通信

运输层协议概述

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

从 IP 层来说,通信的两端是两台主机。IP 数据报的首部明确标志了这两台知己的 IP 地址。但 “两台主机之间的通信” 这种说法还不够清楚。这是因为,真正进行通信是实体是主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据。因此严格地讲,两台主机进行通信就是两台主机中的应用进程互相通信。 IP 协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中应用进程。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。

运输层的端口

我们知道,在单个计算机中的进程是用进程标识符来标志的。但是在互联网环境下,用计算机操作系统所指派的这种进程标识符来标志运行在应用层的各种应用进程则是不行的。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法(而这种方法必须与特定操作系统无关)对 TCP/IP 体系的应用进程进行标志。

但是,把一个特定机器上运行的特定进程,指明为互联网上通信的最后终点还是不可行的。这是因为进行的创建和撤销都是动态的,通信的一方几乎无法识别对方机器上的进程。另外,我们往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个。

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

请注意,这种在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。不同的系统具体实现端口的方法可以是不同的(取决于系统使用的操作系统)。

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

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

  • 服务器端使用的端口号
  • 客户端使用的端口号

服务器端使用的端口号

这里又分为两类,最重要的一类叫做 熟知端口号 或 系统端口号,数值为 0 ~ 1023。IANA 把这些端口号指派给了 TCP/IP 最重要的一些应用程序,让所有的用户都知道。当一种新的应用程序出现后,IANA 必须为它指派一个熟知端口,否则互联网上的其他应用进程就无法和它进行通信。

常用的熟知端口号

应用程序熟知端口号
FTP21
TELNET23
SMTP25
DNS53
TFTP69
HTTP80
SNMP161
SNMP(trap)162
HTTPS443

另一类叫做登记端口号,数值为 1024 ~ 49151。这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号就必须在 IANA 安装规定的手续登记,以防止重复。

客户端使用的端口号

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

TCP 把连接作为最基本的抽象。每一条 TCP 连接有两个端点。那么,TCP连接的端点是什么呢?不是主机,不是主机的 IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字或插口。端口号拼接到 IP 地址即构成了套接字。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值