
网络编程
文章平均质量分 86
行云_
这个作者很懒,什么都没留下…
展开
-
windows row socket
#include //#include /* for IP_HDRINCL */#include #include #pragma comment(lib, "ws2_32.lib") /* WinSock使用的库函数 */typedef struct _iphdr //定义IP首部 { unsigned char h_verlen; //4位首部长度+4位IP版本号 u原创 2013-03-05 22:20:40 · 1207 阅读 · 0 评论 -
tcpdump
tcpdump描述转储网络流量(dump traffic on a network)。tcpdump打印输出指定网络接口上,匹配指定布尔表达式(过滤器)的数据包。tcpdump 能截获指定网络接口上所有你感兴趣的包,不足之处是tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-原创 2013-12-11 17:00:57 · 1336 阅读 · 0 评论 -
connect超时设置
socket编程中,当客户端用connect()去连接一个服务端是,如果服务器或网络繁忙,或连接了一个未开机的主机时,客户端发送的SYN包得不到响应,connect函数会很久不返回(阻塞模式下)。具体的超时时间与系统相关,有的可能设置为75秒,有的可能设置为120秒等等。在有的应用中,阻塞太久不是程序想要的行为?connect超时时间与/proc/sys/net/ipv4/tcp_原创 2013-12-31 00:05:59 · 4511 阅读 · 1 评论 -
SYN包TCP选项的设置
一个SYN可能包括这些内容:初始系列号、初始窗口大小、MSS、窗口扩大因子、时间戳。那么是怎么决定是否设置某个选项,怎样设置的呢?例如窗口扩大因子有关传输的性能,我可以怎么样改动这个值呢?下面来看看内核是怎么做的?设置SYN包的TCP选项的函数(tcp_output.c中):/* Compute TCP options for SYN packets. This is not原创 2013-12-16 19:57:58 · 2029 阅读 · 0 评论 -
深入理解socket网络异常
在各种网络异常情况的背后,TCP是怎么处理的?又是怎样把处理结构反馈给上层应用的?本文就来讨论这个问题。分为两个场景来讨论建立连接1 正常情况下 进过三次握手,客户端连接成功,服务端有一个新连接到来。2 客户端连接了服务端未监听的端口在这种情况下,服务端会对收到的SYN回应一个RST(RFC 793 3.4),客户端收到RST之后,终止连接,并进入CLOSE原创 2013-12-09 23:35:13 · 4069 阅读 · 0 评论 -
DNS协议头
DNS请求包的格式,应该说长度是可变的,而且变化范围很大。比其它协议头要复杂的多。DNS协议是个很重要的协议,运行在UDP 53端口,是web应用不可或缺的部分。这里主要介绍DNS的请求包和响应包的格式。DNS请求包请求包相对来说简单点,首先有一个固定大小为12字节的头部,接着是查询的问题。固定头部一个正常的DNS请求包,这两个部分都是必不可原创 2013-12-20 22:32:16 · 3987 阅读 · 0 评论 -
Chrome高性能网络
Google Chrome的历史和指导原则最初的 38-page comic book 解释了Chrome的理念和创新之处,这本小册子很好的展示了隐藏在这个流行的浏览器之后的思考和设计过程。然而,这只是个开始。最初激励这个浏览器开发的核心原则一直引导Chrome不断前进。高速(Speed):做最快的浏览器安全(Security):向用户提供最为安全的运行环境稳定翻译 2013-11-24 11:38:28 · 2465 阅读 · 0 评论 -
TCP的状态变迁及RST报文段产生与处理
TCP状态变迁CLOSE: socket的初始状态,没有进行任何操作(connect, listen)之前的状态LISTEN: 可以接受SYN的状态,服务器等待连接SYN_RECEIVED: 一个连接请求已经到达,等待确认SYN_SENT: 发出连接请求,等待确认ESTABLISED:原创 2013-12-10 14:44:08 · 2506 阅读 · 0 评论 -
TCP创建连接和关闭连接
让我们来看看调用connect,TCP做了什么?创建连接 图示说明:行号用于引用。右箭头( --> )表示一个从TCP A到TCP B的分段。左箭头( 被丢弃的segment。圆括号中的是注释。TCP状态表示发送或收到一个segment之后的状态。每一行的中间部分简略显示了段的内容,包括:系列号,控制标志,ACK域。出于简明考虑,省略了其它部分。翻译 2013-12-05 00:10:01 · 2356 阅读 · 0 评论 -
window网络编程六大模型
Winsock I/O方法 Winsock以socket模型和socket I/O模型来控制如何在一个socket处理输入/输出。一个socket模式简单的决定当以一个socket来调用Winsock函数时它们的行为。另一方面,一个socket I/O模型描述了应用程序如何管理和处理在socket上的输入输出。 Winsock分为两种socket模式:阻塞和翻译 2013-07-10 23:00:03 · 1484 阅读 · 0 评论 -
可靠UDP简述
UDP是面向无连接的、不可靠的。数据包可能丢失。接收方收到的数据可能乱序、数据包也可能损坏。UDP是面向数据报的通信(TCP是面向字节流的通信),发送方发送多少个报文,接收方就接收多少次,即发送次数和接收次数要保持一致(这里发送和接收次数指有效次数,就是不包括那些重复进行的操作)。 UDP为了简单,并没有加入可靠性控制,它把响应的控制交给了应用层。如果要用UDP实现可靠传输,就要在应用中加原创 2013-02-26 16:24:32 · 1406 阅读 · 0 评论 -
Linux Epoll
Epoll描述epoll: I/O事件通知机制epoll是由poll进化而来,可用作边沿和水平(level)触发接口,并且能够很好的支持对大数量描述符的监视。系统提供了三个系统调用用来创建和控制epoll集合,分别是epoll_create, epoll_ctl, epoll_wait。一个epoll集合与一个通过epoll_create创建的描述符相关联。创建epoll集合之后可以通翻译 2013-07-06 22:17:01 · 1301 阅读 · 0 评论 -
Linux Epoll编程
Epoll介绍Epoll是当前大规模并发服务器编程的完美方案。据评测性能比select提高不只一个数量级。Linux从kernel 2.6之后开始支持。关于常用网络服务器编程模型的优缺点比较可以参考这里:http://blog.youkuaiyun.com/sparkliang/article/details/4770655epoll_create() #include原创 2013-07-01 09:23:51 · 1419 阅读 · 0 评论 -
在accept返回之前,连接终止
有一种类似于中断系统调用的情况,会导致accept返回一个非致命错误,这种情况下,我们只需要再次调用accept就行。下图所示的数据包系列,在繁忙的服务器上很常见(特别是繁忙的Web服务器)。在这里,三次握手完成后,连接建立完成,然后Client TCP发送一个RST(reset)。在服务器方,连接被它的TCP放入等待连接队列,当RST到来时,连接正在等待服务器进程调用accept翻译 2013-08-20 16:34:45 · 2047 阅读 · 0 评论 -
pcap2har
概述pcap2har: 把.pcap网络抓包文件转换为HTTP Archive file(HAR),是一个开源项目,使用python开发,依赖dpkt库(http://code.google.com/p/dpkt/),githup地址:https://github.com/andrewf/pcap2har。可以通过简单的运行如下命令来使用该程序:main.py my.pcap my.原创 2014-09-24 16:56:08 · 2611 阅读 · 0 评论