Chinaunix首页 | 论坛 | 博客
  • 博客访问: 285974
  • 博文数量: 38
  • 博客积分: 706
  • 博客等级: 上士
  • 技术积分: 390
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-05 09:09
文章分类

全部博文(38)

文章存档

2013年(23)

2012年(15)

我的朋友

发布时间:2013-01-05 23:40:07

Linux网络编程数据收发的API流程分析       只要把数据在协议栈中的流动线路和脉络弄清楚了,关于协议栈的实现部分,理解起来就轻松多了。在网络编程章节的数据接收过程中,我们主要介绍过read()、recv()、recvfrom()还有一个recvmsg()没介绍到,今天我们就来看一下这几个API函数到底有什么差别。 数据接收       在接收数据的过程,主要分两个阶段:BOTTOM-HALF和TOP-HALF。 BOTTOM-HALF:       当从网卡驱动收到......【阅读全文】

阅读(993) | 评论(0) | 转发(0)

发布时间:2013-01-05 23:40:01

Linux网络编程API函数初步剖析        今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。       1、socket(family,type,protocol)        当我们在开发网络应用程序时,使用该系统调用来创建一个套接字。该API所做的工作如下所示:       该系统调用主要完成两个任务:“创建套接字”和“为套接......【阅读全文】

阅读(921) | 评论(0) | 转发(0)

发布时间:2013-01-05 23:39:54

如何从链路层直接发送数据帧       本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据。因为上一篇里面提到的是从链路层“收发”数据,结果只“收”完,忘了“发”,实在抱歉,所以就有这篇续出来了。       上一节我们主要研究了如何从链路层直接接收数据帧,可以通过bind函数来将原始套接字绑定到本地一个接口上,然后该套接字就只接收从该接口收上来的对应的数据包。今天我们用原始套接字来手工实现链路层ARP报文的发送和接收,以便大家对原始套接字有更深刻的掌握和理解。   ......【阅读全文】

阅读(995) | 评论(0) | 转发(0)

发布时间:2013-01-05 23:39:48

可以接收链路层MAC帧的原始套接字        前面我们介绍过了通过原始套接字socket(AF_INET, SOCK_RAW, protocol)我们可以直接实现自行构造整个IP报文,然后对其收发。提醒一点,在用这种方式构造原始IP报文时,第三个参数protocol不能用IPPROTO_IP,这样会让系统疑惑,不知道该用什么协议来伺候你了。        今天我们介绍原始套接字的另一种用法:直接从链路层收发数据帧,听起来好像很神奇的样子。在Linux系统中要从链路层(MAC)直接收发数帧,比较普遍的......【阅读全文】

阅读(938) | 评论(0) | 转发(0)

发布时间:2013-01-05 23:38:48

基于原始套接字编程        在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证:       也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给我们的诸如源、目的IP,源、目的端口等等。        今天我们讨论一下原始套接字的程序开发,用......【阅读全文】

阅读(775) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册