考点三:传输层的端口
1.端口的作用
网络层提供的是主机到主机的通信服务,应用层提供的是面向用户或面向应用的服务,所以传输层既要提供进程到进程(端到端)的通信服务,又要提供区分进程的方法。
主机上正在运行的王者荣耀、QQ音乐及迅雷和微信都是进程,要区分这些进程最简单的方法是对这些进程进行编号。这个编号是进程标识符,运行在计算机中的进程用进程标识符来标识,大家如果有操作系统基础的话,这个进程标识符就是存储在PCB(进程控制块)中的PID。而在因特网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进程进行标识,这种方法就是进程端口,其实就是用一个数字对进行标识。
端口用一个16位端口号进行标识,端口标识的是主机中的应用进程。端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
定义端口号之后,还需要区分TCP数据和UDP数据。在第四讲中讲到,IP首部中有一个协议字段,用来标识网络层的上一层所采用的是哪种传输层协议。根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容,还是UDP的内容。事实上,端口号由其使用的传输层协议决定。不同的传输协议可以使用相同的端口号。例如,TCP与UDP使用同一个端口号,但使用目的各不相同。这是因为端口号上的处理是根据每个传输协议的不同而进行的。数据到达网络层后,会先检查IP首部中的协议号,再传给相应协议的模块。如果是TCP,就传给TCP模块;如果是UDP,就传给UDP模块去做端口号的处理。即使是同一个端口号,由于传输协议是各自独立地进行处理,相互之间也不会受到影响。
2.端口的分类
应用进程通过端口号进行标识,端口号长度为16位,能够表示65536个不同的端口号。端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,不同计算机的相同端口号没有联系。根据端口号范围可将端口分为3类。
(1)熟知端口,端口号范围一般为0~1023。这些端口用于标记大家比较熟悉的进程,如HTTP、FTP、DNS等。
(2)登记端口,端口号范围为1024~49151,为没有熟知端口号的应用程序所使用。使用这个范围的端口号必须在互联网数字分配机构登记,以防止重复。
(3)客户端口或短暂端口,端口号范围为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程使用。
在考试中,我们只需要注意客户端应用程序的端口号比较大,但是切记不要超过65535,因为16位端口号最大值是65535。表5-1所示为一些常用的端口号(这个表格需要记住)。
表5-1 常用的端口号
注意:端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程。网络中位置不同的两台计算机都可以使用80端口来访问网络。
3.套接字
在网络中通过IP地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中的不同应用进程。在网络中采用发送方和接收方的套接字组合来识别端口号,即
套接字=(主机IP地址,端口号)
它唯一地标识了网络中的一个主机和其上的一个应用(进程)。在网络通信中,主机A发送给主机B的报文段包含目的端口号和源端口号,源端口号作为发送方标识的一部分,目的端口号作为接收方标识的一部分。
4.实例感悟
通过一个例子来具体说明端口号和IP以及传输层协议,如何定位到具体的应用进程,如图5-5所示。
图5-5 定位到具体的应用进程
如两个客户机的IP分别是192.168.1.102和192.168.1.103。其中192.168.1.102上有两个http应用,分别对应的是淘宝网页和新闻网页;192.168.1.103上有一个http应用,对应的是淘宝网页。服务器的IP是192.168.1.101,为了响应客户机的请求,主机上有3个http应用。
在图5-5中,②和③的通信是在同一台客户机上进行的。它们的目标端口号相同,都是80。在这种情况下,必须严格区分这两个通信,可以根据源端口号加以区分。
在图5-5中,①与②的目的端口号和源端口号完全相同,但是它们各自的源IP地址不同,也会认为是两个不同的通信。
因此,TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信。它们是“源IP地址”“目的IP地址”“协议(UDP/TCP)”“源端口号”“目的端口号”。只要其中某一项不同,则被认为是其他通信。
政哥应试提醒:在考试中,主要考查传输层的功能,以及传输层两个协议(TCP和UDP)概述与端口号的功能,属于记忆性的知识点,记住就可以了。
难度系数:★
牛刀小试
1.下列关于TCP和UDP的描述,正确的是( )。
A.TCP和UDP都是无连接的
B.TCP是无连接的,UDP是面向连接的
C.TCP适用于可靠性较差的广域网,UDP适用于可靠性较高的局域网
D.TCP适用于可靠性较高的局域网,UDP适用于可靠性较差的广域网
2.下面关于源端口地址和目的端口地址的描述中,正确的是( )。
A.在TCP/UDP报文中,源端口地址和目的端口地址是不能相同的
B.在TCP/UDP报文中,源端口地址和目的端口地址是可以相同的,用来表示发回给自己的数据
C.在TCP/UDP报文中,源端口地址和目的端口地址是可以相同的,因为虽然端口地址一样,但其所在的主机是不同的
D.以上描述均不正确
3.关于TCP和UDP端口,下列说法中正确的是( )。
A.TCP和UDP分别拥有自己的端口号,二者互不干扰,可以共存于同一台主机
B.TCP和UDP分别拥有自己的端口号,但二者不能共存于同一台主机
C.TCP和UDP的端口号没有本质区别,二者互不干扰,可以共存于同一台主机
D.TCP和UDP的端口号没有本质区别,但二者相互干扰,不能共存于同一台主机
4.通信子网不包括( )。
A.物理层 B.数据链路层 C.传输层 D.网络层
5.在TCP/IP网络类型中,提供端到端的通信的是( )。
A.应用层 B.传输层 C.网络层 D.数据链路层
6.传输层可以通过( )标识不同的应用。
A.物理地址 B.端口号 C.IP地址 D.逻辑地址
7.可靠的传输协议中的“可靠”指的是( )。
A.使用面向连接的会话 B.使用“尽力而为”的传输机制
C.使用滑动窗口来维持可靠性 D.使用确认机制来确保传输的数据不丢失
8.网络上唯一标识一个进程需要用一个( )。
A.一元组(服务端口号)
B.二元组(主机IP地址,服务端口号)
C.三元组(主机IP地址,服务端口号,协议)
D.五元组(本机IP地址,本地服务端口号,协议,远程主机IP地址,远程服务端口号)
9.下列关于传输层端口的叙述中,说法错误的是( )。
A.服务端端口号分为两类,即熟知端口号和登记端口号
B.端口号只具有本地意义
C.端口号用作交换机转发标识
D.若没有端口号,传输层则无法知道数据应当交付给应用层的哪个进程
10.在计算机体系结构中,传输层的功能是( )。
A.完成两个主机之间的通信 B.完成两个主机进程之间的通信
C.为两个相邻节点之间传送数据 D.透明传送比特流
牛刀小试解析
1.C 解析 本题考查TCP和UDP协议的区别。这是一个比较简单的题目。大家知道,TCP是面向连接的服务,UDP是面向无连接的服务。对于面向连接的服务,一般偏向于可靠性较差的网络;相反,面向无连接的服务偏向于可靠性较高的网络。
局域网有高可靠性、易扩展、易于管理及安全等多种特性。TCP较适用于广域网。在可靠性高的局域网中,传输数据是一个十分重要的目标,用UDP比较合适。在表5-2中,我们将从多方面对TCP和UDP协议进行详细的比较。
表5-2 UDP和TCP对比
2.C 解析 本题考查TCP/UDP报文的源端口地址和目的端口地址是否可以一致。UDP和TCP的源端口地址和目的端口地址可以是一样的。端口只标识了一个进程,并没有标识一台主机,这个需要注意。源端口地址和目的端口地址一样,并不是表示这是发回给自己的数据,这不同于IP地址,切记这一点。
3.A 解析 本题考查UDP和TCP端口的区别与联系。端口号用来标识应用层的某个进程,而不是用于标识某一台主机。端口号只有本地意义,在因特网中,不同的计算机上的相同端口号是没有关系的。在同一台主机上,TCP和UDP分别有自己的端口号,互不干扰,可以共存。
表5-3和表5-4分别为常见的TCP和UDP端口号。
表5-3 常见的TCP端口号
表5-4 常见的UDP端口号
4.C 解析 本题考查通信子网。通信子网包括物理层、数据链路层和网络层;资源子网则包括传输层和应用层。所以,C项的传输层是资源子网的内容,不是通信子网的内容。
5.B 解析 网络层提供点对点的服务,面向的是主机;而传输层提供的是端到端的服务,面向的是应用层的进程。所以,本题选择B项。
6.B 解析 本题考查端口号的作用。传输层通过端口号来标识不同的应用。
7.D 解析 本题考查可靠传输协议中“可靠”的含义。我们说到协议的可靠性,是指使用确认机制来确保传输的数据不丢失。例如,在传输层的TCP协议,对报文提供确认机制来保证可靠传输。而UDP协议采用的是一种尽力而为的服务,对报文不提供确认机制,因而协议不是可靠的。
8.B 解析 本题考查套接字。套接字在网络上唯一标识一个进程,用一个二元组表示,即(主机IP地址,服务端口号)。值得注意的是,TCP的套接字是四元组(目的主机IP地址,目的进程端口号,源主机IP地址,源进程端口号),而UDP的套接字是二元组(目的主机IP地址,目的进程端口号)。一般认为,套接字为(主机IP地址,端口号),它唯一地标识了一台主机和在该主机上的一个进程。
9.C 解析 这里提示一个易错的知识—服务端的端口号分为两类:一类是熟知端口号,范围为0~1023;另一类是登记端口号,范围为1024~49151。还要特别注意,客户机使用的端口号是49152~65535,在客户机进程运行的时候可以动态选择,进程结束之后该端口号可以供其他进程使用。这是易错的知识,千万不要混淆了。
端口号只具有本地意义,请参考第3题的答案。
C选项显然不对,端口号显然不用作交换机转发标识。
端口号用于标识主机上面的进程,若无端口号,则传输层无法知道该把数据交付给哪个应用层进程。
所以,A、B、D项都是正确的。
10.B 解析 本题考查传输层的功能。这是一个很不错的题目,通过解析本题,我们来总结一下网络体系结构各层的特点。
【经典总结】
①两个主机之间的通信,属于点对点的通信,是网络层的功能。
②两个进程之间的通信,属于端到端的通信,是传输层的功能。
③数据链路层则在两个相邻节点间的线路上无差错地传输数据,该数据的单位是帧。
④物理层则透明传输比特流。
其实在互联网中,任何两台通信的主机之间从源端口到目的端口的信道都是由一段一段的点到点通信线路组成的(一个局域网中两台主机通信时只有一段点到点的线路),点到点通信是由网络层来实现的,网络层屏蔽了不同网络之间的差异,构建了一个逻辑上的通信网络,因此它解决了数据通信问题。
端到端通信是建立在点到点通信基础之上的,它是比网络互联层通信更高一级的通信方式,完成应用程序(进程)之间的通信。端到端的通信是由传输层来实现的。
所以,本题选择B项。