1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2)初始化 windows下需要用WSAStartup WSADATA wsaData; err = WSAStartup(0x202,&wsaData); if ( err != 0 ) { return 0; } else if ( LOBYTE( wsaData.wVersion )
在Linux后端服务网络通信开发中,可能会遇到CLOSE_WAIT的状况。引起TCP CLOSE_WAIT状态的情况很多,归根结底还是由于被动关闭的一方没有关闭socket链路导致的。这篇文章主要是通过用一个简单的例子通过TCPDUMP和Wireshark这两个工具来模拟产生CLOSE_WAIT的情况,下一篇主要是对这个问题的原理解释。
accept(2): accept connection on socket - Linux man page (die.net)
注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概
近日,Linux git中发布一个commit补丁,该补丁对应的漏洞是一个本地提权漏洞CVE-2019-8912,漏洞影响范围较广。根据git中的commit信息可知,该漏洞出现在内核’crypto/af_alg.c’中的af_alg_release函数中,可以通过sockfs_setattr函数触发,漏洞类型是use after free,可以导致本地代码执行进行权限提升。
在前文中讲述了Linux服务端TCP通信出现CLOSE_WAIT状态的原因,这篇文章主要通过一个实例演示它个一个“恶劣”影响:直接使服务端进程Down掉。
本教程仅适用于Ubuntu 16.04及之后的版本,基于Python 3,因Python 3对应的包管理器pip3并未预装,首先安装pip3:
在上一篇文章里我们介绍了 tomcat io 主要包含那些 items,在这里我们主要介绍tomcat io 的基础-多路复用。tomcat 服务器(tomcat7以上)默认使用 java NIO 模型,NIO 不仅仅需要 java 语言上的支持,同时还离不开各种操作系统对于多路复用的支持(linux,windows,mac 等等),所以 tomcat的NIO 是建立在操作系统基础之上的。
1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的: SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol ); SOCKET WSASocket( _In_ int af, _In_ int type, _In_ int
在开发 socket 应用程序时,首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示,您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。
在《深入解析常见三次握手异常》 这一文中,我们讨论到如果发生连接队列溢出而丢包的话,会导致连接耗时会上涨很多。那如何判断一台服务器当前是否有半/全连接队列溢出丢包发生呢?
SelectorProvider提供的所有provider都是同一个对象。如果没有,它会通过AccessController.doPrivileged来给获取provider的代码最高的权限,执行逻辑是:
一个[合格的]Oracle DBA在安装数据库的时候,通常都会按要求关闭NUMA(MOS:Disable NUMA At OS Level (Doc ID 2193586.1)),因为启用NUMA会导致CPU彪高,性能很差(MOS:High CPU Usage when NUMA enabled (Doc ID 953733.1))。也许是这类问题太多,从Oracle 11gR2开始,默认就关闭了NUMA特性,因为NUMA的使用比较苛刻,要结合硬件、操作系统和Oracle版本(MOS:Oracle NUMA Usage Recommendation (Doc ID 759565.1))以及应用程序。稍有不对,努力白费,所以乖乖的关掉NUMA,是比较正确的事情。
本文讲述通过netfilter和get/setsockopt实现用户态与内核态之间的通信。首先介绍相关背景,然后给出代码示例。重点在于介绍通过netfilter的钩子机制实现用户态设置和获取socket选项,从而完成用户态与内核态之间的通信。
Linux应用编程涉及到在Linux环境下开发和运行应用程序的一系列概念。以下是一些涵盖Linux应用编程的基本概念:
基于tor匿名网络的多ip爬虫.更换ip的方式有多种,其中tor这类型则适合ip更换次数不大,网页数据量也不大,但是又厌恶代理那天天失效的麻烦,则最简单快捷的便是使用tor在本机搭建一个出口端口,让需要更换ip的爬虫程序制定proxies指向的端口.简单而且快捷,可使用的ip池子总数1000左右,实际中有500左右可以使用,匿名性当然不用质疑了.
下面来分别对这几个问题进行分析. 1. 操作系统能否支持百万连接? 对于绝大部分 Linux 操作系统, 默认情况下确实不支持 C1000K! 因为操作系统包含最大打开文件数(Max Open Fil
这些年,接触了形形色色的项目,写了不少网络编程的代码,从windows到linux,跌进了不少坑,由于网络编程涉及很多细节和技巧,一直想写篇文章来总结下这方面的心得与经验,希望对来者有一点帮助,那就善莫大焉了。 本文涉及的平台包括windows和linux,下面开始啦。 一、非阻塞的的connect()函数如何编写 我们知道用connect()函数默认是阻塞的,直到三次握手建立之后,或者实在连不上超时返回,期间程序执行流一直阻塞在那里。那么如何利用connect()函数编写非阻塞的连接代码呢? 无论在win
这些年,接触了形形色色的项目,写了不少网络编程的代码,从windows到linux,跌进了不少坑,由于网络编程涉及很多细节和技巧,一直想写篇文章来总结下这方面的心得与经验,希望对来者有一点帮助,那就善莫大焉了。 本文涉及的平台包括windows和linux,下面开始啦。 一、非阻塞的connect()函数如何编写 我们知道用connect()函数默认是阻塞的,直到三次握手建立之后,或者实在连不上超时返回,期间程序执行流一直阻塞在那里。那么如何利用connect()函数编写非阻塞的连接代码呢? 无论在wind
对于绝大部分 Linux 操作系统, 默认情况下确实不支持 C1000K! 因为操作系统包含最大打开文件数(Max Open Files)限制, 分为系统全局的, 和进程级的限制.
linux的空间分为kernel space 和 user space, 比例是1:3
accept() 系统调用应用于可连接套接口类型 ( SOCK_STREAM, SOCK_SEQPACKET)。它取出在监听套接口 sockfd请求队列里的第一个连接,新建一个已连接的套接口,并且返回一个引用该套接口新的文件描述符。新建的套接口不处于监听状态。原始的套接口 sockfd 没有受到影响。
邮箱是工作中非常重要的一个工具,平常我都是使用foxmail软件或者直接登录web来操作邮件,现在我要换种方式使用邮箱.使用邮箱都是通过pop协议收取邮件,使用smtp协议发送邮件,现在我就直接在命令行中来操作一下邮箱.
文档Using Cryptography in Zynq UltraScale MPSoC提供了在Linux用户态使用MPSoC AES 加速器的例子。 如果要使用Device key或者PUF key,需要使用Xilinx Linux 2020.1。Xilinx Linux 2020.1增加了选择密钥类型的功能。选择密钥类型的代码如下:
这是在windows下面的定义。在linux下面的定义只是将SOCKET改成int,那么在linux下面的原型是这样:
有时出于个人隐私的原因,我们希望隐藏自己的IP,让http服务器无法记录我们访问过它,这时我们可以使用代理服务器。 代理服务器(Proxy Server)是工作在浏览器与http服务器之间的一个服务应用,所有经过代理服务器的http请求,都会被转发到对应的http服务器上。 当然,除了http可以使用代理外,https、ftp、RTSP、pop3等协议同样可以使用代理访问,不过本文介绍的是支持http、https协议访问的代理。
在之前的一篇文章中,作者在配置了SO_REUSEPORT选项之后,使得应用的性能提高了数十倍。现在介绍socket选项中如下几个可以提升服务端性能的选项:
我们在日常测试中经常要用到git克隆项目、pip安装依赖库等,如果不走代理可能连接不上,或者下载速度极慢,这是我没法忍受的,所以要走代理才能高速下载。
最近在开发一个运行在不同PC上的agent,agent启动时需要向server注册自己,我暂定注册信息包含:MAC地址、IP、主机名。
WSL 是 “Windows Subsystem for Linux” 的缩写,也就是运行在 Windows 系统中的 Linux 子系统。如果我们的应用程序最终是会放在 Linux 系统中运行的话,那么在开发阶段就以这种方式启动和调试,就能提前发现在真实线上环境可能出现的问题,有利于增强程序的健壮性。
RECV(2) Linux Programmer’s Manual RECV(2)
作者:谢代斌 研究测试TCP断开和异常的各种情况,以便于分析网络应用(比如tconnd)断网的原因和场景,帮组分析和定位连接异常掉线的问题,并提供给TCP相关的开发测试人员作为参考。 各个游戏接入都
java的nio是水平触发吗?在linux上,其实现是基于linux epoll的。所以首先我们要了解epoll。
也叫 同步阻塞IO , 请求数据的进程需要一直阻塞等待读取完成才能返回,同时整个读取的动作也是要同步等待I/O操作的完成才返回。
workerman使用pcntl_fork()来实现master/worker的多进程模型,每个worker进程通过使用stream_socket_server()函数来创建socket,由于fork创建的worker进程具备亲缘关系,所以不同的worker进程可以对相同的端口监听;不同worker进程监听相同的socket,在该socket存在事件时,所有监听该socket的worker进程会被唤醒,所有worker进程对socket资源进行抢占式处理,但最终只有一个worker进程可以对socket进行accept;在这个过程中就存在n-1个worker进程是无效调度的,仅仅只是被唤起了然后抢占失败并再次入眠。
This blog post explains how computers running the Linux kernel send packets, as well as how to monitor and tune each component of the networking stack as packets flow from user programs to network hardware.
众所周知,在 Linux 中一切皆为文件,包括硬盘和显卡等。在 Linux 中导航时,大部分的文件都是普通文件和目录文件。但是也有其他的类型,对应于 5 类不同的作用。因此,理解 Linux 中的文件类型在许多方面都是非常重要的。
文章声明:此文基于木子实操撰写 生产环境:Rocky Linux release 8.3 问题关键字:在Proxmox VE上安装与配置Rocky Linux 8.3 RC1
笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就从Linux源码的角度看下Server端的Socket在进行Accept的时候到底做了哪些事情(基于Linux 3.10内核)。
前面一次网进行了内网渗透,这里做个人小结,也方便其他小伙伴学习EW。这里仅记录后渗透中与EW相关的部分已提前在tomcat中留下冰蝎马。
socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。
在渗透测试中,当我们获得了外网服务器(如web服务器,ftp服务器,mali服务器等等)的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段,一般情况下,内网中的其他机器是不允许外网机器访问的。这时候,我们可以通过 端口转发(隧道) 或将这台外网服务器设置成为 代理,使得我们自己的攻击机可以直接访问与操作内网中的其他机器。实现这一过程的手段就叫做内网转发。
下面是DRL@fireinice写的教程,大家可以参考一下。感谢这个为高人。 您从本文可以得到: 1.如何在linux/windows下安装3proxy代理软件,并使用其开设代理 2.调整3proxy代理链,使用多个父代理联合上网 3.使用3proxy开设多个代理 3proxy是一个由俄罗斯人开发的多平台代理软件,支持http/https/ftp/socks4/socks5/socks4a/socks5a等多种代理方式。 之前由dRag0nMa介绍到drl,并由ccpp0兄写过一个简单的教程原文地址: 我是因为要在linux下寻找一款同时支持http和socks的代理软件,由ccpp0兄介绍给我的,从那篇文章里获益良多。跟据自己的需要,阅读软件英文手册并在软件论坛上发帖询问后有了一些新的理解,特发此文 一、安装 在windows下安装: 在windows下安装其实十分简单: 可以下载已经编译好的二进制包,然后解压缩到一个文件中。bin文件夹下即是软件执行文件。 二、配置: 对于windows系统来说要在bin文件夹下新建一个名为3proxy.cfg的文件。所有的配置信息都写在这里。 若为linux系统,则可新建一个3proxy.sh的文件。 我先粗略说明一下我的网络环境及想用3proxy实现哪些功能 我手头上有一个socks代理,我希望大部分网络连接通过这个代理,同时不想进行代理所需的身份验证。同时,我是一个tor用户,但从来没有用过privoxy的其它功能,只用tor来浏览网页,所以希望将tor转换为普通的http代理。 同时,我还需要开设一个代理给寝室中的同学使用。 做下假设: 我的父代理 socks代理为:192.168.0.1:8080,代理类型是socks5,用户名、密码是:usr/pwd tor代理是:127.0.0.1:9050,代理类型是socks4a 我希望开设的代理: 用户有192.168.1.1和192.168.1.2以及我自己 共开设四个代理接口: 1234端口:这个端口进来的http请求全部转到192.168.0.1 1235端口:这个端口接受socks请求,并全部转到192.168.0.1 1236端口:这个端口希望能建起一个代理链,使用tor为一级代理,192.168.0.1做为二级代理 1237端口:这个端口没有父代理,提供给除我之外的用户使用。 好了,让我们看一下我的cfg文件是如何实现以上要求的(#后为注释):
在前几期,我们提到,在Linux下,可以利用IO虚拟化技术为虚拟机添加一个完全虚拟或半虚拟的网卡或磁盘,也可以将物理设备直通给虚拟机,还可以将支持SR-IOV的网卡等设备一虚多,并将虚拟化的设备给虚拟机使用。
MySQL -uroot ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
PortShellCrypter支持对shell会话进行E2E加密,可以帮助研究人员在完全不需要了解底层传输机制的情况下,对会话信息进行可靠的加密。除此之外,PortShellCrypter还可以发送/接收Base64编码的数据而无需对数据进行修改或过滤。除了接收E2E PTY之后,还可以转发TCP和UDP连接,这个功能有些类似于OpenSSH的-L参数。而且不需要在信息发起点本地分配IP地址,这将允许取证人员或渗透测试人员通过下列方式创建网络连接:
虽然市面上已经有很多成熟的网络库,但是编写一个自己的网络库依然让我获益匪浅,这篇文章主要包含:
有兴趣了解更多关于 eBPF 技术的底层细节?那么请继续移步,我们将深入研究 eBPF 的底层细节,从其虚拟机机制和工具,到在远程资源受限的嵌入式设备上运行跟踪。
领取专属 10元无门槛券
手把手带您无忧上云