网络技术
文章平均质量分 77
metasearch
这个作者很懒,什么都没留下…
展开
-
Windows Socket五种I/O模型——代码全攻略(转)
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择 (WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求原创 2008-03-05 10:10:00 · 713 阅读 · 0 评论 -
ACE中的设计模式应用场景---模式初学者勿入
ACE中的设计模式应用场景---模式初学者勿入 最近在整理以前所看文章内容时,发现了几篇2003年程序员合订本里关于 ACE的文章,当年这几篇文章中所谈到的内容就让人非常兴奋,因为在那个国内热火朝天学习设计模式的几年里,这几篇文章因为其内容涉及到了bridge, strategy, adapter, facade等模式在这个网络通信框架中实打实的应用,让我切身体会转载 2008-09-28 15:07:00 · 982 阅读 · 1 评论 -
网络编程入门
Internet SocketsVersion 1.5.5 (13-Jan-1999)[http://www.ecst.csuchico.edu/~beej/guide/net] 原著:Brian "Beej" Hall翻译:Wilbur Lang 介绍Hey! Socket 编程让你沮丧吗?从 man pages 中很难得到有用的信息吗?你想 跟上时代去做一做 Internet 程序,但是为你转载 2008-10-07 19:34:00 · 1289 阅读 · 0 评论 -
Linux网络编程必看书籍推荐
-------------转自 http://blog.csdn.net/21aspnet/article/details/6694485------------------------牛人!首先要说讲述TCP/IP的书很多,其中有3泰书很全。分别是《TCP/IP详解》三卷本,《用TCP/IP进行网际互连》三卷本,《TCP/IP指南》+《IPv6》四卷本其中TCP/IP详解的作转载 2012-08-21 22:50:24 · 740 阅读 · 0 评论 -
High-Performance Request-Handling Programs
1) The C10K problem : http://www.kegel.com/c10k.htmlIntroduce the I/O Strategies (thread/process, block/non-block, level-triggered readiness notification[select/poll]/readiness change notification转载 2012-10-04 21:18:09 · 454 阅读 · 0 评论 -
Beej's Guide to Network Programming
Beej's Guide to Network ProgrammingUsing Internet SocketsBrian "Beej Jorgensen" Hallbeej@beej.us Version 3.0.15July 3, 2012Copyright © 2012 Brian "Beej Jorgensen" HallContents1.转载 2012-11-26 22:50:08 · 632 阅读 · 0 评论 -
TCP 拥塞控制 -congestion control
为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno中又转载 2012-11-20 22:25:05 · 2900 阅读 · 0 评论 -
TCP拥塞控制及其标准算法
什么是拥塞?当网络中存在过多的报文时,网络的性能就会相应下降,这种现象就被成为拥塞。Copy一篇论文中的话来解释下: 如上图,当负载较小时,吞吐量的增长与负载相比基本呈线性关系,延时(即第二个图的纵坐标:响应时间)增长缓慢,但是当负载超过Knee点后,吞吐量增长十分缓慢,但是延迟却增长较快,当负载超过Cliff之后,吞吐量就急剧下降,延迟相应急剧上升。Cliff点也就是网络的最大负载,转载 2012-11-21 17:21:29 · 1662 阅读 · 0 评论 -
UNP: Chatper5-TCP Server Client
Notes:1 多进程的server程序, 记得要处理SIG_CHLD signal, 否则会有zombie process存在2 TCP server clien Senario: 2.1 Client abort before server's accept() return: -client 在和server完成三次握手后close, 向server发送RST。这个通原创 2012-12-06 15:52:44 · 576 阅读 · 0 评论 -
epoll 使用详解
epoll 使用详解2012-01-09 16:32 by Haippy, 1454 阅读, 0 评论, 收藏, 编辑epoll简介epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非转载 2013-02-27 13:09:39 · 559 阅读 · 0 评论 -
Linux Epoll介绍和程序实例
Linux Epoll介绍和程序实例1. Epoll 是何方神圣?Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。其实在 Linux 下设计并发网络程序,向来不缺少方法,比如典型的 Apache 模型( Process Per Conn转载 2013-02-27 14:01:50 · 460 阅读 · 0 评论 -
I/O Multiplexing & Scalable Socket Servers
The Session Initiation Protocol (SIP) is a signaling protocol for Internet conferencing, telephony, presence, event notification, and instant messaging. I recently had to write a TCP-to-UDP proxy serv转载 2013-06-11 22:59:20 · 898 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。直到有位转载 2013-09-03 14:59:46 · 632 阅读 · 0 评论 -
Socket服务器整体架构概述
Socket服务器主要用于提供高效、稳定的数据处理、消息转发等服务,它直接决定了前台应用程序的性能。我们先从整体上认识一下Socket服务器,Socket服务器从架构上一般分为:网络层、业务逻辑层、会话层、数据访问层,如图: (图1)(一) 网络层网络层主要用于侦听socket连接、创建socket、接受消息、发送消息、关闭连接。作为s转载 2013-12-22 11:33:51 · 899 阅读 · 0 评论 -
socket 的通信过程
下图是基于TCP协议的客户端/服务器程序的一般流程:服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept转载 2014-01-11 23:50:47 · 744 阅读 · 0 评论 -
Linux下同步模式、异步模式、阻塞调用、非阻塞调用总结
同步和异步:与消息的通知机制有关。 本质区别现实例子同步模式由处理消息者自己去等待消息是否被触发我去银行办理业务,选择排队等,排到头了就办理。异步模式由触发机制来通知处理消息者我去银行办理业务,取一个小纸条上面有我的号码,等到排到我这一号时由柜台的人通知我轮到我去办理转载 2014-01-16 11:46:17 · 580 阅读 · 0 评论 -
RST攻击
在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。1、TCP是什么? TCP是在IP网络层之上的传输层协议,用于提供port到port面向连接的可靠的字节流传输。我来用土语解释下上面转载 2014-01-17 20:46:09 · 853 阅读 · 0 评论 -
TCP keepalive机制
TCP 是面向连接的 , 在实际应用中通常都需要检测对端是否还处于连接中。如果已断开连接,主要分为以下几种情况: 1. 连接的对端正常关闭,即使用 closesocket 关闭连接。 2. 连接的对端非正常关闭,包括对端异常关闭,网络断开等情况。 对于第一种情况,很好判断,但是对于第二种情况,可能会要麻烦一些。在网上找到转载 2014-03-06 17:28:19 · 2208 阅读 · 0 评论 -
解决TCP网络传输“粘包”问题
解决TCP网络传输“粘包”问题 作者:杨小平 王胜开 原文出处:http://www.ciw.com.cn/ 当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport contr转载 2008-09-11 09:11:00 · 1009 阅读 · 0 评论 -
DHCP:动态主机配置协议(Dynamic Host Configuration Protocol)
DHCP:动态主机配置协议(Dynamic Host Configuration Protocol)动 态主机配置协议(DHCP)是一种使网络管理员能够集中管理和自动分配 IP 网络地址的通信协议。在 IP 网络中,每个连接 Internet 的设备都需要分配唯一的 IP 地址。DHCP 使网络管理员能从中心结点监控和分配 IP 地址。当某台计算机移到网络中的其它位置时,能自动收到新的 IP原创 2008-03-13 22:03:00 · 1313 阅读 · 0 评论 -
windows socket api 使用经验
本文是我在进行MS-Windows、HP-Unix网络编程的实践过程中总结出来的一些经验,仅供大家参考。本文所谈到的Socket函数如果没有特别说明,都是指的Windows Socket API。 一、WSAStartup函数 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); 使用Socket的程序在使用Socket之前原创 2008-03-05 10:10:00 · 423 阅读 · 0 评论 -
如何进行 Socket 编程
进程通信的概念最初来源于单机系统,由于每个进程都在各自的地址范围内运行,为了保证两个相互通信的进程之间既不互相干扰,又协调一致的工作,操作系统为进程通信提供了相应设施,如UNIX BSD中的管道(pipe),有名管道(named pipe)和软中断信号(singal),UNIX system V的消息(message)、共享存储区(shared memory)和信号量(semaphore)等原创 2008-03-05 10:10:00 · 641 阅读 · 0 评论 -
什么是重叠I/O
在windows中有一个api叫readfile bool readfile( handle hfile, // handle to file lpvoid lpbuffer, // data buffer dword原创 2008-03-05 10:10:00 · 5098 阅读 · 7 评论 -
OSI体系结构由哪7个层次组成?简要说明各层次的作用
OSI体系结构由哪7个层次组成?简要说明各层次的作用。OSI是Open SystemInterconnect的缩写,意为开放式系统互联。国际标准组织(国际标准化组织)制定了OSI模型。这个模型把网络通信的工作分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。1至4层被认为是低层,这些层与数据移动密切相关。5至7层是高层,包含应用程序级的数据。每一层负责一项具体原创 2008-03-05 10:10:00 · 1612 阅读 · 0 评论 -
udp编程学习笔记(转)
1.在进行udp编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对 像icq一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助: 首先,我们知道,tcp/ip通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层. udp属于运原创 2008-03-05 10:10:00 · 501 阅读 · 0 评论 -
TCP/IP三次握手详解
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;原创 2008-03-04 18:25:00 · 15908 阅读 · 4 评论 -
TCP的连接和关闭
TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的。建立一个 TCP 连接 TCP使用三次握手 ( three-way handshake ) 协议来建立连接,图 3-10 描述了三次握手的报文序列。这三次握手为: 请求端(通常称为客户)发送一个 SYN 报文段原创 2008-03-04 18:56:00 · 2327 阅读 · 0 评论 -
TCP的socket连接示例
源文件connector.c 原来的代码在windows下编译不通过,今天qzj问起才发现。因为加了异步的处理,没有对这部分代码进行兼容性处理。本着做学问一丝不苟嘀精神,重新修改了一下源代码。以下代码在VC++6和linux下编译执行通过 :)代码如下: #include #include #include #include #include #include原创 2008-03-05 10:10:00 · 593 阅读 · 0 评论 -
cpu与sleep之间的关系
在一段疑似死循环中,CPU的使用率其实跟你Sleep的时间有很大的关系,看下面这段:{int i = 0;while(1){i++;//Sleep(1);}}如果没有那个Sleep(1),那么使用率100%,加上Sleep(1),CPU使用率0%,原因很简单,因为i++可能1us都不用,但Sleep(1)是1ms,差了好几个数量级,对于每一次循环,线程在Sleep的时间要远大于工作的原创 2008-03-05 10:10:00 · 2279 阅读 · 2 评论 -
raw socket 的例子
一. 摘要 Raw Socket: 原始套接字 可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRaw = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); 这样我们就创建了一个 Raw Socket Sniffer: 嗅探器 关于嗅探器的原理我想大多数人可能都知道 1.原创 2008-03-05 10:10:00 · 1572 阅读 · 0 评论 -
WinSock学习笔记
WinSock学习笔记 作者:肖进 Socket(套接字)◆先看定义:typedef unsigned int u_int; typedef u_int SOCKET; ◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。◆Socket有五种不同的类型:1、流式套接字(stre原创 2008-03-05 10:10:00 · 626 阅读 · 0 评论 -
socket 接收线程实现(帖子)
我的服务程序在一个客户端接入以后就开一个接收线程,负责接收它的数据。 在此期间客户机保持和服务器的连接。 实际运行时,发现这个接收线程一运行,cpu利用率达到100%,根本接收不了其他的连接,请问大家怎么处理接收线程的?怎么改善接收线程的性能? // 接收数据线程如下: dword winapi recvthread(lpv原创 2008-03-05 10:10:00 · 1060 阅读 · 0 评论 -
TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流 (转)
目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等。这些协议又可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等。(2)数据成块类型,例如ftp,这种类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大,并尽可能的提高效率。针对这原创 2008-03-06 22:00:00 · 1113 阅读 · 0 评论 -
TCP 的数据流的传输
TCP 的数据流 TCP的数据流大致可以分为两类,交互数据流与成块的数据流。交互数据流就是发送控制命令的数据流,比如relogin,telnet,ftp命令等等;成块数据流是用来发送数据的包,网络上大部分的TCP包都是这种包。 很明显,TCP在传输这两种类型的包时的效率是不一样的,因此为了提高TCP的传输效率,应该对这两种类型的包采用不同的算法。原创 2008-03-06 22:31:00 · 2954 阅读 · 1 评论 -
TCP超时重传机制
超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。1.超时超时时间的计算是超时的核心部分,TCP要求这个算法能大致估计出当前的网络状况,虽然这确实很困难。要求精确的原因有两个:(1)定时长久会造成网络利用率不高。(2)定时太短会造成多次重传,使得网络阻塞。原创 2008-03-07 17:50:00 · 6304 阅读 · 1 评论 -
TCP滑动窗口机制
TCP协议在能够发送数据之前就建立起了“连接”。要实现这个连接,启动TCP连接的那一方首先将发送一个SYN数据包。这只是一个不包含数据的数据包, 然后,打开SYN标记。如果另一方同时在它收到SYN标记的端口通话,它将发回一个SYN+ACK:SYN和ACK标志位都被打开,并将ACK(确认)编 号字段设定为刚收到的那个数据包的顺序号字段的值。接下来,连接发起方为了表示收到了这个SYN+ACK信息,会向原创 2008-03-07 17:33:00 · 15148 阅读 · 5 评论 -
TCP/IP面试题
好久不碰基础知识了,花了2个多小时将这两套题做完,个人知识掌握有限,如发现错误之处请指明-第一套:网络基础知识考查日期:2008/3/3姓名:Amxking一,基础部份1、OSI的中文全称是( 国际标准化组织),它们分别是( 应用层(Application layer) 表示层(Presentation layer) 会话层(Session layer) 传输层(T原创 2008-03-07 18:41:00 · 8730 阅读 · 2 评论 -
TCP keep-alive的原理与使用
TCP 是面向连接的 , 在实际应用中通常都需要检测对端是否还处于连接中。如果已断开连接,主要分为以下几种情况: 1. 连接的对端正常关闭,即使用 closesocket 关闭连接。 2. 连接的对端非正常关闭,包括对端异常关闭,网络断开等情况。 对于第一种情况,很好判断,但是对于第二种情况,可能会要麻烦一些。在网上找到转载 2014-07-28 16:59:02 · 1547 阅读 · 0 评论