iNet

网络开发库从libuv说到epoll

ぃ、小莉子 提交于 2020-08-17 04:12:44
引言   这篇博文可能有点水,主要将自己libuv的学习过程和理解. 简单谈方法. 有点杂. 那我们开始吧. 首先介绍 github . 这个工具特别好用. 代码托管. 如果不翻墙可能有点卡. 但是应该试试. 这里扯一点, github 对代码水平提高 太重要了.还有一个解决疑难问题的论坛 stackoverflow http://stackoverflow.com/. 真的屌的不行.   附赠    github 简易教程, 不用谢 http://www.nowcoder.com/courses/2   国内还有一个 逼格特别高的论坛, 哪天你nb了, 也可以上去装逼, 以其中一个帖子为例    知乎epoll讨论 http://www.zhihu.com/question/21516827 到这里关于 引言就结束了. 前言   现在我们开始说libuv, 这是个网络跨平台的库,是C库.比其它同类的网络库, 多了个高效编程.不需要考虑太多细节. 是node.js的底层. 自己学习了一两周,发现, 功能挺强大的.通用性好. 但总觉得有点恶心.后面有时间说. 总的而言很优秀,很好, 但不喜欢.   下面我来分享怎么学习libuv 首先 你要去 官网下载libuv 代码. libuv github 源码 https://github.com/libuv/libuv

TCP协议粘包问题详解

让人想犯罪 __ 提交于 2020-08-17 03:29:36
TCP协议粘包问题详解 前言    在本章节中,我们将探讨TCP协议基于流式传输的最大一个问题,即粘包问题。本章主要介绍TCP粘包的原理与其三种解决粘包的方案。并且还会介绍为什么UDP协议不会产生粘包。 基于TCP协议的socket实现远程命令输入    我们准备做一个可以在Client端远程执行Server端 shell 命令并拿到其执行结果的程序,而涉及到网络通信就必然会出现 socket 模块,关于如何抉择传输层协议的选择? 我们选择使用TCP协议,因为它是可靠传输协议且数据量支持比UDP协议要大 。好了废话不多说直接上代码了。    Server端代码如下: # !/usr/bin/env python3 # -*- coding:utf-8 -*- # ==== 基于TCP协议的socket实现远程命令输入之Server ==== import subprocess from socket import * server = socket(AF_INET, SOCK_STREAM) server.bind(( " 0.0.0.0 " ,6666)) # 放在远程填入0.0.0.0,放在本地填入127.0.0.1 server.listen(5 ) while 1: # 链接循环 conn,client_addr = server.accept() while 1: #

xshell 桥连接 VM ubuntu18

不羁的心 提交于 2020-08-17 02:58:02
1.虚拟网络编辑器中使用 桥接模式 外部连接选择与主机(windows)网卡保持一致 2.使用ipconfig 查看windows 的ip配置,查看ip的网段 3.测试需要用的ip。 3.1 在ubuntu上ping 192.168.11.XXX 。这个网址一定是ping不通的。 3.2这个ip会被用来设置成ubuntu 的静态ip 4.进入root模式下,vi /etc/network/interfaces 设置虚拟机IP为static的 # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto ens33 #iface ens33 inet dhcp iface ens33 inet static address 192.168.11.33 #这个是之前ping不通的ip gateway 192.168.11.1 netmask 255.255.255.0 ~ 5.设置DNS服务器的信息, vi /etc/resolv.conf nameserver 180.76.76.76 nameserver 223.5.5.5 nameserver 192.168.11.1 产生的错误原因是 # Dynamic resolv.conf(5) file for glibc

2019-2020-2 网络对抗技术 20174326旦增列措 EXP3 免杀原理与实践

坚强是说给别人听的谎言 提交于 2020-08-17 02:47:45
2019-2020-2 网络对抗技术 20174326旦增列措 EXP3 免杀原理与实践 1.实验环境 PC机一台,安装有win10系统 ,作为靶机进行实测 安装的kali虚拟机,作为攻击机 kali虚拟机安装有veil-evasion win10系统有windows Defender作为杀软. 检测网站是VirusTotal 实验准备即相关知识 VirusTotal、Virscan 集成了60多个商业杀毒软件的扫描引擎。可以上传免杀处理过的程序进行检测。 链接如下: VirusTotal Virscan Msfvenom使用编码器 Msfvenom是Metasploit平台下用来编码payloads免杀的工具。 模板是msfvenom用来生成最终Exe的那个壳子exe文件,msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。 Veil-Evasion Veil-Evasion是一个免杀平台,与Metasploit有点类似,在Kalil软件库中有,但默认没装。 C语言调用Shellcode 就是一个半手工打造恶意软件的例子。 加壳 加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。 加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码

(转)libpcap使用

孤街醉人 提交于 2020-08-16 23:28:35
libpcap是一个网络数据包捕获函数库,功能非常强大,Linux下著名的 tcpdump 就是以它为基础的。今天我们利用它来完成一个我们自己的网络嗅探器(sniffer) 首先先介绍一下本次实验的环境: Ubuntu 11.04,IP:192.168.1.1,广播地址:192.168.1.255,子网掩码:255.255.255.0 可以使用下面的命令设置: sudo ifconfig eth0 192.168.1.1 broadcast 192.168.1.255 netmask 255.255.255.0 1.安装 在 http://www.tcpdump.org/ 下载libpcap(tcpdump的源码也可以从这个网站下载) 解压 ./configure make sudo make install 2.使用 安装好libpcap后,我们要使用它啦,先写一个简单的程序,并介绍如何使用libpcap库编译它: Makefile: all : test.c gcc -g -Wall -o test test.c -lpcap clean : rm -rf *.o test 其后的程序的Makefile均类似,故不再重复 test1.c #include <pcap.h> #include <stdio.h> int main() { char errBuf[PCAP

2020,最新APP重构:网络请求框架

半腔热情 提交于 2020-08-16 05:20:10
在现在的app,网络请求是一个很重要的部分,app中很多部分都有或多或少的网络请求,所以在一个项目重构时,我会选择网络请求框架作为我重构的起点。在这篇文章中我所提出的架构,并不是所谓的 最好 的网络请求架构,因为我只基于我这个app原有架构进行改善,更多的情况下我是以app为出发点,让这个网络架构能够在原app的环境下给我一个完美的结果,当然如果有更好的改进意见,我会很乐于尝试。 关于网络请求框架 一个好的网络请求框架对于一个团队来说是十分重要的。如果一个网络请求框架没有封装好,或者是在设计上存在问题,那么在开发上会造成许多问题,就拿这段代码作为例子: [leaveAPI startWithCompletionBlockWith:^(BaseRequest * baseRequest, id responseObject) { // check the response object BOOL isSuccess = [leaveAPI validResponseObject:responseObject]; if (isSuccess) { // do something... } }failure: ^(BaseRequest * baseRequest) { // do something... }]; 上面这段代码存在着不少的问题,比如把请求数据的判断放到了每一个请求中

一次云服务器安装达梦数据库后无法远程访问问题处理

本小妞迷上赌 提交于 2020-08-16 04:01:54
今天同事说新装了一台云服务器,使用ssh登录正常,但是上面的达梦数据库服务端口不能访问。 用netstat -anp查看端口是正常监听的,监听的地址也是允许任意ip访问 并且防火墙和iptables都是关闭的 我也觉得奇怪,于是远程登录上去服务器。查看了达梦的端口,看起来是正常的。 Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::5236 ::😗 LISTEN 3810/dmserver ssh -v -p 5236 root@服务器公网ip 试一下访问达梦数据库 发现连接失败 于是改成 ssh -v -p 5236 root@127.0.0.1 发现是可以成功连接的 防火墙都是关闭状态,应该不是防火墙问题,我尝试地使用traceroute 服务器公网ip,想看一下是不是网络路由有问题。 结果从traceroute输出发现连接本机ip要经过好几台机,这有点不正常。 traceroute to ##脱敏##, 30 hops max, 60 byte packets 1 100.108.0.1 (100.108.0.1) 7.172 ms 7.271 ms

常用socket函数详解

家住魔仙堡 提交于 2020-08-15 14:40:50
常用socket函数详解 关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确。每次都查半天,经常烦恼于此。索性都弄得清楚、通透,并记录下来,一来便于自己记忆,再者以防日后查阅、回顾。 主要介绍:socket、bind、listen、connect、accept、send、sendto、recv、recvfrom、close、shutdown 网络中的进程是通过socket来通信的,那什么是socket呢?socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件。 其在linux和windows环境下的头文件主要是:#include<sys/socket.h>和#include<WinSock2.h> 下面较为详细的介绍各个函数的使用方法,及返回值判断和处理。另外,若想对函数调用后内核的详细动作过程,可参考UNIX网络编程第一卷或TCPIP详解第二卷。 1. socket intsocket(int domain,int type, int protocol) ________________________

基于TCP与UDP协议的socket通信

无人久伴 提交于 2020-08-15 10:55:15
基于TCP与UDP协议的socket通信 C/S架构与初识socket    在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Client/Server),比如我们需要玩英雄联盟,就必须连接至英雄联盟的服务器上,那么对于我们玩家来说它的英雄联盟服务器就是Server端,而我们必须要有一个英雄联盟Client端才能够去和英雄联盟Server端进行数据交互。    互联网的协议实际上就是为了让计算机之间互相进行通信,只是按照功能不同分为了七层或者五层。这里再来回忆一下: TCP/IP五层网络模型介绍 层级 功能 应用层 跑应用协议的,如:HTTP,FTP等等,主要职责便是规定应用数据的格式。可以自定义协议,但是必须要有head部分与data部分。 传输层 跑端口协议的,如:TCP / UDP等等,主要职责便是用于区分该系统上的唯一一个网络应用程序。 网络层 IP地址子网掩码等等相关都在网络层,如:IP协议,主要职责便是用来区分广播域,防止网络风暴的发生。 数据链路层 划分电信号以及IP地址与MAC地址相互转换,如:以太网协议,ARP协议等等,用来区分电信号与支持通信的。 物理层 传输电信号,网络数据传输的基石。    计算机网络的核心就是一堆协议,想开发基于网络通信的软件就必须遵守这些协议

利用ssh分发实现方法

风流意气都作罢 提交于 2020-08-15 05:40:08
ssh 服务提供两个服务功能:一个是提供类似 telnet 远程服务,另一个就是类似 ftp 服务提供安全的传输 ssh 安全的加密协议,用于远程连接服务器 默认端口 22 ,,安全版本为 2 ssh 服务提供两个服务功能 ssh 客户端包含 ssh 连接命令,以及远程拷贝 scp 命令等 ssh 服务由 openssh 和客户端组成 ssh 服务认证类型 基于口令 ssh -p52113 root@172.16.10.10 基于秘钥 公钥放在服务器上,私钥放在自己电脑上 给你一个端口如何查出对应的服务 [root@localhost ~]# lsof -i tcp:22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1023 root 3u IPv4 9425 0t0 TCP *:ssh (LISTEN) sshd 1023 root 4u IPv6 9427 0t0 TCP *:ssh (LISTEN) sshd 1134 root 3r IPv4 9867 0t0 TCP 172.16.10.20:ssh->172.16. losf -i tcp:52113 netstat -an |grep 52113 ssh 安全优化 端口更改,禁止 root 登录,禁止空密码登录,不使用 dns 免密码验证小结 1