转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)
之前项目上线前,领导要求让写一个脚本用来判断端口的占用情况。由于现在python3使用也比较多,基于python2修改了一下,做了个python3版本的,现在做一下总结。
之前在介绍netstat的时候说过,netstat是一个非常实用的socket查看命令。但是有人留言它已经被ss(Socket Statistics)替代了,那么这个所谓替代netstat的命令,到底怎么用呢?为什么它能替代netstat?
socket起源于linux,在Linux中,一个非常重要的思想就是“一切皆文件”,一切行为皆可描述为“打开文件—->读写文件—–>关闭文件”,socket可以理解成一种特殊的文件,把对底层tcp/ip网络的调用封装起来,提供给用户一些调用的接口来是实现网络编程。
ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。
在渗透测试中端口扫描是非常重要的一环,不管是在外围对企业边界信息收集的过程还是在内网渗透中对内网的信息收集。如何判断主机或服务器端口的开放情况就显得尤为重要,下面就盘点一下可以作为端口扫描的工具与方式方法。
前面一直在说各种协议,偏理论方面的知识,这次咱们就来认识下基于 TCP 和 UDP 协议这些理论知识的 Socket 编程。
在 “了不起的 Deno 入门教程” 这篇文章中,我们介绍了如何使用 Deno 搭建一个简单的 TCP echo server,本文将使用该示例来探究 TCP echo server 是怎么运行的?前方高能,请小伙伴们深吸一口气做好准备。
值得注意的是,靶机貌似有个bug,当shell连接中断后,我们无法直接再次连接,只能重启靶机,再故技重施
黑入服务器很少会是通过账号密码的方式进入,因为这很难破解密码和很多服务器都做了限制白名单。
很多同学第一反应就是端口的限制,端口号最多是 65536个,那就最多只能支持 65536 条 TCP 连接。
TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/因特网互联 协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。 TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层 的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
打开 cmd 命令窗口,输入 netstat -aon(可以指定要查询的端口:netstat -aon|findstr 要查的端口号)
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的shell反弹到我们的机器上,下面来介绍分析几种常用的方法。
1)内网服务器CentOS7.6 IP 192.168.198.130 (该机器可以访问互联网)
1. 抓取perf信息并结合代码分析热点主要在处理timewait socket上:
在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。
Socket,原意插座、插口。写软件程序时,可以想象成一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以通信前,双方都要建立一个Socket。
1. Linux网络编程--网络知识介绍 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 1.1 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序。 1.2 服务端 和客户端相对应的程序即为服务端程序。被动的等待外面的程序来和自己通讯的程序称为服务端程序。 比如上面的文件获取中,
由于各个进程之间独享一块用户地址空间,一般而言这块独立的用户地址空间不能互相访问,所以进程之间想要通信必须通过内核空间(每个进程共享)。
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况
大家可能也在 nginx、redis 等 server 的配置文件中见过 bind 的时候不用真实的 IP,而使用 0.0.0.0 的情况。
在Linux后端服务网络通信开发中,可能会遇到CLOSE_WAIT的状况。引起TCP CLOSE_WAIT状态的情况很多,归根结底还是由于被动关闭的一方没有关闭socket链路导致的。这篇文章主要是通过用一个简单的例子通过TCPDUMP和Wireshark这两个工具来模拟产生CLOSE_WAIT的情况,下一篇主要是对这个问题的原理解释。
Workerman是一款开源高性能异步PHP socket即时通讯框架。支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、MQTT物联网客户端、异步消息队列等众多高性能组件。
很多对技术有追求的读者朋友,做到一定阶段后都希望技术有所精进。有些读者朋友可能会研究一些中间件的技术架构和实现原理。比如,Nginx为什么能同时支撑数万乃至数十万的连接?为什么单工作线程的Redis性能比多线程的Memcached还要强?Dubbo的底层实现是怎样的,为什么他的通信效率非常高?
清·俞樾《湖楼笔谈》六:“盖诗人用意之妙,在乎深入显出。入之不深,则有浅易之病;出之不显,则有艰涩之患。”
该操作在vm虚拟机中完成,提前安装了Windows7、kali linux、Windows server2008。
因为后台更新固定链接的缘故,导致前期的原文链接点击没有反应,目前这个问题已经被解决。
比较奇怪,yum install netstat 后仔细看了下 man 文档。发现 netstat 中默认有这么一句话:
服务器一般都是命令页面,不像 windows 有图形页面点点鼠标就好,所以掌握些基本的 Linux 命令是很有必要的,不然就无法操作 Linux,更体会不到 Linux 的精髓。
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:
Socket套接字由远景研究规划局(Advanced Research Projects Agency, ARPA)资助加里福尼亚大学伯克利分校的一个研究组研发。其目的是将TCP/IP协议相关软件移植到UNIX类系统中。设计者开发了一个接口,以便应用程序能简单地调用该接口通信。这个接口不断完善,最终形成了Socket套接字。Linux系统采用了Socket套接字,因此,Socket接口就被广泛使用,到现在已经成为事实上的标准。与套接字相关的函数被包含在头文件sys/socket.h中。
在早期运维工作中,查看服务器连接数一般都会用netstat命令。其实,有一个命令比netstat更高效,那就是ss(Socket Statistics)命令! ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。 ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。原因如下: 1)当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受
IP地址的作用是表示网络中唯一的一台设备的,也就是说通过IP地址能够找到网络中某台设备。
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
我们平常做网络编程的时候都会碰到 Socket 对象 ,或者在配置代理的时候, 碰到配置 Socket 地址。 还经常会碰到 I/O 模型、异步编程、内存映射等概念。再往更深层次学习, 还会碰到 epoll/select 等编程模型。
socket即套接字,用于描述地址和端口,是一个通信链的句柄。应用程序通过socket向网络发出请求或者回应。
原文链接:https://rumenz.com/rumenbiji/linux-ss.html
上图中最后一步 杀掉进程可使用 taskkill /f /t /im 10744,或者 taskkill /f /t /im java.exe
前言:主要针对于Linux中网络信息/TCP/UDP连接查看抓取等命令进行学习,加深对Linux的使用;
在日常的开发过程中,经常会遇到端口占用冲突的问题。那是不是不同的进程不能同时监听同一个端口呢?这个小节就来介绍 SO_REUSEPORT 选项相关的内容。
如果发现某个端口被占用后,可以用命令查看,该端口到底是被哪个进程所占用。命令如下:
从文档中可以看到,该参数允许多个socket绑定到同一本地地址,即使socket是处于listen状态的。
领取专属 10元无门槛券
手把手带您无忧上云