转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
Linux TCP/IP 协议栈源码分析(一)         ★★★★

Linux TCP/IP 协议栈源码分析(一)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:842 更新时间:2009/4/22 20:45:39

---------------------------------------------------------------------------------------------------------------------

        这篇文章写于三年前,当时手中拿着Stevens的三本巨著 TCP v1/v2/v3 的摸不着头脑-因为它们太厚了。我知道我不需要那么多,那么详细。于是有了自己分析源代码的想法......

        我不对文中的内容提供任何保证,但欢迎与我联系以便不断的修改它,最终给需要知道关于Linux TCP/IP实现的人提供短小精悍的文章内容。

                          -- 水元素

---------------------------------------------------------------------------------------------------------------------

第一部分:Linux的TCP/IP实现概述

Linux通过同时对多种通信协议的支持来提供通用的底层基础服务。它的第一个网络模型的版本是4.3 BSD,也称为Net/1,今天的Linux已经使用Net/4 (Linux 2.2),其中大多数代码已经完全和BSD的版本不同,但是它依然支持UINX平台之间程序的移植。

Linux网络套接字实现的模式是UNIX下的普遍标准。同时,Net/4的网络层是完全另起炉灶重写的。首先,新的网络层尽可能地实行并行处理, 因此其伸缩性比起以前的版本,不可同日而语。其次,它包括了许多的优化,以便绕过不少流行操作系统网络实现中的不合理处(例如Windows)。到目前为止,Linux 是唯一与IPv4和IPv6协议标准完全保持兼容的操作系统,而Linux2.4的IPv4伸缩性又大有提高。

Linux支持的六种不同通信协议族:

1) TCP/IP (使用TCP/IP的Internet 协议族),本文讨论的重点。

2) UNIX域协议 (一种进程间通信的协议)

3) X25协议

4) AX25协议 (业余无线X25)

5)IPX协议 (Novell IPX)

6) APPLETALK协议 (AppleTalk DDP)

1.1 内核源代码的组织

表1是本文要使用的Linux Net/4网络源代码的,其中大部分位于目录/usr/src/linux-2.2.x/net,列表如下,

插口层

BSD Socket

/net/socket.c??????????????
/net/protocols.c????????????

 

INET Socket

/ipv4/protocol.c???????????
/ipv4/af_inet.c
??????
/net/ipv4/core/sock.c?????????

协议层

TCP/UDP

/net/ipv4/udp.c
/net/ipv4/datagram.c
/net/ipv4/tcp_input.c
/net/ipv4//tcp_output.c
/net/ipv4/tcp.c
/net/ipv4/tcp_minisocks.c??
?
/net/ipv4/tcp_timer.c ?etc...

 

IP

/net/ipv4/ip_forward.c?
/net/ipv4/ip_fragment.c
/net/ipv4/ip_input.c???
/net/ipv4/ip_output.c

接口层

Ethernet

......

1.2  Linux中TCP/IP网络层次结构与实现

Linux通过一组相邻的软件层实现了TCP/IP模型,它由BSD Socket层、INET

Socket层、传输层、网络层,和链路层构成。应用程序使用系统调用向内核函数传递参数和数据从而进入内核空间,由内核中注册的内核函数对相应的数据结构进行处理。Linux的TCP/IP层次结构和实现方式如图 1 所示。

pic

 

待续......


[C语言系列]C# 和 Linux 时间戳转换  [Web开发]PHP flock文件锁介绍
[Web开发]flock() Linux下的文件锁  [电脑应用]Linux下的六个免费的虚拟主机管理系统介绍
[Web开发]VB实现客户机←→服务器(TCP/IP)编程监听代码  [电脑应用]Linux数据库大比拚
[操作系统]在Windows中玩转Linux操作系统  [办公软件]在RedHat Linux 9里安装gaim0.80
[办公软件]掌握 Linux 调试技术  [办公软件]理解 Linux 配置文件
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台