Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17550
  • 博文数量: 13
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-09 10:40
文章分类
文章存档

2014年(3)

2013年(4)

2012年(6)

我的朋友

发布时间:2012-12-09 11:01:05

今天我们说说“Pre-网络编程”。内容比较杂,但都是在做网络应用程序开发过程中经常要遇到的问题。 一、大端、小端和网络字节序 小端字节序:little-endian,将低字节存放在内存的起始地址; 大端字节序:big-endian,将高字节存放在内存的其实地址。       例如,数字index=0x11223344,在大小端字节序方式下其存储形式为:上图一目了然的可以看出大小端字节序的区别。 还有另外一个概念就是网络字节序。网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在......【阅读全文】

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

发布时间:2012-12-09 10:47:46

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

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

发布时间:2012-12-09 10:47:41

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

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

发布时间:2012-12-09 10:47:00

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

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

发布时间:2012-12-09 10:46:43

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

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

登录 注册