Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1371632
  • 博文数量: 284
  • 博客积分: 3251
  • 博客等级: 中校
  • 技术积分: 3046
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-26 17:23
文章分类

全部博文(284)

文章存档

2019年(2)

2018年(5)

2015年(19)

2014年(13)

2013年(10)

2012年(235)

发布时间:2012-12-21 16:26:10

  UDP是一个简单的面向数据报的传输层协议,我们先站在UDP客户端的角度来看看如何发送一个UDP数据报,以及协议栈为发送一个UDP数据报做了哪些事情。    UDP数据报可以在未连接的socket上发送(使用sendto系统调用,指定目的地址),也可以在已连接的socket上发送(使用send系统调用,不用指定目的地址),下面我们分两种情况讨论。    下面是一个在未连接的socket上发送UDP数据的用户态程序示例(注:该程序的格式和风格相当不好,只是为临时测试使用。),该程序目前还只管发送,不处理接收,关于接收,我们后......【阅读全文】

阅读(1545) | 评论(0) | 转发(1)

发布时间:2012-12-21 16:25:07

    结构体struct sk_buff中共有三个联合体,分别是h, nh和mac,它们都是一些指针,指向协议栈各层协议的首部。从含有的首部类型来看,nh是h的子集,而mac是nh的子集。《Linux设备驱动程序》 第三版第522页这样介绍这三个联合体:h中包含有传输层的报文头,nh中包含有网络层的报文头,而mac中包含的是链路层的报文头。    光靠这样的一个解释可能过于抽象,让我们来看一个UDP数据报是怎么样穿过数千公里长的网线来到我们的网卡,通过网卡的驱动程序层层向上来到协议栈的上层的。   ......【阅读全文】

阅读(847) | 评论(0) | 转发(1)

发布时间:2012-12-21 16:24:16

   前面一篇文章分析了套接字缓冲区sk_buff的创建过程,但一般来讲,一个套接字缓冲区总是属于一个套接字,所以,除了调用sk_buff本身的 alloc_skb函数创建一个套接字缓冲区,套接字本身还要对sk_buff进行一些操作,以及设置自身的一些成员值。下面我们来分析这个过程。    如果检查到待发送数据报没有传输层协议头(不是传输层的tcp或udp数据报),套接字创建缓冲区的函数是sock_alloc_send_skb,它的函数原型是:    struct sk_buff *sock_alloc_se......【阅读全文】

阅读(1238) | 评论(0) | 转发(1)

发布时间:2012-12-21 16:23:04

套接字缓冲区用结构体struct sk_buff表示,它用于在网络子系统中的各层之间传递数据,处于一个核心地位,非常之重要。它包含了一组成员数据用于承载网络数据,同时,也定义了在这些数据上操作的一组函数。下面是其完整的定义:    struct sk_buff {        struct sk_buff      *next;        struct sk_buff&n......【阅读全文】

阅读(872) | 评论(0) | 转发(1)

发布时间:2012-12-21 16:19:54

 这篇文章写于三年前,当时手中拿着Stevens的三本巨著 TCP v1/v2/v3 的摸不着头脑-因为它们太厚了。我知道我不需要那么多,那么详细。于是有了自己分析源代码的想法......         我不对文中的内容提供任何保证,但欢迎与我联系以便不断的修改它,最终给需要知道关于Linux TCP/IP实现的人提供短小精悍的文章内容。 第一部分:Linux的TCP/IP实现概述 Linux通过同时对多种通信协议的支持来提供通用的底层基础服务。它的第一个网络模型的版本是4.3 BSD,也称为Net/1......【阅读全文】

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

登录 注册