随笔分类 -  TCP/IP

LwIP和Linux等各种开源的网络协议分析
摘要:今天遇到一个奇怪的问题。linux环境下gcc,socket中UDP的recvfrom函数原型ssize_t recvfrom(int sockfd,void *buf,int len,unsigned int flags, struct sockaddr *from,socket_t *fromlen);网上给出的最基本的UDP—echo服务器测试基本的是可以的。关于recvfrom的代码如下 char buf[BUFF_SIZE]; struct sockaddr_in their_addr; int sin_size; memset(buf,len,0); ... 阅读全文
posted @ 2012-04-13 21:00 westfly 阅读(5457) 评论(0) 推荐(0)
摘要:TCP三次握手 TCP协议提供可靠的连接服务,采用三次握手建立一个连接。以下步骤概述了通常情况下客户端计算机请求与服务器计算机简历TCP的过程:TCP三次握手图解TCP图解3次握手1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,其中包含它选择的初始序列号y、对客户端的序列号的确认x+1和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。3. 客户端接收到服务器端返回的S. 阅读全文
posted @ 2011-10-03 16:18 westfly 阅读(453) 评论(0) 推荐(0)
摘要:0.前言前文已经叙述道,linux中链表的实现是节点与数据分离,如果要使用链表,只需在数据结构中包含链表的结构(非指针)即可。struct nf_sockopt_ops的定义为struct nf_sockopt_ops { struct list_head list; u_int8_t pf; …… int ( * set )( struct sock * sk, int optval, void __user * user, unsigned int len); …… int ( * compat_get)( struct sock * sk, int optval, void __user 阅读全文
posted @ 2011-04-08 15:43 westfly 阅读(1643) 评论(0) 推荐(0)
摘要:网上关于list的源码分析很多,这里只是学习做比较。list的数据结构定义/* *双链表 */ struct list_head { struct list_head * next, ** prev; }; 或许我们比较习惯如下的形式struct list_head { struct list_head * next; struct list_head * prev; }; 前文已经说明,这与传统的经典定义有差异,只有链接指针,而无数据节点。这样做是为了带来数据定义的通用性。在C++中,使用模板技术来实现,而C中并没有相关的技术,那么如何访问到节点上的数据呢,成为面临的挑战之一。1.声明关于的 阅读全文
posted @ 2011-04-08 15:36 westfly 阅读(1486) 评论(0) 推荐(0)
摘要:Omnet++下载 OMNeT++ 4.1 win32 (source + IDE + MINGW, zip)安装教程下载安装前提1)安装了Java环境。2)解压的路径不能有空格。3)类似linux的方式进行安装 ./configure make4)测试参考教程 OMNeT++ 4.0 IDE(集成开发环境)教程 阅读全文
posted @ 2011-04-07 23:29 westfly 阅读(341) 评论(0) 推荐(0)
摘要:cURL是个非常不错的工具,同时libcurl 是一个很不错的库,支持http,ftp等很多的协议。好久之前就想学习下。cURLcpp是cURL的一个封装。有兴趣的同学可以尝试下。请参考文章《在 Windows 上编译(安装)和使用 libcurl》。如果不想自己编译,可以下载官方上编译好的库文件。一般比最新的版本低,下载地址为http://curl.haxx.se/latest.cgi?curl=win32-ssl-devel-msvc。可以参照上面的文章设置include 和lib路径,具体来说就是1)新建一个console工程,将下载包解压到的include 和lib拷贝到工程中(或者设 阅读全文
posted @ 2011-03-12 09:12 westfly 阅读(1459) 评论(0) 推荐(0)
摘要:在lwip协议栈中,在tcp.c中有如下代码#if SO_REUSE && SO_REUSE_RXTOALL if ((broadcast || ip_addr_ismulticast(&current_iphdr_dest)) && ((pcb->so_options & SOF_REUSEADDR) != 0)) { ………………………… }#endif /* SO_REUSE && SO_REUSE_RXTOALL */对于其上的两个条件编译选项,其定义在opt.h中/** * SO_REUSE==1: Enable 阅读全文
posted @ 2011-03-09 14:54 westfly 阅读(2942) 评论(0) 推荐(0)
摘要:学习TCP/IP,选用代码较为小巧的LwIP,搜索到Google的开源项目:LwIP-Win32在官方文档上说执行以下步骤即可开始: 1. 本项目目前只能在有线局域网内工作,因此您需要先确认您的计算机是否处于这样的工作环境。 2. 本项目依赖于winpcap,您可以从http://www.winpcap.org/install/bin/WinPcap_4_1_1.exe 下载。 3. 使用subversion客户端从http://lwip-win32.googlecode.com/svn/trunk/ 下载代码。4. 打开下载文件夹下的lwipwin32.sln,编译之后即可开始调试。 5. 阅读全文
posted @ 2011-02-24 14:46 westfly 阅读(1507) 评论(0) 推荐(0)