目 录
[(1)公认端口(Well Known Ports):](#(1)公认端口(Well Known Ports):)
[(2)注册端口(Registered Ports):](#(2)注册端口(Registered Ports):)
[(3)动态和/或私有端口(Dynamic and/or Private Ports):](#(3)动态和/或私有端口(Dynamic and/or Private Ports):)
一、什么地方会用到网络端口?
我们经常在浏览器的地址、或一些命令行栏输入如下一些URL(统一资源定位符):
|----|---------------------------------------------------------------------------------------|-----------------------------------|
| 编号 | URL | 描述 |
| 1 | http://10.2.2.2:23000 | 访问IP为10.2.2.2,端口为23000的网页 |
| 2 | rtsp://192.1.3.33:5546 | 访问IP为10.2.2.2,端口为5546提供的RTSP流 |
| 3 | telnet 166.3.2.1 2329 | 访问166.3.2.1上tcp端口2329提供的服务 |
| 4 | rtmp://123.45.22.33:8080 | 访问IP为123.45.22.33,端口为8080提供的RTMP流 |
| 5 | http://vidist.cn | 访问域名为vidisit.cn的web网站,端口80 |
| 6 | https://vt.vidisit.cn:2800 | 访问域名为vt.vidisit.cn的web网站,端口2800 |
这些url 都是为了访问一些服务,这些服务是有某个服务器提供。同时可能会输入如下URL:
http://192.168.1.8/crm/index.php?pageto_module=Home&pageto_action=index
http://121.37.68.30:26558/realv/index-auto.html?cid=32050100001310000212
++rtsp://192.1.3.33:5546/devid=3205010000131++
这些也代表着特定的意义。我们可以看出,我们要访问网络资源,除了要输入IP地址以外,我们还需要一个端口、以及一些协议的名称,比如HTTP、RTSP、RTMP、TELNET等等。这里面说的端口是TCP或者UDP的端口,这些协议一般都属于应用层协议,都是基于TCP和UDP的,或者说是在传输层以上的应用层协议。
基于TCP/IP的各种应用层协议非常多,我们这里就不再详细描述了,我们这里主要谈谈网络端口。
二、端口的定义和作用
(一)TCP协议和UDP协议
TCP(Transmission Control Protocol)协议,意为传输控制协议。
UDP(User Datagram Protocol)协议,意为用户数据报协议。
TCP和UDP协议在TCP/IP五层协议中都位于传输层,负责在网络中传输数据。具体来说,它们都提供了数据传输的端到端服务,并使用端口号来标识发送和接收数据的源应用程序。
TCP和UDP协议在数据传输方式和服务质量方面存在显著差异。TCP协议提供面向连接的、可靠的数据传输服务。它使用端口号来标识不同的应用程序,以便在网络中正确地路由和传输数据。TCP协议通过确认机制、重传机制、流量控制和拥塞控制等机制来保证数据传输的可靠性和效率。而UDP协议则是一种无连接的、尽最大努力的数据传输协议,不保证数据传输的可靠性和顺序,适用于对实时性要求较高的应用,如流媒体、VoIP等。
(二)端口的定义
在TCP/IP协议中,端口号是一个16位的整数,用于标识网络进程。端口号的主要作用是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层的哪个进程。从这种意义上讲,端口是用来标志应用层的进程。每个端口号只被一个进程占用,但一个进程可以绑定多个端口号。
在因特网中,不同计算机的相同端口号是没有联系的,端口的作用是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层的哪个进程。
如果把IP地址比作一栋大楼,端口就是这栋大楼的房间,一个IP地址的端口可以有65536(即:256×256)个,端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(256×256)。可以理解为这个这栋大楼有65536个房间。
网络层(IP层)接收到网络数据以后,根据端口号,分发给各个应用层APP。类似,快递到达大楼后,大楼传达室根据目的地址上面的具体房间号,分发给大楼里面的不同的房间(大楼入住单位),图示如下:
(三)在TCP/IP体系中,端口(TCP和UDP)的作用
归纳一下,在TCP/IP协议中,主要是TCP和UDP用到了端口号。端口的作用主要有两个:
- 标识应用程序:每个端口号都是唯一的,可以用来标识运行在计算机上的应用程序。当数据包在网络中传输时,目的端口号可以告诉操作系统应该将数据包发送到哪个应用程序。
- 实现多任务处理:通过使用端口号,一台计算机可以同时运行多个应用程序,并正确地处理进入和离开的数据包。每个应用程序可以绑定到一个特定的端口号,这样就可以通过不同的端口号来区分不同应用程序的数据包。
(四)使用端口进行网络通信
在TCP/IP中,不管是TCP还是UDP,它们都是通过源端口号和目的端口号来标识不同的应用程序,并使用这些端口号来传输数据达到网络通信的目的。当网络中的数据到达目的主机时,操作系统的网络协议栈会根据数据中的目的端口号将数据送到相应的应用程序。这样,不同的应用程序就可以通过不同的端口来接收和发送数据,实现网络通信。
以UDP为例,UDP进行数据通信的过程可以简要描述如下:
- 创建套接字socket:首先,在UDP通信中,需要创建一个套接字socket。这个套接字用于在本地主机上标识一个通信端点。
- 绑定端口:接下来,需要将套接字绑定到一个特定的端口上。这个端口用于标识发送和接收数据的进程。端口号是一个16位的整数,范围从0到65535(一般不用一些预留的端口)。
- 发送数据:一旦套接字被绑定到端口上,就可以使用这个套接字发送数据了。UDP发送数据时,会将数据封装成UDP数据报,并加上源端口号和目的端口号,然后发送到目的主机。
- 接收数据:在目的主机上,如果某个进程绑定了一个相同的端口号,它就可以接收数据了。当UDP数据报到达目的主机时,操作系统的网络协议栈会根据目的端口号将数据报送到相应的应用程序。
- 关闭套接字socket:当通信完成后,需要关闭套接字以释放资源。
总的来说,端口号在TCP/IP协议中起到了标识和区分不同应用程序的重要作用,使得网络通信能够高效、有序地进行。
三、端口的分类
(一)端口分配方式
一般情况下,端口号有两种基本分配方式:
第一种叫全局分配,这是一种集中分配方式,由一个公认权威的顶级机构根据用户需要进行统一分配,并将结果公布于众,
第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(也称为binding,绑定)。
TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,
- 保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口(叫周知端口),即使在不同的机器上,其端口号也相同。
- 自由端口,也就是剩余的为端口,以本地方式进行分配。
TCP和UDP规定,小于256的端口才能作为保留端口。
(二)TCP/IP的端口号分配
(1)公认端口(Well Known Ports):
从0到1023,它们紧密绑定(binding)于一些特点服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中"0"是无效端口,当你试图使用一种通常的闭合端口连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。
(2)已注册端口(Registered Ports):
从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
(3)动态和/或私有端口(Dynamic and/or Private Ports):
从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
四、常见的端口号
TCP/IP协议中有很多已知的端口号,这些端口号被分配给不同的应用程序和服务。以下是一些常见的端口号及其对应的服务(这只是一部分常见端口,实际上有更多端口号):
- HTTP(超文本传输协议):默认端口号为80,用于Web浏览器和Web服务器之间的通信。
- HTTPS(安全超文本传输协议):默认端口号为443,用于加密的Web浏览器和Web服务器之间的通信。
- FTP(文件传输协议):默认端口号为21,用于文件传输服务。
- TFTP(小型文件传输协议),默认端口号为69,用于文件传输服务。
- TELNET:默认端口号为23,用于远程登录到其他计算机或设备。
- SMTP(简单邮件传输协议):默认端口号为25,用于电子邮件传输。
- POP3(Email协议版本3):默认端口号为110,用于接收电子邮件。
- IMAP(Internet邮件访问协议):默认端口号为143,用于访问和管理电子邮件。
- DNS(域名系统):默认端口号为53,用于域名解析服务。
- SSH(安全shell协议):默认端口号为22,用于安全的远程登录和执行命令。
- SNMP(简单网络管理协议):默认端口号为161和162,用于网络设备管理和监控。
- NTP(网络时间协议):默认端口号为123,用于时间同步服务。
- DHCP(动态主机配置协议):默认端口号为67和68,用于自动分配IP地址和其他网络配置信息。
随着时间的推移,新的应用程序和服务可能会出现,并且可能会分配新的端口号。个人可以根据您的具体需求和兴趣,查找相关的文档和资源来获取所需的端口号信息。
四、视频监控和流媒体通信中的端口号
在网络视频监控和流媒体通信中,通常会使用以下常见的端口号:
- HTTP(超文本传输协议):参考上一章节。
- HTTPS(安全超文本传输协议):参考上一章节。
- RTSP(实时流协议):用于实时传输音频和视频数据,默认端口号为554。
- RTP(实时传输协议):用于实时传输音频和视频数据,通常与RTSP一起使用,默认端口号为5004或5005。
- SIP(会话初始协议):用于建立和管理音视频通话,默认端口号为5060。
- SNMP(简单网络管理协议):参考上一章节。
- TFTP(小型文件传输协议):参考上一章节。
- GB28181:GB28181协议可使用TCP和UDP协议进行音视频传输,端口号通常为默认的50000左右。对于控制命令、注册等交互性请求,通常会通过HTTP或者TCP的方式进行通信,其端口号需要平台方和设备方提前约定,比如有的采用5060,有的采用7060。可以参考以前的文章:国标GB28181对接的时候如何配置服务端口和本地端口。
- RTMP(Real Time Messaging Protocol):默认端口号是1935。RTMP是一种用于实时传输音频、视频和数据的协议,通常用于流媒体和实时应用程序。在使用RTMP进行通信时,需要在服务器和客户端之间建立连接,并使用特定的端口号进行数据传输。默认情况下,RTMP使用端口号1935。但是,具体的端口号可能会因应用程序和部署环境的不同而有所变化。因此,在实际使用中,应该根据具体情况进行配置和调整。
- HLS(HTTP 实时流协议):HLS基于HTTP的流媒体传输协议,端口号为8080。
- WebRTC(Web实时通信):WebRTC是一个实时通信协议,其默认端口号为8080。
- FLV(Flash视频):由于FLV由Adobe公司出品,其本身并未像HLS或RTMP一样建立网络服务,但其可以被用于流媒体传输。FLV协议本身并不使用端口号,而是通过HTTP或RTMP等协议进行传输。
这些端口号被广泛应用于网络视频监控领域的不同组件和协议中。对于需要安全传输的视频监控数据,可能会使用加密的协议和端口号,以确保数据的安全性和隐私保护。