随笔分类 -  网络编程

摘要:人们非常关心下载速度,对于使用非包月宽带以及使用付费CDN的用户而言,这是典型的拿钱买时间的行为,我支付的费用越高,希望的下载速度越快,所使用的累积带宽越大。关于各种测速方法也是汗牛充栋了,本文介绍一下TCP传输的测速。 TCP速率概述 首先,TCP速率受到多方面时延的影响,其中包括: 1.本机以及 阅读全文
posted @ 2016-08-19 11:24 godjob 阅读(15345) 评论(0) 推荐(1)
摘要:A TCP connection progresses through a series of states during its lifetime. The following diagram illustrates the possible states for a TCP connection 阅读全文
posted @ 2016-08-16 17:33 godjob 阅读(940) 评论(0) 推荐(0)
摘要:前言: 最近我用java做了一个C/S的类似QQ之类的IM系统(即时通讯系统),遇到了不能跨局域网通讯的问题,经过在网上,和书上查阅了一些资料,了解了一些情况,现在就总结一下我的解决方案吧(本人也是在不断错误中学习,如果有什么不对的地方,请大家多多指教)。 问题描述: 一般情况下,只能在同一个子网即 阅读全文
posted @ 2016-08-14 21:29 godjob 阅读(5497) 评论(0) 推荐(0)
摘要:在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于 select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd 数目越多,自然 阅读全文
posted @ 2016-08-11 23:14 godjob 阅读(158) 评论(0) 推荐(0)
摘要:安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其 中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口,这些后面会详细介绍 选择虚拟机网络模 式方法如下,单击Edit virtual machine settings,如图所示: 然后在Hardware 阅读全文
posted @ 2016-07-31 11:23 godjob 阅读(1131) 评论(0) 推荐(0)
摘要:概述 无NAT网络 无NAT网络 无NAT网络 带NAT网络 带NAT网络 带NAT网络 1990年代中期,NAT是作为一种解决IPv4地址短缺以避免保留IP地址困难的方案而流行起来的。网络地址转换在很多国家都有很广泛的使用。所以NAT就成了家庭和小型办公室网络连接上的路由器的一个标准特征,因为对他 阅读全文
posted @ 2016-07-31 01:07 godjob 阅读(1413) 评论(0) 推荐(0)
摘要:最近在看东西的时候发现很多网络程序中都需要NAT穿越,特意在此总结一下。 先做一个约定: 内网A中有:A1(192.168.0.8)、A2(192.168.0.9)两用户 网关X1(一个NAT设备)有公网IP 1.2.3.4 内网B中有:B1(192.168.1.8)、B2(192.168.1.9) 阅读全文
posted @ 2016-07-31 00:00 godjob 阅读(354) 评论(0) 推荐(0)
摘要:OSI 模型 数据单元层功能 主机层 Data(数据) 7. 应用层 网络进程到应用程序。针对特定应用规定各层协议、时序、表示等,进行封装 。在端系统中用软件来实现,如HTTP等 6. 表示层 数据表示形式,加密和解密,把机器相关的数据转换成独立于机器的数据。规定数据的格式化表示 ,数据格式的转换等 阅读全文
posted @ 2016-07-27 22:25 godjob 阅读(193) 评论(0) 推荐(0)
摘要:0x00 前言 经由@杀戮提示,让我看看softpedia上的这篇报道,咱就来研究一下文中的使用TFTP(Trivial File Transfer Protocol,简单文件传输协议)进行反射型DDOS攻击。在报道的最后提到了Evaluation of TFTP DDoS amplificatio 阅读全文
posted @ 2016-06-09 22:45 godjob 阅读(2050) 评论(0) 推荐(0)
摘要:libevent 网络IO分析 Table of Contents 1. 简介 2. 简单使用与入门 2.1. 定时器-timeout 超时回调 2.2. 信号事件 2.3. 读取 socket 3. 操作系统 I/O 模型封装 4. 源码分析-基本功能 4.1. 超时机制-对 timeout 例子 阅读全文
posted @ 2016-04-23 12:59 godjob 阅读(1102) 评论(0) 推荐(0)
摘要:Linux Epoll介绍和程序实例1. Epoll是何方神圣?Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东东呢?那还是有得说说的…2. 常用模型的缺点如果不摆出来其他模型的缺点,怎么能对比出Epol 阅读全文
posted @ 2014-03-14 23:51 godjob 阅读(280) 评论(0) 推荐(0)
摘要:一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。E、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。Linux 进程间通信(IPC) 阅读全文
posted @ 2013-04-20 17:19 godjob 阅读(188) 评论(0) 推荐(0)
摘要:/* For sockaddr_in */#include <netinet/in.h>/* For socket functions */#include <sys/socket.h>/* For gethostbyname */#include <netdb.h>#include <unistd.h>#include <string.h>#include <stdio.h>int main(int c, char **v){ const char query[] = "GET / HTTP/1.0\r\n&q 阅读全文
posted @ 2013-04-01 23:16 godjob 阅读(171) 评论(0) 推荐(0)
摘要:#include "stdafx.h"#include <stl_h.hpp>#include <CInitSocket.hpp>#include <winsock2.h>#include <ws2tcpip.h>#pragma comment(lib,"ws2_32.lib")CInitSocket init;using namespace std;int main(int argc, char **argv){ char *ptr,**pptr; struct hostent *hptr; char s 阅读全文
posted @ 2013-04-01 23:08 godjob 阅读(254) 评论(0) 推荐(0)
摘要:一、Libevent简介 libevent是一个基于事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。官网:http://libevent.org/特点:事件驱动,高性能;轻量级,专注于网络,不如ACE那么臃肿... 阅读全文
posted @ 2013-03-31 23:29 godjob 阅读(1028) 评论(0) 推荐(0)
摘要:1. 数据类型:在开发过程中,无论哪种平台,只使用最通用的数据类型char,unsigned char,int,unsigned int,void *以及它们组合的结构体类型。对于数据长度敏感的代码,则只使用下面的数据类型: Common Win32 Linuxint8INT8int8_tuint8UINT8uint8_tint16INT16int16_tuint16UINT16uint16_tint32INT32int32_tuint32UINT32uint32_tint64INT64int64_tuint64UINT64uint64_t在VS.Net 2008的项目中,使用多字节字符集,对 阅读全文
posted @ 2013-03-25 20:44 godjob 阅读(1872) 评论(0) 推荐(0)
摘要:在Windows上编写代码的时候,都应该使用Unicode,但是往往在项目中,总会遇到一些 不方便的地方,例如,读写磁盘,加密等等。因此,以下给出2个函数,用于多字节与宽自己的转换,主要使用Windows提供的 WideCharToMultiByte与MultiByteToWideChar函数。123456789101112131415// 将Unicode字符串转换为Ansicode字符串void ConvertUnicodeToAnsi(wchar_t* source, char* dest){ int len = 0; len = WideCharToMultiByte(CP... 阅读全文
posted @ 2013-03-20 22:08 godjob 阅读(651) 评论(0) 推荐(0)
摘要:C++获得计算机网卡MAC地址,以下程序采用静态加载的办法来实现的,建议在实际项目中,动态加载iphlpapi.dll,来实现获得网卡MAC地址,因为不是每台计算机都有iphlpapi.dll这个问题的,如果是静态加载的话,就可能直接报错。代码如下:#include <stdio.h>#include <Windows.h>#include <iphlpapi.h>#pragma comment(lib, "iphlpapi.lib")void main(){ IP_ADAPTER_INFO adapter[5]; DWORD bufle 阅读全文
posted @ 2013-03-20 22:07 godjob 阅读(432) 评论(0) 推荐(0)
摘要:#include <stdio.h>#include <stdlib.h>#include <memory.h>#define POLY 0x04C11DB7Lunsigned long get_sum_poly( unsigned char top_byte ){ /// sum all the polys at various offsets unsigned long sum_poly = top_byte << 24; for( int j = 0; j < 8; ++ j ) { /// check the top bit if( 阅读全文
posted @ 2013-03-20 22:03 godjob 阅读(2540) 评论(0) 推荐(0)
摘要:下面是一个免费的全球IP地址数据库,包括了国家,城市,地区,和经纬度,以便你可以利用Google Map在地图上标注。这个数据库的精确度可能有60%左右。SQL format更新至2009年3月11日CSV format (多文件)更新至2009年3月11日下面是怎么使用这个数据库。首先,所有的IP地址都是按一个整形来存放的,假设一个IP地址为A.B.C.D,那么其计算公式如下所示:ip = (A*256+B)*256+C也就是说,它只计算到网段为:A.B.C.0到A.B.C.255。例如:我们有一个IP地址为:74.125.45.100 (google.com),那么,ip = (74*25 阅读全文
posted @ 2013-03-16 23:51 godjob 阅读(1490) 评论(0) 推荐(0)