
网络原理及编程
文章平均质量分 74
adcxf
c/c , linux ,后端开发
展开
-
软硬防火墙区别简介
纯软件的防火墙大多都是基于PC架构的,可能会采用经过优化的OS作为其运行的平台,特点是:扩展性好、适应性强、容易升级而且成本远低于基于硬件的防火墙。 基于硬件的防火墙大多采用ASIC,而不需要OS的支持,其特点是:速度快、稳定性好、安全系数要高于软件的防火墙,但成本较高、扩展性和易升级性不如软件防火墙。 ASIC的全称为Application Specific Integrated转载 2008-01-29 12:21:00 · 1870 阅读 · 0 评论 -
libpcap抓包简单例子
#include #include #include #include #include void tcp_packet_callback(unsigned char *argument,const struct pcap_pkthdr* pcap_header,const unsigned char *packet_content) { struct tcphdr *tcpptr=(stru原创 2007-11-25 20:28:00 · 5847 阅读 · 1 评论 -
epoll使用例子
在大家苦苦的为在线人数的增长而导致的系统资源吃紧上的问题正在发愁的时候,Linux 2.6内核中提供的System Epoll为我们提供了一套完美的解决方案。传统的select以及poll的效率会因为在线人数的线形递增而导致呈二次乃至三次方的下降,这些直接导致了网络服务器可以支持的人数有了个比较明显的限制。 自从Linux提供了/dev/epoll的设备以及后来2.6内核中对/dev/epoll设原创 2007-11-26 20:57:00 · 1256 阅读 · 0 评论 -
使用 SCTP 优化网络
流控制传输协议(Stream Control Transmission Protocol,SCTP)是一种可靠的传输协议,它在两个端点之间提供稳定、有序的数据传递服务(非常类似于 TCP),并且可以保护数据消息边界(例如 UDP)。然而,与 TCP 和 UDP 不同,SCTP 是通过多宿主(Multi-homing)和多流(Multi-streaming)功能提供这些收益的,这两种功能均可提高可用转载 2007-12-03 22:49:00 · 902 阅读 · 0 评论 -
双绞线网线线序解析
局域网就是将单独的微机或终端,利用网络相互连接起来,遵循一定的协议,进行信息交换,实现资源共享。网线常用的有:双绞线、同轴电缆、光纤等。双绞线可按其是否外加金属网丝套的屏蔽层而区分为屏蔽双绞线(STP)和非屏蔽双绞线(UTP)。从性价比和可维护性出发,大多数局域网使用非屏蔽双绞线(UTP-Unshielded Twisted pair) 作为布线的传输介质来组网。 UTP网线由一定长度的双绞转载 2008-03-09 09:34:00 · 1065 阅读 · 0 评论 -
SIP协议详解
一、SIP协议的背景和功能SIP( 会话初始协议)的开发目的是用来帮助提供跨越因特网的高级电话业务。因特网电话(IP电话)正在向一种正式的商业电话模式演进,SIP就是用来确保这种演进实现而需要的NGN(下一代网络)系列协议中重要的一员。SIP是IETF标准进程的一部分,它是在诸如SMTP(简单邮件传送协议)和HTTP(超文本传送协议)基础之上建立起来的。它用来建立,改变和终止基于IP网络的用户间的原创 2008-04-27 08:40:00 · 852 阅读 · 0 评论 -
epoll精髓
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_S转载 2008-07-18 20:21:00 · 561 阅读 · 0 评论 -
epoll完整例子
#include #include #include #include #include #include #include #include #define MAXLINE 100voidsetnonblocking (int sock){ int opts = 0; opts = fcntl (sock, F_GETFL); if (opts { perror ("fc转载 2008-07-18 21:53:00 · 1108 阅读 · 0 评论 -
高性能服务器的资源和相关站点
高性能服务器的资源和相关站点 本文作者:金蜗牛Goldou本文出处:http://blog.youkuaiyun.com/goldou声 明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章的作者, 出处以及声明信息. 谢谢! 引子最近由于自己参与的项目和毕业论文的关系,正在研究高性能服务器方面的编程。服务器网络层使用中间件转载 2008-09-04 08:23:00 · 1261 阅读 · 0 评论 -
RADIUS协议:认证与计费的鼻祖
RADIUS协议:认证与计费的鼻祖 RADIUS(Remote Authentication Dial In User Service)协议最初是由Livingston公司提出的,原先的目的是为拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议。 RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(Net Access Server)服务器,现转载 2009-02-11 20:47:00 · 1363 阅读 · 0 评论 -
libpcap函数库框架和使用
libpcap函数库框架和使用libpcap的英文意思是 Packet Capture library,即数据包捕获函数库。该库提供的C函数接口可用于需要捕获经过网络接口(通过将网卡设置为混杂模式,可以捕获所有经过该接口的数据报,目标地址不一定为本机)数据包的系统开发上。著名的TCPDUMP就是在libpcap的基础上开发而成的。libpcap提供的接口函数主要实现和封装了与数据包截获有原创 2007-11-25 20:21:00 · 1422 阅读 · 0 评论 -
linux socket编程 udp connect例子
#include #include #include #include #include #include #include #include void process_client(int s) { char buff[128]; int rc,maxfd; while(fgets(buff,sizeof(buff),stdin)!=NULL) {原创 2007-11-25 20:18:00 · 2949 阅读 · 0 评论 -
linux socket编程服务端模型(用getaddrinfo)
//server_wait.c#include "unistd.h"#include "sys/types.h"#include "sys/socket.h"#include "netinet/in.h"#include "arpa/inet.h"#include "stdio.h"#include "string.h"#include #include #include #include原创 2007-11-25 20:15:00 · 2745 阅读 · 1 评论 -
防火墙的关键指标 - 并发连接数
防火墙的关键指标 - 并发连接数 并发连接数是指防火墙或代理服务器对其业务信息流的处理能力,是防火墙能够同时处理的点对点连接的最大数目,它反映出防火墙设备对多个连接的访问控制能力和连接状态跟踪能力,这个参数的大小直接影响到防火墙所能支持的最大信息点数。 并发连接数是衡量防火墙性能的一个重要指标。在目前市面上常见防火墙设备的说明书中大家可以看到,从低端设备的500、1000个并转载 2008-01-29 12:28:00 · 1451 阅读 · 0 评论 -
linux网络socket编程服务器端(tcp/udp)
//passive.c 对tcp和udp通用#include #include #include #include #include #include void error(int status, int err,char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt原创 2007-11-25 19:45:00 · 1291 阅读 · 0 评论 -
linux网络socket编程客户端端(tcp/udp)
//positve.c //对tcp和udp均适用#include #include #include #include #include #include void error(int status, int err,char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(stderr,原创 2007-11-25 19:49:00 · 1082 阅读 · 0 评论 -
linux socket编程 多协议服务器例子
#include #include #include #include #include #include #include #include #include #include void sig_child() { pid_t pid; int status; while((pid=waitpid(-1,&status,WNOHANG))>0) printf("%d terminated原创 2007-11-25 19:53:00 · 777 阅读 · 0 评论 -
unxi域协议编程服务器端(tcp/udp)
//unixserver.c#include #include #include #include #include #include #include void error(int status, int err,char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); if原创 2007-11-25 19:58:00 · 739 阅读 · 0 评论 -
linux socket编程 daemon例子
#include #include #include #include #include #include #include #include #include #include #include typedef void (*Sigfunc)(int);void reap_status() { int pid; int status; while((pid = wait3(&status原创 2007-11-25 20:02:00 · 1622 阅读 · 0 评论 -
linux socket编程 用线程的服务器例子
#include #include #include #include #include #include #include #include #include #include struct sockargs { int s; struct sockaddr_in *remote; };void* process_server(void *args) { int len,s;原创 2007-11-25 20:03:00 · 723 阅读 · 0 评论 -
ping简单实现
#include "strings.h"#include "stdio.h"#include "unistd.h"#include "sys/types.h"#include "sys/socket.h"#include "netinet/in.h"#include "arpa/inet.h"#include "sys/wait.h"#include "errno.h"#include "sys/原创 2007-11-25 20:05:00 · 970 阅读 · 0 评论 -
linux socket编程客户端模型(用getaddrinfo)
#include "unistd.h"#include "sys/types.h"#include "sys/socket.h"#include "netinet/in.h"#include "arpa/inet.h"#include "stdio.h"#include "string.h"#include #include #include #includ原创 2007-11-25 20:13:00 · 1859 阅读 · 1 评论 -
UDP数据包一次发送多大为好
在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,或许也能得到一点帮助:首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,传输层,应用层.UDP属于运输层,下面我们由下至上一步一步来看:以太网(Ethern转载 2009-03-06 08:41:00 · 3207 阅读 · 0 评论