
网络编程
woshinia
这个作者很懒,什么都没留下…
展开
-
socket的发送与接收缓冲区
应用程序可通过调用send(write, sendmsg等)利用tcp socket向网络发送应用数据,而tcp/ip协议栈再通过网络设备接口把已经组织成struct sk_buff的应用数据(tcp数据报)真正发送到网络上,由于应用程序调用send的速度跟网络介质发送数据的速度存在差异,所以,一部分应用数据被组织成tcp数据报之后,会缓存在tcp socket的发送缓存队列中,等待网络空闲时转载 2012-07-17 12:27:23 · 14305 阅读 · 2 评论 -
TCP传输协议抓包经验
TCP传输通信时的几个状态TCP WindowUpdateTCP Previous segment lostTCP Dup ACK XXXX#X;TCP Retransmission TCP Previoussegment lost,它告诉发送方数据段丢失;TCP Dup ACK XXXX#X则代表了数据段丢失TCP状态,XXXX代表数据丢失转载 2014-04-03 14:43:48 · 1616 阅读 · 0 评论 -
TCP的数据流——滑动窗口,拥塞窗口,慢启动,Nagle算法,经受时延的确认等
(1).窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。下面举一个例子(假设转载 2014-04-03 16:04:02 · 10506 阅读 · 0 评论 -
高级I/O复用技术:Epoll的使用及一个完整的C实例
高性能的网络服务器需要同时并发处理大量的客户端,而采用以前的那种对每个连接使用一个分开的线程或进程方法效率不高,因为处理大量客户端的时候,资源的使用及进程上下文的切换将会影响服务器的性能。一个可替代的方法是在一个单一的线程中使用非阻塞的I/O(non-blocking I/O)。 这篇文章主要介绍linux下的epoll(7)方法,其有着良好的就绪事件通知机制。我们将会使用C转载 2014-04-03 12:21:37 · 11120 阅读 · 1 评论 -
7种网络编程I/O模型代码实现实例
部分代码参考《[WINDOWS网络与通信程序设计].王艳平》,网络中一些I/O模型的代码都没有对socket是否可写做过深入研究,我这边会提供一些解决方法。阻塞模式下,send会发生阻塞(非阻塞模式下send返回WSAEWOULDBLOCK错误,重叠I/O下表现为投递的发送请求一直无法完成)的情况一般可以分为3种 : 1, 服务器虽然发送了大量数据,但客户端并未调用recv函数去接。原创 2013-03-01 17:47:45 · 9944 阅读 · 1 评论 -
Linux网络协议栈分析——从设备驱动到链路层
在网上看到高手总结出来的,省的自己花时间再研究,放到此处以便学习。 原文:http://ericxiao.cublog.cn/ 成都的天气好像越来越好了,前几天还穿着穿着外套直打哆嗦,到今天已经“拨开阴云见太阳”,暖洋洋的,心情也暖洋洋的。暖和的正好想睡觉。打个呵欠,把网络设备管理这部份总结下吧。 Linux素以优秀的网络管理能力而著称,linux为何具有转载 2013-02-04 12:39:25 · 2773 阅读 · 0 评论 -
wireshark过滤语法总结
做应用识别这一块经常要对应用产生的数据流量进行分析。抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后参考。(脑子记不住东西)wireshark进行过滤时,按照过滤的语法可分为协议过滤和内容过滤。对标准协议,既支持粗粒度的过滤如HTTP,也支持细粒度的、依据协议属性值转载 2012-08-27 09:45:21 · 5390 阅读 · 0 评论 -
Wireshark抓包工具使用教程以及常用抓包规则
Wireshark是一个非常好用的抓包工具,当我们遇到一些和网络相关的问题时,可以通过这个工具进行分析,不过要说明的是,这只是一个工具,用法是非常灵活的,所以今天讲述的内容可能无法直接帮你解决问题,但是只要你有解决问题的思路,学习用这个软件就非常有用了。Wireshark官方下载地址:http://www.wireshark.org/download.html如果记不住,可以在百度中输入W转载 2012-08-24 17:42:38 · 1747 阅读 · 0 评论 -
wireshark过滤命令
一、IP过滤:包括来源IP或者目标IP等于某个IP比如:ip.src addr==192.168.0.208 or ip.src addr eq 192.168.0.208 显示来源IP ip.dst addr==192.168.0.208 or ip.dst addr eq 192.168.0.208 显示目标IP二、端口过滤:比如:tcp.port e转载 2012-08-24 17:28:54 · 1191 阅读 · 0 评论 -
完成端口通信例子
代码贴上来以后慢慢修改服务端代码:[cpp] view plaincopyprint?#include #define BUFFER_SIZE 1024 #define OP_READ 18 #define OP_WRITE 28 #define OP_ACCEPT 38 #define CHECK_CODE 0x0转载 2012-07-24 18:22:43 · 1843 阅读 · 0 评论 -
网络编程中如何为I/O操作设置超时
主要就是一种超时检测机制,很多服务器程序都需要这样的机制,因为太多空闲的连接还是使用一定量的系统资源的,有些服务器,象FTP服务器,有时还限制了最大登陆的连接数,万一有人恶意大量地连接,但这些连接不被系统定时断开的话,那么正常的用户有可能无法登陆FTP服务器(因为连接数到达上限)1.使用setsockopt设置SO_RCVTIMEO这种方法简单好用,但缺点是只用于阻塞的socket,而转载 2012-08-08 09:33:30 · 2570 阅读 · 0 评论 -
关于SO_REUSEADDR的使用说明~
参考WINDOWS 网络编程技术 1. 可以对一个端口进行多次绑定,一般这个是不支持使用的; 2. 对于监听套接字,比较特殊。如果你定义了SO_REUSEADDR,并且让两个套接字在同一个端口上进行接听,那么对于由谁来ACCEPT,就会出现歧义。如果你定义个SO_REUSEADDR,只定义一个套接字在一个端口上进行监听,如果服务器出现意外而导致没有转载 2015-01-17 15:10:09 · 770 阅读 · 0 评论