"端口"是英文port的意译,是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。今天我们主要来学习计算机的虚拟端口。

我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。

理解小技巧:可以把端口比作银行的服务窗口,对外服务。现金业务一个窗口,非现金业务一个窗口,贵宾服务一个窗口,用来接待不同的客户。操作系统比这个要复杂得多,同时运行的服务程序非常多,为了能够方便的管理,于是就开了很多的窗口,一个服务程序一个,相互不干扰。

其实我们常说的端口也叫协议端口它总是和ip一起出现。如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:216)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(216-1)。

注意:协议端口分为TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。

扩展:

1.周知端口(Well Known Ports)

周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。

网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在 地址栏上指定端口号,方法是在地址后面加上冒号“:”(半角),再加上端口号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。

但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。

2.动态端口(Dynamic Ports)

动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。

3.注册端口

端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。

4. 套接字

套接字,是支持网络通信的基本操作单元,它是一个程序接口,它把复杂的TCP/IP协议族封装为几个简单的接口提供给应用层调用,实现程序在网络中的通信。

socket是计算机网络通信的基本技术之一。大多数基于网络的软件,都是基于socket实现的。在通信开始之前,网络应用程序必须创建套接字。可以将它比作电话的插孔,电源的插座,没有它将无法进行通信。

总结

上面的知识是为了大家从底层了解网络通信,网络通信涉及物理层和应用层,我们进行软件测试针对的是应用层。

不同的客户端和不同服务端进行数据交互,为了统一大家制定了协议,也就是网络传输协议接口,我们的接口测试主要就是测试网络接口。

目前使用最广泛的就是网络传输协议是HTTP协议。