linux socket
happylife1527
这个作者很懒,什么都没留下…
展开
-
Linux Socket学习(一) .
http://blog.csdn.net/mylxiaoyi/article/details/1616462理解套接口在我们试着使用套接口之前理解套接口后面的一些内容是很重要的。这一部分描绘出围绕着套接口的一些高级内容。定义套接口要与使用电话的某人进行交流,我们必须拿起话筒,拨打对方的电话号码,并且等待对方的应答。当我们与对方通话时,就建立了两个通信端点。我们的电话,在我们的位转载 2012-11-08 10:07:59 · 386 阅读 · 0 评论 -
3-socket的实践到内核--追踪socket到内核 .
http://blog.csdn.net/embeddedfly/article/details/6411703前边二节我们看了关于socket的一些主要的实践练习,这些练习是对于我们进入内核追踪内核的socket过程非常重要,这节我们从应用程序的实践开始进入内核看是如何实现的,首先我们把前边二节的几个应用程序界面函数重新放在这里供大家参照,我们强调一点,有可能朋友们对我所说的应用程序界面的说转载 2012-12-10 12:19:07 · 407 阅读 · 0 评论 -
4-socket的实践到内核--追踪socket的创建 .
http://blog.csdn.net/embeddedfly/article/details/6411708我们说过socket篇幅比较大,内容相对较多所以分的章节细一些,敬请阅读的朋友们注意,这节我们继续前面的socket创建的追踪,上一节我们最后追踪到_sock_create(),并且它的前面不是很重要只是对一些参数的检验,我们接着这个函数往下看/*转载 2012-12-10 12:20:42 · 385 阅读 · 0 评论 -
单/多进程模式/多进程池(prefork)模型
http://www.cnblogs.com/wully/archive/2011/12/17/forksserver.html服务器的基本模型,不知道这么扯对不对,其实就是linux下服务器和客户端的通信模式。也就是面对客户端如狼似渴的访问需求,服务器该如何快速的响应。我总结下来有这么几种:单进程提供服务多进程提供服务多进程池服务(prefork)io复用提供服务(s转载 2012-12-23 22:15:07 · 991 阅读 · 0 评论 -
raw socket编程例子 .
http://blog.csdn.net/jw212/article/details/6740564转自:http://bbs.chinaunix.net/viewthread.php?tid=876233&extra=page%3D3前几天看了看>第一卷,为了加深理解,便写了几个简单的程序,最近好忙,但是又怕忘记前面所学的知识,就粗糙的整理了一下,贴出来,希望能给初学者以指导,同转载 2012-12-24 23:07:27 · 783 阅读 · 0 评论 -
5-socket的实践到内核--追踪Unix的socket .
http://blog.csdn.net/embeddedfly/article/details/6411714昨天我们追踪到了unix_create()这个函数处,今天我们继续从此处进行,老习惯先贴代码再做分析,可能有的朋友会说为什么不把分析放在代码中间,其实这是我的经验,因为我在阅读赵炯的内核书时,尽管他对每一行都进行了注释,可是我看完一遍以后,偶而看到实践中的代码却一点印象都没有转载 2012-12-11 17:42:10 · 653 阅读 · 0 评论 -
6-socket的实践到内核--Unix中socket的地址绑定 .
http://blog.csdn.net/embeddedfly/article/details/6411723这节开始探讨unix中的socket地址的绑定,昨天我们把socket的创建过程讲述了,socket创建之后必须要与一个地址绑定才能使用,为其“设置电话号码”有了这个“电话号码”,远方的“朋友”socket可以直接打电话给他进行连接了。我们下面看在内核中怎么设置的这个“电话号转载 2012-12-11 17:42:41 · 902 阅读 · 0 评论 -
7-socket的实践到内核--socket的监听 .
http://blog.csdn.net/embeddedfly/article/details/6411735这节我们看一下服务器端的socket监听,还是从应用程序界面看起listen(server_sockfd, 5);中间的过程我们不说了,只说到达了函数sys_listen()处,不知道这个过程的朋友参考前面几节内容。这个函数在/net/转载 2012-12-11 17:42:56 · 358 阅读 · 0 评论 -
8-socket的实践到内核--接受socket的连接 .
http://blog.csdn.net/embeddedfly/article/details/6411740今天分析服务器端的socket接收客户的连接函数accept(),我们从应用程序界面 accept(server_sockfd, (struct sockaddr *)&client_address, client_len);转载 2012-12-11 17:43:35 · 439 阅读 · 0 评论 -
9-socket的实践到内核--client调用connect .
http://blog.csdn.net/embeddedfly/article/details/6411745有些事情非常的有意思,开始这节之前我想谈一下“吹牛的人”,某企业为了获取高额利润请来一位所谓的高人,而此人更是大吹其专业,一边挺起自信的啤酒肚一边海吹自己开公司时如何自主研发的业绩,谈吐之间不乏高昂的旋律,不时摆出一副官人的态势,第一次其曰“核心板是买来的”第二次改曰“核心板是自己做转载 2012-12-11 17:44:12 · 542 阅读 · 0 评论 -
10-socket的实践到内核--UDP的socket数据的接收
我们在本章的第一节中的练习代码中曾经看到socket是通过write(sockfd, &ch, 1);read(sockfd, &ch, 1);来发送和接受数据的,熟悉文件系统的朋友可以知道这二个函数在系统调用中的过程,当然还有另外一对数据发送的界面函数send()和recv(),我们还是考虑大多数朋友的立场上简单的介绍一下,write和read是从当前转载 2012-12-11 17:44:46 · 877 阅读 · 0 评论 -
11-socket的实践到内核--UDP的socket数据的发送
http://blog.csdn.net/embeddedfly/article/details/6411765我们接着上一节数据的接收来自看UDP的数据是如何发送的,上一节中我们贴出有关发送的代码,在那里只是为了让大家有一个印象case SYS_SEND: err = sys_send(a0, (void __user *)a1, a[2], a转载 2012-12-11 17:45:24 · 538 阅读 · 0 评论 -
12-socket的实践到内核--TCP的socket数据的接收
http://blog.csdn.net/embeddedfly/article/details/6411781我们继续看TCP协议下的unix的数据接收和发送,我们知道以前说过的钩子函数中static const struct proto_ops unix_stream_ops = {。。。。。。 .recvmsg = unix_strea转载 2012-12-11 17:45:52 · 444 阅读 · 0 评论 -
13-socket的实践到内核--TCP的socket数据的发送
http://blog.csdn.net/embeddedfly/article/details/6411905我们继续分析跟踪socket的TCP协议的数据是如何发送的首先我们还是在内核中看一下钩子结构static const struct proto_ops unix_stream_ops = {。。。。。。 .sendmsg = unix_转载 2012-12-11 17:46:22 · 522 阅读 · 0 评论 -
14-socket的实践到内核--socket的关闭
我们在socket的第一节中看到了调用close(sockfd);来关闭socket.我们已经探讨过了从内核的task_struct到socket的钩子函数过程,如果你读到这里没有看到或者没有明白,请看前边章节中的read和write的分析内容。好了,我们还是直接从socket.c中的文件的钩子函数看起static const str转载 2012-12-11 17:47:06 · 1110 阅读 · 0 评论 -
Linux网络协议栈(一)——Socket入门(1)
http://www.cnblogs.com/hustcat/archive/2009/09/17/1568738.html1、TCP/IP参考模型为了实现各种网络的互连,国际标准化组织(ISO)制定了开放式系统互连(OSI)参考模型。尽管OSI的体系结构从理论上讲是比较完整的,但实际上,完全符合OSI各层协议的商用产品却很少进入市场。而使用TCP/IP 协议的产品却大量涌入市场,几乎转载 2012-12-12 11:35:19 · 418 阅读 · 0 评论 -
Linux网络协议栈(一)——Socket入门(2)
http://www.cnblogs.com/hustcat/archive/2009/09/17/1568765.html3、套接字的实现套接字最先是在UNIX的BSD版本实现的,所以也叫做BSD套接字,它隐藏了各个协议之间的差异,并向上提供统一的接口。Linux中实现套接字的基本结构:3.1、BSD套接字3.1.1、核心数据结构为了实现BSD套接字,内核提供一个重要的数转载 2012-12-12 22:03:50 · 433 阅读 · 0 评论 -
2-socket的实践到内核--socket使用IP地址通讯 .
前面一章我们看到在本机内创建一个socket,如果创建socket时指定为AF_UNIX时就为unix和linux内部的socket,而如果指定为AF_INET时则为unix和linux的网络socket,我们一定要注意这二者的区别,当然还有其他的种类,因为避免太学术上排列,我在这里列出来相信大家也记不住,上面二种是最重要的也是最常用的,因此列在这里,其他几种不太常用,okay,我们再看一下soc转载 2012-12-10 12:18:32 · 344 阅读 · 0 评论 -
1--socket的实践到内核--socket实践练习 .
http://blog.csdn.net/embeddedfly/article/details/6411699这节我们开始学习网络方面的实践并追踪进入内核,因为网络范围很广我们只讲socket方面的知识,由socket编程进入内核,我是无名小卒,写这些文章是为了引领朋友们如何渗透内核的工作原理,起到导航的作用,可能前面讲的不是非常的透彻,那是假定朋友们有一定操作系统知识并且具备C语言基础上进转载 2012-12-10 12:17:19 · 362 阅读 · 0 评论 -
linux中select()函数分析
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式转载 2012-11-25 22:33:54 · 295 阅读 · 0 评论 -
Linux Socket编程(不限Linux)
http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html转载 2012-11-26 12:13:17 · 266 阅读 · 0 评论 -
select 和 epoll
select 和 epoll最近有朋友在面试的时候被问了select 和epoll效率差的原因,和一般人一样,大部分都会回答select是轮询、epoll是触发式的,所以效率高。这个答案听上去很完美,大致也说出了二者的主要区别。 今天闲来无事,翻看了下内核代码,结合内核代码和大家分享下我的观点。一、连接数我本人也曾经在项目中用过select和epoll,对于select,感触最深的转载 2012-11-26 14:12:31 · 294 阅读 · 0 评论 -
dig源码分析
http://www.cnblogs.com/lxgeek/archive/2011/12/15/2289102.html\转载 2012-12-01 11:37:41 · 1541 阅读 · 0 评论 -
网络数据包收发流程(一):从驱动到协议栈 .
http://blog.csdn.net/jw212/article/details/6738457早就想整理网络数据包收发流程了,一直太懒没动笔。今天下决心写了一、硬件环境intel82546:PHY与MAC集成在一起的PCI网卡芯片,很强大bcm5461: PHY芯片,与之对应的MAC是TSECTSEC: Three Speed Ethernet转载 2012-12-06 12:22:30 · 615 阅读 · 0 评论 -
网络数据包收发流程(四):协议栈之packet_type .
进入函数netif_receive_skb()后,skb正式开始协议栈之旅。先上图,协议栈大致过程如下所示:跟OSI七层模型不同,linux根据包结构对网络进行分层。比如,arp头和ip头都是紧跟在以太网头后面的,所以在linux协议栈中arp和ip地位相同(如上图)但是在OSI七层模型中,arp属于链路层,ip属于网络层..... 这里就不死抠概念,我们就说arp,ip都转载 2012-12-06 12:23:56 · 991 阅读 · 0 评论 -
高性能IO设计的Reactor和Proactor模式 .
在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。 在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指转载 2012-12-06 12:37:40 · 308 阅读 · 0 评论 -
网络数据包收发流程(三):e1000网卡和DMA .
一、硬件布局每个网卡(MAC)都有自己的专用DMA Engine,如上图的 TSEC 和 e1000 网卡intel82546。上图中的红色线就是以太网数据流,DMA与DDR打交道需要其他模块的协助,如TSEC,PCI controller以太网数据在 TSECDDR PCI_ControllerDDR 之间的流动,CPU的core是不需要介入的只有在数据流动结束时(接收完、转载 2012-12-06 12:23:30 · 445 阅读 · 0 评论 -
网络数据包收发流程(二):不配置NAPI的情况 .
http://blog.csdn.net/jw212/article/details/6738474上一篇讲的是内核配置成NAPI的情况,那也是绝大多数内核使用的配置现在讲讲内核不配置成NAPI时的情况一、no NAPI 数据结构不配置NAPI的时候,网络设备不使用自己的napi_struct结构,所有网络设备驱动都使用同一个napi_struct,即cpu私有变量__转载 2012-12-06 12:22:59 · 428 阅读 · 0 评论 -
linux网络编程之—多线程模型 .
1.网络编程是一个程序员必须掌握的一项技能,尤其c/c++程序员必须掌握,而实际应用中,绝大部分网络程序都不可能是单连接,那么就意味着需要处理并发问题,目前来说主流的linux下的网络模型基本都基于epoll,select,在大规模并发情况下性能较高,而多进程,多线程模型相对较少,多进程模型实际使用确实较少,进程间通讯和数据共享都不太方便,而多线程模型在小连接数,尤其在内部通讯还是有可取之处,可以转载 2012-12-06 12:31:58 · 367 阅读 · 0 评论 -
linux网络编程异步IO模型之—select模型 .
公告:CSDN 搜索第二版正式上线! CSDN大会PPT合集下载,纯干货! 2000元大奖征异构开发博文 2012CSDN博客之星评选正式上线 【免费】解读海外市场营销奥秘 CSDN博客频道推出TAG功能 linux网络编程异步IO模型之—select模型2012-12-02 21:21 41人阅读 评论(0)收藏转载 2012-12-06 12:32:28 · 730 阅读 · 0 评论 -
几种经典的网络服务器架构模型的分析与比较 .
http://blog.csdn.net/lmh12506/article/details/7753978前言事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用;事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,转载 2012-12-06 20:52:21 · 367 阅读 · 0 评论 -
socket编程——TCP/UDP数据传输 .
http://blog.csdn.net/jw212/article/details/6722966socket()——生成socket句柄#include ; #include ; int socket(int domain, int type, int protocol); domain : "AF_INET"type : SOCK_STREAM(TCP转载 2012-12-06 20:52:57 · 578 阅读 · 0 评论 -
C++ - 网络编程模型 - Linux EPOLL .
http://blog.csdn.net/yuyin86/article/details/80063821.简介 Linux I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。Linux 2.6内核中有提高网络I/O性能的新方法,即epoll 。 epoll是什么?按照man手册的说法是为处理大批量句柄而作了改进的poll。要使用epol转载 2012-12-06 20:49:59 · 373 阅读 · 0 评论 -
Linux网络编程入门
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的转载 2012-11-25 22:28:40 · 381 阅读 · 0 评论 -
开源免费的C/C++网络库(c/c++ sockets library) .
(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html (2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开源、免费,支持跨平台。http://think-async.com/ (3)POCOPOC转载 2012-12-22 08:34:58 · 505 阅读 · 0 评论