端口
- 1. 理论
-
- 概念
- 分类
- 重定向
- 2. 由来
- 3. 一些实际使用
-
- 查看端口是否被占用
1. 理论
端口号的范围是从1~65535
概念
在网络技术中,端口(Port)
大致有两种意思:
一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。
二是逻辑意义上的端口,一般是指TCP/IP协议
中的端口,端口号的范围从0到65535
,比如用于浏览网页服务的80端口
,用于FTP服务的21端口
等等。
我们这里将要介绍的就是逻辑意义上的端口。
分类
- 公认端口(WellKnownPorts)
从0到1023
,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。 - 注册端口(RegisteredPorts)
从1024到49151
。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。 - 动态和/或私有端口(Dynamicand/orPrivatePorts)
从49152到65535
。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
重定向
系统管理员可以"重定向"端口:一种常见的技术是把一个端口重定向到另一个地址。例如默认的HTTP端口是80,不少人将它重定向到另一个端口,如8080。
实现重定向是为了隐藏公认的默认端口,降低受破坏率。这样如果有人要对一个公认的默认端口进行攻击则必须先进行端口扫描。
大多数端口重定向与原端口有相似之处,例如多数HTTP端口由80变化而来:81,88,8000,8080,8888
。
2. 由来
传输层的任务是为不同主机的进程之间的通信提供通用的数据传输服务。
在单个计算机中,进程标识符可以唯一的标识一个进程。但在网络中进行数据传输时,由于计算机种类的不同,各计算机操作系统指定进程标识符的格式也不同。所以,不同计算机中的进程进行通信时,就需要指定一个统一的标准,来识别不同主机中的不同进程。
在对其进行标识时,并不是表示某一特定进程(如进程1或进程2分别进行标识),而是标识可以实现某一特定功能的进程(将进程1和进程2进行统一标识)。所以引入端口号的概念,用于标识可以实现某特定功能的进程。
注意:
1、上述所说的这种协议栈层间的协议端口称为软件端口。
它是应用层的各种协议进程与传输层进行层间交互的一种地址。而硬件端口是不同硬件设备间交互的接口。
2、端口号只具有本地意义。
同一计算机中的不同端口号标识不同功能的进程。在网络中的不同计算机中,相同的端口号是没有关联的。不同计算机间进程用IP地址+端口号
进行区分。
3. 一些实际使用
查看端口是否被占用
-
lsof -i:端口号
(注意:该指令需要 root 用户的权限:sudo su
)lsof(list open files)
是一个列出当前系统打开文件的工具 -
可以使用
kill PID
来终止进程:PID(Process Identification)
:进程识别号 -
更多
lsof 的命令
如下:lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件 -
netstat -tunlp | grep 端口号
可选参数:
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
主要参考:
- TCP端口号范围及分类
- TCP/IP五层网络模型------传输层之端口号,UDP协议
- Linux 查看端口占用情况