随笔分类 -  网络编程

1
摘要:侧重于介绍三者关系,详细的分析见文中链接。 阅读全文
posted @ 2018-12-22 16:53 五岳 阅读(2457) 评论(0) 推荐(1) 编辑
摘要:wrieshark sudo yum install wireshark-gnome sudo wireshar (以root启动,否则看不到网卡)网站URL格式 以查询lumia为例 google http://www.google.com/search?q=lumia baidu http://www.baidu.com/s?wd=lumia tb http://s.taobao.com/search?q=lumia 亚马逊 http://www.amazon.cn/s/keywords=lumia 当当 http://search.dangdan... 阅读全文
posted @ 2013-10-02 11:39 五岳 阅读(782) 评论(0) 推荐(0) 编辑
摘要:一个简单的Nginx下HTTP过滤模块的实现,功能为给纯文本响应增加一个文本前缀。 阅读全文
posted @ 2013-08-21 10:30 五岳 阅读(5615) 评论(4) 推荐(1) 编辑
摘要:以《深入理解Nginx》上的实例说明如何借助upstream模块和subrequest这两种全异步方式与第三方服务器进行通信。在原书的源码基础上,对整个流程进行梳理和总结,并根据RFC2616分析了Nginx处理HTTP响应时对响应的划分。 阅读全文
posted @ 2013-08-20 21:07 五岳 阅读(7635) 评论(0) 推荐(3) 编辑
摘要:以HelloWorld为基础,修改为读取nginx.conf配置项并输出的程序,理清在读取配置项时,存储结构ngx_http_mytest_conf_t、初值生成方法create_loc_conf()、解析方法数组ngx_command_s[]和合并方法merge_loc_conf()的原理和联系。 阅读全文
posted @ 2013-08-14 21:50 五岳 阅读(4026) 评论(2) 推荐(3) 编辑
摘要:最近在读陶辉的《深入理解Nginx》,一是可以跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux环境下网络编程的细节。读书的时候自然少不了实际地动手,这个系列的博文是对学习过程的梳理和动手过程的补充。原书对实践中一些已提及的细节问题不再赘述。 阅读全文
posted @ 2013-08-13 20:22 五岳 阅读(8873) 评论(4) 推荐(3) 编辑
摘要:或许你曾经仔细了解过什么是大端小端,也动手编写了测试手头上的机器上是大端还是小端的程序,甚至还编写了大端小端转换程序;但过了一段时间之后,当你再看到大端和小端这两个字眼,你的脑中很快浮起了自己曾经做过的工作,却总是想不起究竟哪种是大端、哪种是小端,然后又去查以前写的记录?更让人不快的是,这种经历反反复复,让你十分困扰。如果你和以前的笔者一样,有过这种不快的经历,那么这篇文章希望能帮你彻底解决这个苦恼,让你彻底记住它们。 如果你在工作中经常使用到大端和小端以至于对它们十分熟悉,或者你的记忆力在保持时间的长度和精准度上都十分优秀,以至于不需要借助其他的方法,那么这篇文章不适合你。 如果你... 阅读全文
posted @ 2013-06-08 16:03 五岳 阅读(108192) 评论(4) 推荐(30) 编辑
摘要:前言: 这算是第二次系统地阅读UNPv1,正如副标题,不希望写成书摘、缩写版,尽量多写写个人体会和获得的经验,因此很多地方都会从全书的角度来说明,而不仅仅限于某个章节内部。 SCTP、信号驱动I/O、广播和多播等内容不包括在内。准备工作: 为了适应在命令行界面编写代码,我先进行了vim环境的配置和Xshell的配置。在读书过程中还学习了gdb调试程序的方法(见这里)。(1)vim插件搭建 从别人那里拷贝现成的的.vimrc和插件,分别放于/home/用户名 和/home/用户名/vim文件夹下就行了。(2)Xshell远程登录 下载安装Xshell。由于是用VMware装的Ubu... 阅读全文
posted @ 2013-03-31 17:36 五岳 阅读(1323) 评论(0) 推荐(0) 编辑
摘要:这几天照着UNP上提供的ping源码编写了一个用来学习。虽然编译后能运行,但由于使用了原始套接字,必须root权限运行,这与和Linux下真实的ping有差别:后者是不需要输入sudo或者切换到#才能运行的。linux中的ping源码没有找到,但是看到oschina上有一例自制的ping源码相似,作者提供的示意图中在$提示符下没有用sudo运行的。总之,希望能够使自己编写的程序以root权限运行而不需要加上sudo或者切换到#提示符。 没有找到能在进程运行时提升自身权限的方法,另查到一种方法(来源见文后注释)可以实现,这两步缺一不可:(1)用root权限完成gcc;(2)chmod u+... 阅读全文
posted @ 2013-03-31 15:35 五岳 阅读(1589) 评论(0) 推荐(0) 编辑
摘要:原先曾以Socket编程为入口开始自己的新的学习,毕竟未曾致用,时至今日已比较生疏。借着阅读《UNIX网络编程(卷一)》(简称UNPv1)的机会,正好复习一番,而且希望将新的感受记录下来。一些技术细节翻阅原书即可,点到为止,不在这篇博文详述。 作者推荐在网络编程中使用snprintf()代替sprintf()、用fget()、strncat()和strncpy()分别代替gets()、strcat()和strcpy();同时提到了更好的替代函数strlcat()和strlcpy()。具体原因是前者的调用会使缓冲区溢出,而这是黑客网络入侵的一种方式。snprintf()需要缓冲区长度作为显... 阅读全文
posted @ 2012-06-19 20:48 五岳 阅读(1284) 评论(0) 推荐(0) 编辑
摘要:select提供的轮询会随着fd数目的增长降低效率,并且其上限是系统定义过的。UNP上select的例子需要编程者自己维护一个fd使用情况的结构,很抽象繁琐。后面的poll的例子和本文提到的epoll使用方法差不多,这是因为高级polling技术没有标准,各个操纵系统的实现不一样,而epoll是由Linux提供的,是对poll的改进。个人感觉区别在于epoll对缓冲池的维护(事件的加入和维护)更简单。 通过对一篇文章(http://blog.csdn.net/ljx0305/article/details/4065058,已转载至“文章”一栏)的学习,笔者试着修改了并调试通过了C语言版的... 阅读全文
posted @ 2012-05-02 11:38 五岳 阅读(3620) 评论(0) 推荐(1) 编辑
摘要:近期课程的作业需要用到RPC编程,除了课堂上学到的知识,还得亲自动手。打算先写个简单的HelloWorld练习一下,顺便复习一下学到的知识。 RPC意为远程过程调用协议(Remote Procedure Call Protocol)。编制好单机应用程序,然后划分为两个或多个程序片,加入通信协议使得每片可以在单独的计算机上运行。从一个程序片调用另一个程序片的过程称为远程过程调用,即RPC。它是一个C/S模型,调用程序称为rpc client,被调用程序片称为rpc server。 对于RPC的编程过程可以简化如下:1.构建解决问题的常规应用程序;2.选择一组过程形成远程程序,以便将远程程... 阅读全文
posted @ 2011-11-26 02:13 五岳 阅读(4731) 评论(0) 推荐(1) 编辑
摘要:一、三层(网络层)发现算法来源:王娟娟.基于SNMP的网络拓扑发现算法研究.武汉科技大学硕士学位论文,2008数据结构:待检路由设备网关链表:存放指定深度内待检路由设备的网关信息,处理后删除。拓扑信息链表:存放从已检测路由设备的网关信息。子网信息链表:存放网关信息对应的子网信息。基本思想: 类似于广度优先,在指定深度内运行算法,最后根据拓扑信息链表获得所有路由及其互联关系,根据子网信息链表各路由设备连接的子网及子网内所有活动主机的信息。需要获得的信息: 路由信息如下图所示。点击可查看补充说明。路由表中的每个条目都包含ipRouteDest、ipRouteIfIndex、ipRouteNex.. 阅读全文
posted @ 2011-09-30 11:23 五岳 阅读(6364) 评论(0) 推荐(1) 编辑
摘要:(本文绝大部分内容来自于Gary.Wrighth和W.Richard Stevens的《TCP/IP详解,卷1:协议》,从中节选这些内容主要是为了方便查阅)一、协议 基于TCP/IP的网络管理包含两个部分:网络管理站(也叫管理进程,manager)和被管的网络单元(也叫被管设备) 。被管设备种类繁多,例如:路由器、X终端、终端服务器和打印机等。这些被管设备的共同点就是都运行TCP/IP协议。被管设备端和管理相关的软件叫做代理程序(agent)或代理进程。管理进程和代理进程之间的通信协议,叫做简单网络管理协议SNMP(Simple NetworkManagement Protocol) 。在R. 阅读全文
posted @ 2011-09-19 18:46 五岳 阅读(1102) 评论(0) 推荐(0) 编辑
摘要:放假归来,半个月没看书了,稍微有些生疏。被安排了新的工作,老的自学任务还需继续完成。 这一章内容比较多,按小节整理了一下。一、编码整数1.整数型的大小 由通信过程双方交换信息的协议标准引申出了编码的整数,进而探讨了各个整数类型的大小(char、int、long、int8_t、uint8_t等)、获取它们的长度的方法——sizeof()、并且有一个简单的程序示例TestSizes.c来展示。2.传输顺序 多个字节编码的整数,是从最高有效位(大端、左端)还是从最低有效位(小端、右端)发送,也是传输双方需要协调的。大多数协议使用大端顺序,因此它也被称为网络字节顺序。3.符号扩展 利用... 阅读全文
posted @ 2011-09-08 21:37 五岳 阅读(652) 评论(0) 推荐(0) 编辑
摘要:UDP的过程通信看上去比TCP简单一些,但也有许多细节需要注意。比如,UDP套接字使用前不必连接,TCP类似于电话通信,UDP类似于邮件通信,UDP套接字就像一个邮箱,可以把许多不同来源的信件或包裹放入其中。因此,在示例UDPEchoClient.c中,是需要用SockAddrsEqual()来检测回送的数据包是否是之前所送往的服务器回送的,尽管在示例中不太可能出现这种情况。 程序使用的地址结构、套接字的创建还是与TCP相差无几。由于没有建立连接的步骤,不需要调用listen(),一旦套接字具有地址就准备好接受消息。同时UDP也不需要使用accept()为每个客户获取一个新的套接字,而是... 阅读全文
posted @ 2011-08-05 22:25 五岳 阅读(873) 评论(0) 推荐(0) 编辑
摘要:这一章的核心内容是getaddrinfo()函数。 int getaddrinfo(constchar*hostStr, constchar* serviceStr, conststruct addrinfo *hints,struct addrinfo **results)//需要配合下面函数进行使用void freeaddrinfo(struct addrinfo *addrList) //释放创建的结果链表const char *gai_strerror(int errorCode) //如果getaddrinfo返回非0值,可以描述出错的是什么 含义: hostStr 主... 阅读全文
posted @ 2011-08-04 21:29 五岳 阅读(671) 评论(0) 推荐(0) 编辑
摘要:前段时间刚开始学习《TCP/IP Sockets编程(C语言实现) (第2版)》一书,又被告知建议先去看一下《UNIX网络编程(第一卷)》的部分内容会对理解其理论知识有所帮助,于是稍微停滞了一下。几天前所练习的实例已经有所生疏,因此为了复习这部分内容(前面所提起的第一本书第2章),此文便作为复习笔记(书本关键内容摘录),而以后各章节的学习也希望能做到及时总结和复习。 本章示例的工作方式:客户连接服务器并发送它的数据;服务器简单地把它接收到的任何内容发送回客户并断开连接。1.典型的TCP客户的通信步骤⑴使用socket()创建TCP套接字 参数涉及地址族、使用的协议,正确创建返回一个句柄... 阅读全文
posted @ 2011-08-03 21:08 五岳 阅读(2628) 评论(0) 推荐(0) 编辑
摘要:关于IPv6地址的结构(P23)struct in_addr { uint32_t s_addr[16];}; IPv6地址是128位的,因此对此生疑。经过对netinet/in.h查证,发现确实有误。以下是在in.h中的定义:struct in6_addr { union { uint8_t __u6_addr8[16];#if defined __USE_MISC || defined __USE_GNU uint16_t __u6_addr16[8]; uint32_t __u6_addr32[4];#endif } __in6_u... 阅读全文
posted @ 2011-07-30 11:25 五岳 阅读(850) 评论(0) 推荐(0) 编辑
摘要:作者所属大学Baylor的网站,在相关的页面上提供了下载。http://cs.ecs.baylor.edu/~donahoo/practical/CSockets2/textcode.html后来发现这篇日志访问挺高的,干脆自己打个包放上来了。http://files.cnblogs.com/wuyuegb2312/Sockets%E7%BC%96%E7%A8%8B%E6%BA%90%E7%A0%81.rar 阅读全文
posted @ 2011-07-29 11:50 五岳 阅读(1940) 评论(0) 推荐(0) 编辑

1
回到顶部