网络编程
coloriy
这个作者很懒,什么都没留下…
展开
-
Windows共享内存示例
Windows共享内存可以让两个进程对同一块内存进行读写。以下有2个进程,a.cpp生成A进程,b.cpp生成b进程。那么a进程将不停地读名为"Global\\MyFileMappingObject"的共享内存块,而b进程不停地写名为"Global\\MyFileMappingObject"的共享内存块。从而实现IPC。 //a.cpp#include #inclu转载 2015-07-28 13:35:31 · 1331 阅读 · 0 评论 -
Android 使用tcpdump抓包分析
1. download tcpdump binary from the web: http://www.androidtcpdump.com/android-tcpdump/downloads2. adb push tcpdump into the Android system: $adb push tcpdump /data/local/ , before that ,you must原创 2017-05-23 16:45:44 · 7059 阅读 · 0 评论 -
Epoll 模型实现
while (TRUE) { //等待EPOLL事件的发生,相当于监听,至于相关的端口,需要在初始化EPOLL的时候绑定。 int nfds = epoll_wait (m_epoll_fd, m_events, MAX_EVENTS, EPOLL_TIME_OUT); if (nfds continue; m_bOnTimeChecking = F转载 2016-07-01 15:01:24 · 443 阅读 · 0 评论 -
UDP穿洞技术,P2P一些原理
因为当前 IPV4地址的缺乏 ,nat、防火墙的中介设备和不对称寻址建立起来的 p2p通信机制造成了地址访问的问题。 在 internet最初体系结构中,每个节点都有全球唯一的 ip地址,能够直接通信。可是随着节点的增多, ip地址使用紧张,他们需要中介设备如 nat连在一起。 私有网络中的节点可以直接连接到相同私有网络中的其他节点,也可以连接到全局地址空间中拥有全球唯一 ip地址的节转载 2016-07-01 14:35:43 · 799 阅读 · 0 评论 -
NAT(Network Address Translation,网络地址转换)
NAT简介NAT(Network Address Translation,网络地址转换)是将 IP 数据报文头中的 IP地址转换为另一个 IP地址的过程。在实际应用中,NAT主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公网 IP地址代表较多的私网 IP地址的方式,将有助于减缓可用 IP地址空间的枯竭。 说明:私网 IP地址是指内部网络或主机的 IP地址,公网 IP转载 2016-07-01 14:33:06 · 3273 阅读 · 0 评论 -
RDP(Reliable--UDP)Library 一个基于UDP/IP协议的可靠网络通信库
此文由nunix@sohu.com原创,转载请注明出处。(全文下载)http://p.blog.csdn.net/images/p_blog_csdn_net/nunixblog/EntryImages/20081015/rdp.pdf.jpg (另存为pdf格式)一、 实现背景 在P2P产品实现中,NAT穿透是已经是很普遍的技术,其中UDP协议穿透又因转载 2016-07-01 14:30:15 · 6010 阅读 · 0 评论 -
网络常用转换函数inet_addr,htons,htonl
inet_addr 将"数字+句点"的格式的IP地址转换到unsigned long中,返回值已经是按照网络字节顺序的相反inet_ntoa把类型为struct in_addr的数据转化为"数字+句点"的形式的字符串typedef u_int32_t in_addr_t;struct in_addr{ in_addr_t s_addr;};本机字节顺序与转载 2015-10-30 10:39:59 · 1092 阅读 · 0 评论 -
epoll两种触发方式
LT(level triggered)是缺省的工作方式,并且同时支持block和no-block socket.在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,直至变为未就绪状态,所以,这种模式编程出错误可能性要小一点。传统的select/poll都是这种模型的代表。 ET (edge-triggere转载 2015-08-20 10:22:58 · 565 阅读 · 0 评论 -
NAT穿越-TCP打洞
TCP打洞在处于NAT之后的两台主机之间建立p2p TCP连接比建立相应的UDP要稍微复杂,但在协议层次,TCP打洞非常类似与UDP打洞。然而TCP协议本身比较复杂,因此支持的NAT比较少。然而,在NAT支持TCP打洞的情况下,TCP打洞像UPD打洞那样快并且可靠。穿透“行为良好”的NAT的TCP p2p连接事实上比UDP连接更健壮,因为,TCP协议的状态机给路径上的NAT提供了一种决定特转载 2015-08-20 12:42:43 · 2708 阅读 · 0 评论 -
数据中心TCP优化:同时满足低时延和高吞吐量
大的数据中心有成千上万台服务器,服务器之间大都用TCP来协作并传输数据,最终为用户提供服务。那数据中心的TCP工作得如何呢? 斯坦福大学和微软的两人对Bing服务的6000多台服务器集群在TCP方面的数据进行研究,用的数据是一个月的日志,包括应用、套接字级别和包级别的日志,压缩完后大概是150T的数据。一、发现的问题1、突发的丢包现象2、部分包传输时延大,90%的传输RTT值小于1转载 2015-08-05 10:56:37 · 3512 阅读 · 0 评论 -
TCP协议滑动窗口机制
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。 所谓滑动窗口协议,自己理解有两点:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;转载 2015-08-05 11:05:44 · 920 阅读 · 0 评论 -
http 协议的chunck概念
有时候,Web服务器生成HTTP Response是无法在Header就确定消息大小的,这时一般来说服务器将不会提供Content-Length的头信息,而采用Chunked编码动态的提供body内容的长度。进行Chunked编码传输的HTTP Response会在消息头部设置:Transfer-Encoding: chunked表示Content Body将用Ch转载 2015-08-05 10:49:12 · 5526 阅读 · 0 评论 -
TCp拥塞控制机制
TCP本身的可靠性是利用确认机制,超时重发来保证的,这些不说了,网上资料很多。不过以前一直没有仔细学习过TCP的网络拥塞控制,现在记录下一些总结吧。什么是拥塞? 一图胜千言,看上面的图,上面是负载-吞吐量,下面是负载-延迟,问题很明显了,受限于网络节点的物理承受能力,负载显然不可能和吞吐量成线性关系,当负载在Knee点的时候,吞吐量在一个较高的水平,同时数据包的延迟也较转载 2015-08-05 10:45:42 · 565 阅读 · 0 评论 -
Socket 长连接,短连接以及心跳(keep-alive)概念
长连接与短连接所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。 短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。 比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。转载 2015-07-30 10:39:53 · 2178 阅读 · 0 评论 -
TCP三次握手以及四次挥手图解
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。第一次握手:客户端发送一个TCP的SYN标志位置1的包指转载 2015-07-30 10:41:41 · 795 阅读 · 0 评论 -
Linux I/O多路复用技术-epoll
Linux I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。Linux 2.6内核中有提高网络I/O性能的新方法,即epoll 。1、为什么select落后 首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在我用的2.6.15-25-386内核中,该转载 2015-08-10 14:14:17 · 695 阅读 · 0 评论 -
字节序(byte order)和位序(bit order)
http://blog.csdn.net/aflyeaglenku/article/details/76209236最近在阅读 ipc发送音视频流的代码,偶然发现如果用到了位域,那么发送和接收的“字节”的值不一样!!所以在想是不是除了字节序之后,比特位的顺序也有大端小端之分。带着疑问查阅了度娘,看到如下一篇博客。作者也遇到了和笔者我相同的问题。感谢原作者的分享!博客地址如下:h转载 2017-09-30 09:08:27 · 1321 阅读 · 0 评论