linux的端口学习(一)
1.端口是什么?
1.1 是英文port的意译,可认为是设备与外界通讯交流的出口。
1.2 端口可分为虚拟端口和物理端口。
1.2.1 虚拟端口:指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。
1.2.2 物理端口:又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。
2.我们常说的端口:
2.1 指的是:特指TCP/IP协议中的端口,是逻辑意义上的端口。
2.2 协议端口(protocol port,即我们常说的端口)。
2.3 端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
2.4 如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:2^16)个之多!
3.端口在入侵中的作用(黑客常用的)
3.1 有人曾经把服务器比作房子,而把端口比作通向不同房间(服务)的门,如果不考虑细节的话,这是一个不错的比喻。
3.2 入侵者要占领这间房子,势必要破门而入(物理入侵另说),
3.3 那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。
3.4 普通人估计不需要了解这么多。
4.按端口号可分为3大类
4.1 公认端口(WellKnownPorts):
4.1.1 从0到1023,它们紧密绑定(binding)于一些服务。
4.1.2 通常这些端口的通讯明确表明了某种服务的协议。
4.1.3 例如:80端口实际上总是HTTP通讯。
4.2 注册端口(RegisteredPorts):
4.2.1 从1024到49151。
4.2.2 它们松散地绑定于一些服务。
4.2.3 也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。
4.2.4 例如:许多系统处理动态端口从1024左右开始。
4.3 动态和/或私有端口(Dynamicand/orPrivatePorts):
4.3.1 从49152到65535。
4.3.2 理论上,不应为服务分配这些端口。
4.3.3 实际上,机器通常从1024起分配动态端口。
4.3.4 但也有例外:SUN的RPC端口从32768开始。
5.系统管理员可以"重定向"端口
5.1 一种常见的技术是把一个端口重定向到另一个地址。
5.2 例如默认的HTTP端口是80,可以将它重定向到另一个端口,如8080。即可以实现重定向是为了隐藏公认的默认端口,降低受破坏率。
5.3 大多数端口重定向与原端口有相似之处:
5.3.1 例如多数HTTP端口由80变化而来:81,88,8000,8080,8888。
5.3.2 POP的端口原来在110,也常被重定向到1100。
5.4 原因一:避免木马病毒攻击:
远程控制木马(RemoteAccessTrojans,RATs)采用相同的默认端口。如NetBus的默认端口是12345。
5.5 原因二:root权限有关:
在UNIX系统上,如果你想侦听1024以下的端口需要有root权限。
如果你没有root权限而又想开web服务,你就需要将其安装在较高的端口。
5.6 原因三:ISP防火墙有关:
一些ISP的防火墙将阻挡低端口的通讯,这样的话即使你拥有整个机器你还是得重定向端口。
6.查看端口情况:
6.1 在终端输入:netstat -an
这并不是一个工具,但他是查看自己所开放端口的最方便方法。
6.2 在终端输入:netstat -talnp
查看系统已经打开的端口。
6.3 在终端输入:netstat -tanp
去显示端口状态。
7.Linux 如何开放端口和关闭端口。
以8080端口为例
7.1 查看是否打开8080端口,没反应就是没打开。
netstat -an | grep 8080
7.2 在root下输入,即可以查看80的所有已打开的窗口,比如8082是360浏览器打开的端口
netstat -ntulp |grep 80
linux的端口学习(一)的更多相关文章
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]
Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...
- ARM Linux驱动篇 学习温度传感器ds18b20的驱动编写过程
ARM Linux驱动篇 学习温度传感器ds18b20的驱动编写过程 原文地址:http://www.cnblogs.com/NickQ/p/9026545.html 一.开发板与ds18b20的入门 ...
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- (转)Linux基础知识学习
Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过 ...
- Linux 系统编程 学习:01-进程的有关概念 与 创建、回收
Linux 系统编程 学习:01-进程的有关概念 与 创建.回收 背景 上一讲介绍了有关系统编程的概念.这一讲,我们针对 进程 开展学习. 概念 进程的身份证(PID) 每一个进程都有一个唯一的身份证 ...
- Linux 系统编程 学习:06-基于socket的网络编程1:有关概念
Linux 系统编程 学习:006-基于socket的网络编程1:有关概念 背景 上一讲 进程间通信:System V IPC(2)中,我们介绍了System IPC中关于信号量的概念,以及如何使用. ...
- Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信
Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信 背景 上一讲我们介绍了网络编程的一些概念.socket的网络编程的有关概念 这一讲我们来看UDP 通信. 知识 U ...
- Linux下iptables学习笔记
Linux下iptables学习笔记 在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了.但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6. ...
- 20135231 —— Linux 基础入门学习
20135231 何佳 学习计时:共12小时 读书:5 代码:2 作业:2 博客:3 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Li ...
随机推荐
- Atcoder Beginner Contest 155E(DP)
#definde HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; int main(){ ios: ...
- SFSA
#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #in ...
- dbGet (二)
dbGet是由它基本的语法加上各种object的attribute的组合构成的.大家在熟悉基本语法之后,就应该去学习各个object的attribute了.说实话,这很难,因为attribute很多, ...
- SparkSQL个人记录
SparkSQL将RDD封装成一个DataFrame对象,这个对象类似于关系型数据库中的表. 一.SparkSQL入门 1.创建DataFrame 相当于数据库中的一张表,它是一个只读的表,不能在运算 ...
- 大数据-hdfs技术
hadoop 理论基础:GFS----HDFS:MapReduce---MapReduce:BigTable----HBase 项目网址:http://hadoop.apache.org/ 下载路径: ...
- 数据库程序接口——JDBC——功能第一篇——第一个程序
流程图 综述 从零开始搭建JDBC环境.通过创建Java项目,在项目中,通过java程序执行SQL,并处理返回的结果.本文通过执行 select 1 from dual 语句来测试,并输出相结果集.首 ...
- Educational Codeforces Round 80 (Rated for Div. 2)E(树状数组,模拟,思维)
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ],mx[],a[],pos[],sum ...
- Python turtle库详解
Python turtle库详解 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在 ...
- iOS 10.3+ 动态修改 App 图标
支持系统: iOS 10.3+ tvOS 10.2+ Apple 官方文档 官方 API: @interface UIApplication (UIAlternateApplicationIcons) ...
- String - 字符串分割操作
如果我想将一个字符串按照每8位一组分为若干个块,然后存储在一个byte[ ]数组中,我首先需要确定这个byte数组的长度,但由于我无法确定这个字符串的长度是否可以被8整除,所以无法直接判断,因此需要对 ...