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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jnshu_it/article/details/86287490

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

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

简单的讲一下自己对端口的理解,以及一些与端口有关的命令的介绍。

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

看我的实战操作



作者:沉沉钟声
链接:https://www.jianshu.com/p/d2473bf3f410
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

更多内容,可以加入IT交流群565734203与大家一起讨论交流

这里是技能树·IT修真院:https://www.jnshu.com,初学者转行到互联网的聚集地

猜你喜欢

转载自blog.csdn.net/jnshu_it/article/details/86287490
今日推荐