端口号是什么意思

时间:2022-04-19 22:14 | 分类: 句子大全 | 作者:未来科技中心 | 评论: 次 | 点击:

端口号是什么意思

1. 端口号是什么

在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要介绍的就是逻辑意义上的端口。

那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。

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

需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访 问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则 可能使用“3457”这样的端口。逻辑意义上的端口有多种分类标准,下面将介绍常见的按端口号分布的分类:

(1)知名端口(Well-Known Ports)

知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

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

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

(2)动态端口(Dynamic Ports)

动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等 。

[编辑本段]怎样查看端口

一台服务器有大量的端口在使用,怎么来查看端口呢?有两种方式: 一种是利用系统内置的命令,一种是利用第三方端口扫描软件。

1.用“netstat -an”查看端口状态

在Windows 2000/XP中,可以在命令提示符下使用“netstat -an”查 看系统端口状态,可以列出系统正在开放的端口号及其状态.

2.用第三方端口扫描软件

第三方端口扫描软件有许多,界面虽然千差万别,但是功能却是类似 的。“Fport”在命令提示符下使用,运行结果 与“netstat -an”相似,但是它不仅能够列出正在使用的端口号及类型,还可 以列出端口被哪个应用程序使用。

3.用“netstat -n”命令,以数字格式显示地址和端口信息。

2. 端口号是什么

计算机"端口"是英文port的译义,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。

在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻 辑意义上的端口。

那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:256*256)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(256*256)。

在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。

本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。

端口其实就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。

不光接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利的回传数据包到这个端口。

3. IP地址的端口是什么意思

端口号---具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等,这里就不一一列举了。一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。

0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而1024-65535是并没有公共定义的端口号,用户可以自己定义这些端口的作用。

那么端口号到底有什么作用呢?请大家继续往下看。

当一台电脑启动了一个可以让远程其他电脑访问的程序,那么它就要开启至少一个端口号来让外界访问。我们可以把没有开启端口号的电脑看作是一个密封的房间,密封的房间当然不可能接受外界的访问,所以当系统开启了一个可以让外界访问的程序后它自然需要在房间上开一个窗口来接受来自外界的访问,这个窗口就是端口。

那么为什么要给端口编号来区分它们呢,既然一个程序开了一个端口,那么不是外部信息都可以通过这个开启的端口来访问了吗?答案是不可以。为什么呢?因为数据是用端口号来通知传输层协议送给哪个软件来处理的,数据是没有智慧的,如果很多的程序共用一个端口来接受数据的话,那么当外界的一个数据包送来后传输层就不知道该送给哪一个软件来处理,这样势必将导致混乱。

上一次提到提到在一个经过OSI第四层传输层封装的数据段的第四层报头里包含两个端口号,既源端口号和目的端口号,目的端口号的作用上面已经介绍了,下面让我们了解一下原端口号吧。

源端口号一般是由系统自己动态生成的一个从1024-65535的号码,当一台计算机A通过网络访问计算机B时,如果它需要对方返回数据的话,它也会随机创建一个大于1023的端口,告诉B返回数据时把数据送到自己的哪个端口,然后软件开始侦听这个端口,等待数据返回。而B收到数据后会读取数据包的源端口号和目的端口号,然后记录下来,当软件创建了要返回的数据后就把原来数据包中的原端口号作为目的端口号,而把自己的端口号作为原端口号,也就是说把收到的数据包中的原和目的反过来,然后再送回A,A再重复这个过程如此反复直到数据传输完成。当数据全部传输完A就把源端口释放出来,所以同一个软件每次传输数据时不一定是同一个源端口号。

4. 端口是什么意思

计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。

其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。

按端口号可分为3大类: (1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。

例如:80端口实际上总是HTTP通讯。 (2)注册端口(Registered Ports):从1024到49151。

它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。

例如:许多系统处理动态端口从1024左右开始。 (3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。

理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。

但也有例外:SUN的RPC端口从32768开始。 一些端口常常会被黑客利用,还会被一些木马病毒利用,对计算机系统进行攻击,以下是计算机端口的介绍以及防止被黑客攻击的简要办法。

5. 端口是什么意思

在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。

可见,把数据报顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。

本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。

说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。 端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。

不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。 端口的分类: 在Internet上,按照协议类型分类,端口被分为TCP端口和UDP端口两类,虽然他们都用正整数标识,但这并不会引起歧义,比如TCP的80端口和UDP的80端口,因为数据报在标明端口的同时,还将标明端口的类型。

从端口的分配来看,端口被分为固定端口和动态端口两大类(一些教程还将极少被用到的高端口划分为第三类:私有端口): 固定端口(0-1023): 使用集中式管理机制,即服从一个管理机构对端口的指派,这个机构负责发布这些指派。由于这些端口紧绑于一些服务,所以我们会经常扫描这些端口来判断对方是否开启了这些服务,如TCP的21(ftp),80(bios),UDP的7(echo),69(tftp)等等一些大家熟知的端口; 动态端口(1024-49151): 这些端口并不被固定的捆绑于某一服务,操作系统将这些端口动态的分配给各个进程,同一进程两次分配有可能分配到不同的端口。

不过一些应用程序并不愿意使用操作系统分配的动态端口,他们有其自己的‘商标性’端口,如oicq客户端的4000端口,木马冰河的7626端口等都是固定而出名的。 端口在入侵中的作用: 有人曾经把服务器比作房子,而把端口比作通向不同房间(服务)的门,如果不考虑细节的话,这是一个不错的比喻。

入侵者要占领这间房子,势必要破门而入(物理入侵另说),那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。 入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。

常见端口的介绍 由于本人知识有限,在这里只介绍一些浅显的内容。 1)21 ftp 此端口开放表示服务器提供了FTP服务,入侵者通常会扫描此端口并判断是否允许匿名登陆,如果能找到可写目录,还可以上传一些黑客程序做近一步入侵。

要想关闭此端口,需要关闭FTP服务。 2)23 Telnet 此端口开放表示服务器提供了远程登陆服务,如果你有管理员的用户名和密码,可以通过这个服务来完全控制主机(不过要先搞定NTLM身份认证),获得一个命令行下的shell。

许多入侵者喜欢开启这个服务作为后门。要想关闭此端口,需要关闭Telnet服务。

3)25 smtp 此端口开放表示服务器提供了SMTP服务,一些不支持身份验证的服务器允许入侵者发送邮件到任何地点,SMTP服务器(尤其是sendmail)也是进入系统的最常用方法之一。要想关闭此端口,需要关闭SMTP服务。

4)69 TFTP(UDP) 此端口开放表示服务器提供了TFTP服务,它允许从服务器下载文件,也可以写入文件,如果管理员错误配置,入侵者甚至可以下载密码文件。许多入侵者通过在自己机器运行此服务来传文件到目标机器,从而实现文件的传输。

要想关闭此端口,需要关闭TFTP服务。 5)79 finger 用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误, 回应从自己机器到其它机器finger扫描。

6)80 服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。

任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(InternetAssignedNumbersAuthority,IANA)来管理。

资料扩展

按端口号可分为3大类:

(1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。

(2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。

(3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

参考资料:百度百科-端口号

8. 什么叫端口

果把IP地址比作一间房子 ,端口就是出入这间房子的门。

真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。 在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择。

可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。

端口号是什么意思

「linux专栏」什么是端口号?如何查看端口号信息?

尽管搞IT多年,但一些基本性的概念却依旧似懂非懂,就好比说什么是端口号?你说知道吧,确实知道,每个程序都有个自己的端口号,有些都是约定俗称的,比如FTP端口21、SFTP端口22、IIS端口80等等。可是让你去细细解释一下,还真不一定能回答上来。

「linux专栏」什么是端口号?如何查看端口号信息?

什么是端口号?

我们都知道,每台联网的计算机都有自己的IP,这个IP好比是在互联网上的地址编号,是唯一的,这样才能通过IP地址正常通信。那么问题就来了,一台计算机它可能会提供多个服务,比如Apache服务、FTP服务、Email服务等等,通过IP地址来区分显示是不可能的。这个时候我们就需要用端口来进行区分,每个服务对应指定的端口,这样通过IP+端口就能唯一确定要访问的服务了。

「linux专栏」什么是端口号?如何查看端口号信息?

为了统一整个互联网的端口和网络服务的对应关系,以便让所有的主机都能使用相同的机制来请求或提供服务,同一个服务使用相同的端口,这就是协议。

计算机中的协议主要分为两大类:面向连接的可靠的TCP协议(Transmission Control Protocol,传输控制协议);面向无连接的不可靠的UDP协议(User Datagram Protocol,用户数据报协议)。这么多的端口,我们该如何知道哪个端口对应哪个呢?其实在linux系统中,提供了/etc/services的文件,可以进行查看。

「linux专栏」什么是端口号?如何查看端口号信息?

端口信息查看方法(进程号与的端口号均可查看)

以下的命令较多,详细的用法不必深究,先记住固定用法,后期遇到了再细讲。

方法 1:使用 ss 命令

ss 一般用于转储套接字统计信息,类似于 netstat 输出的信息,但它显示了更多的 TCP 信息和状态信息。它还可以显示所有类型的套接字统计信息,包括 PACKET、TCP、UDP、DCCP、RAW、Unix 域等。

[root@localhost ~]#  ss -tnlp | grep dmserverState      Recv-Q Send-Q          Local Address:Port                         Peer Address:Port              LISTEN     0      5                           *:5900                                    *:*                   users:          LISTEN     0      128         :::5236                    :::*                   users:(("dmserver",pid=7060,fd=4))[root@localhost ~]# 

方法 2:使用 netstat 命令

netstat 能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。既然已经会用ss的高级命令了,就忘记它吧。

[root@localhost ~]# netstat -tnlpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp6       0      0 :::4236                 :::*                    LISTEN      7059/dmap               tcp6       0      0 :::5236                 :::*                    LISTEN      7060/dmserver       tcp6       0      0 :::22                   :::*                    LISTEN      6831/sshd           tcp6       0      0 ::1:631                 :::*                    LISTEN      6832/cupsd          tcp6       0      0 ::1:25                  :::*                    LISTEN      7225/master         [root@localhost ~]# 

方法 3:使用 fuser 命令

fuser 工具会将本地系统上打开了文件的进程的进程 ID 显示在标准输出中,一般通过端口去查看对应的进程和和用户。

[root@localhost ~]# fuser -v  5236/tcp                     用户     进程号 权限   命令5236/tcp:            dmdba      7060 F.... dmserver

方法 4:使用 nmap 命令

nmap(“Network Mapper”)是一款用于网络检测和安全审计的开源工具。它最初用于对大型网络进行快速扫描,但它对于单个主机的扫描也有很好的表现。

nmap 使用原始 IP 数据包来确定网络上可用的主机,这些主机的服务(包括应用程序名称和版本)、主机运行的操作系统(包括操作系统版本等信息)、正在使用的数据包过滤器或防火墙的类型,以及很多其它信息。

[root@localhost ~]# nmap -sV -p 5236 localhostStarting Nmap 6.40 ( http://nmap.org ) at 2021-01-01 00:23 CSTmass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-serversNmap scan report for localhost (127.0.0.1)Host is up (0.00031s latency).Other addresses for localhost (not scanned): 127.0.0.1PORT     STATE SERVICE    VERSION5236/tcp open  tcpwrappedService detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 10.91 seconds

可以看出,对于普通用户来说,该命令似乎并不好用,也看得不大懂,还需要注意的是该命令一般不会默认安装,需要额外安装。

方法 5:使用 systemctl 命令

systemctl 是 systemd 系统的控制管理器和服务管理器,通过systemctl可以查看服务的具体运行信息,包括PID、是否自启、启动命令等。很遗憾,通过该命令只能查看到对应的PID进程号,如果要查看对应的端口号,可以通过本文中其他端口号、进程号查看方法进行互查。

[root@localhost ~]# systemctl status DmServiceDMSERVER.service ● DmServiceDMSERVER.service - DM database instance service   Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled)   Active: active (running) since 一 2021-03-22 16:33:05 CST; 15h ago  Process: 6837 ExecStart=/soft/dmdb/bin/DmServiceDMSERVER start (code=exited, status=0/SUCCESS) Main PID: 7060 (dmserver)    Tasks: 54   CGroup: /system.slice/DmServiceDMSERVER.service           └─7060 /soft/dmdb/bin/dmserver /soft/dmdb/data/DAMENG/dm.ini -noconsole3月 22 16:32:48 localhost.localdomain systemd[1]: Starting DM database instance service...3月 22 16:33:05 localhost.localdomain DmServiceDMSERVER[6837]: [39B blob data]3月 22 16:33:05 localhost.localdomain systemd[1]: Started DM database instance service.[root@localhost ~]# 

方法 6:使用 lsof 命令

lsof 能够列出打开的文件,并列出系统上被进程打开的文件的相关信息。

[root@localhost ~]# lsof -i:5236COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEdmserver 7060 dmdba    4u  IPv6  46668      0t0  TCP *:padl2sim (LISTEN)

总体来说,进程号和端口号查看的办法虽然很多,但在实际工作中,我们只需要掌握一种自己认为最好用的命令就可以了。后期会根据情况对相关命令进行复盘,详细介绍其用法。

更多实用技能敬请期待,收藏+关注才不会迷路哦[憨笑]


  • 发表评论
【已经有()位大神发现了看法】

  • 匿名发表
  •  
人参与,条评论