端口是什么含义,怎么判断一个端口是否被占用了

 我来答
没文化的大脑袋CU
2022-07-01 · TA获得超过2693个赞
知道小有建树答主
回答量:556
采纳率:100%
帮助的人:78.7万
展开全部
简单的讲一下自己对端口的理解,以及一些与端口有关的命令的介绍。

1.背景介绍

什么是端口

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

我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?

端口机制便由此被引入进来。

本地操作系统会给那些有需求的进程分配协议端口 (protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。

当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。

2.知识剖析

端口的分类  在Internet上,按照协议类型分类,端口被分为TCP端口和UDP端口两类

虽然他们都用正整数标识,但这并不会引起歧义,比如TCP的80端口和UDP的80端口,因为数据报在标明端口的同时,还将标明端口的类型。

从端口的分配来看,端口被分为固定端口和动态端口两大类: 固定端口(0-1023):使用集中式管理机制,即服从一个管理机构对端口的指派,这个机构负责发布这些指派。

由于这些端口紧绑于一些服务,所以我们会经常扫描这些端口来判断对方 是否开启了这些服务 如TCP的21(ftp),80(http),139(netbios),UDP的7(echo),69(tftp)等等一些大家熟知的端口;。

动态端口(1024-49151):这些端口并不被固定的捆绑于某一服务,操作系统将这些端口动态的分配给各个进程, 同一进程两次分配有可能分配到不同的端口。

不过一些应用程序并不愿意使用操作系统分配的动态端口,他们有其自己的‘商标性’端口,如oicq客户端的 4000端口,

3.常见问题

 3.1.怎么判断一个端口是否被占用了

 3.2.如何判断一个端口是否被防火墙拦截

 3.3.怎么用Telnet判断端口号是否打开

4.解决方案

4.1 使用netstat命令然后 tasklist taskkill

关于netstat命令,我们先来看看windows帮助文件中的介绍:

Netstat

显示协议统计和当前的 TCP/IP 网络连接。该命令只有在安装了 TCP/IP 协议后才可以使用。

netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]

参数

-a显示所有连接和侦听端口。服务器连接通常不显示。

-e显示以太网统计。该参数可以与 -s 选项结合使用。

-n以数字格式显示地址和端口号(而不是尝试查找名称)。

-s显示每个协议的统计。默认情况下,显示 TCP、UDP、ICMP 和 IP 的统计。-p 选项可以用来指定默认的子集。

-p protocol显示由 protocol 指定的协议的连接;protocol 可以是 tcp 或 udp。如果与 -s 选项一同使用显示每个协议的统计,protocol 可以是 tcp、udp、icmp 或 ip。

-r显示路由表的内容。

interval重新显示所选的统计,在每次显示之间暂停 interval 秒。按 CTRL+B 停止重新显示统计。如果省略该参数,netstat 将打印一次当前的配置信息。

好了,看完这些帮助文件,我们应该明白netstat命令的使用方法了。现在就让我们现学现用,用这个命令看一下自己的机器开放的端口。进入到命令行下,使用netstat命令的a和n两个参数:

C:/>netstat -an

Active Connections

Proto Local Address Foreign Address State

TCP 0.0.0.0:80     0.0.0.0:0     LISTENING

TCP 0.0.0.0:21     0.0.0.0:0     LISTENING

TCP 0.0.0.0:7626   0.0.0.0:0     LISTENING

UDP 0.0.0.0:445   0.0.0.0:0

UDP 0.0.0.0:1046   0.0.0.0:0

UDP 0.0.0.0:1047   0.0.0.0:0

解释一下,Active Connections是指当前本机活动连接,Proto是指连接使用的协议名称,Local Address是本地计算机的 IP 地址和连接正在使用的端口号,Foreign Address是连接该端口的远程计算机的 IP 地址和端口号,State则是表明TCP 连接的状态,你可以看到后面三行的监听端口是UDP协议的,所以没有State表示的状态。看!我的机器的7626端口已经开放,正在监听等待连接,像这 样的情况极有可能是已经感染了冰河!急忙断开网络,用杀毒软件查杀病毒是正确的做法。

然后tasklist命令是看这个进程的id的 还可以使用管道命令 只提取包含这个端口的

tasklist | findstr   “进程”

这里注意两点 

第一个管道命令windows下是 | findstr“” 也就是只提取包含“”的内容而Linux 下是 | grep “”

第二 windows下 可以使用 /? 来获取命令的帮助文档 比如 tasklist /? 快去自己试试吧

 taskkill 用来杀死这个进程 taskkill /f /t /im 3211(查到的进程id)

那这些/f  /t 都是什么呢 用刚介绍的 /? 去看看吧

总结一下  就是查询那个程序在使用我们要用端口 它的进程是多少 我们去杀死他 哈哈 这个端口归我了  

4.2检查防火墙配置

防火墙就像一面结界  我们知道端口相当于门 而且要和另外一个端口相连 仿佛两个门连接在一起成为通道 数据就在这里传送  而防火墙就在这两个门之中 门是开着的(端口是开着的)  但是数据传过来 让防火墙挡住了 :去去去 不让你过 这种情况需要配置防火墙 而且防火墙不止一个哦 系统本身有防火墙 要是服务器 服务器又有一个防火墙

事实上我们得首先判断一下 到底是不是防火墙挡住了导致的数据传送问题 

原理就是telnet 本机 端口 看看通不通 因为这样不会经过防火墙 

在别的机器上telnet 刚才的ip 端口 看看通不通 这个肯定过防火墙

第一个通知 第二个不通 一般就是防火墙在搞鬼 具体的看我的实战视频

4.3.与前面类似 telnet类似 具体操作看视频

这里要注意的是 windows 下 默认没有开启telnet服务 去控制面板 程序  程序和功能

打开或关闭windows功能 下面去开启

而linux可能需要自己装一下 yum list | grep "telnet"  先来查看有哪些安装包

yum install 安装包的名字 -y 就可以安装了

5.编码实战

6 拓展思考 

我们常用的端口有哪些  比如mysql的3306 

默认的保留端口有哪些  比如22 80等

ppt  https://ptteng.github.io/PPT/PPT-java/Java-task2-What%20is%20a%20port%20How%20do%20you%20determine%20if%20a%20port%20is%20occupied.html#/1

看我的实战操作

推荐的免费学习网站:http://www.jnshu.com/login/1/13397829
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快又稳
2024-10-28 广告
在Linux环境下配置基于域名的虚拟主机,需安装Apache或Nginx等Web服务器,并编辑配置文件。以Apache为例,需创建虚拟主机配置文件,指定域名、文档根目录等,然后启用该配置文件并重启Apache服务。同样,Nginx也需在相应... 点击进入详情页
本回答由快又稳提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式