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

原创 2004年07月09日 15:30:00

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

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

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

                          -- 水元素

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

第一部分:LinuxTCP/IP实现概述

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

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

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

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

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  LinuxTCP/IP网络层次结构与实现

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

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

图

待续......

TCP/IP协议栈 完整源代码 测试版

  • 2011年08月07日 20:25
  • 841KB
  • 下载

Linux下TCP/IP协议栈的简单脉络分析

最近在写网络编程方面的一些东西,然后遇到了关于传输上的小问题。由于之前有简单的看过一些TCP/IP详解的一些东西,所以索性就找了本《追踪LinuxTCP/IP代码运行》的书看了一上午,结果发现初次接触...
  • Shreck66
  • Shreck66
  • 2015年08月11日 22:13
  • 3861

Linux与BSD中TCP协议栈实现比较

作为两个最有名的开源操作系统,Linux和FreeBSD是网管们的首选。Linux以开放性和众多的驱动支持著称,而FreeBSD有着优良的UNIX传统,是公认的最稳定的操作系统。那么,在这两个操作系统...
  • fenggui
  • fenggui
  • 2015年10月13日 17:45
  • 1533

Linux TCP/IP协议栈之Socket的实现分析

数据包的接收 作者:kendo http://www.skynet.org.cn/viewthread.php?tid=14&extra=page%3D1 Kernel:2.6.12 ...
  • gangyanliang
  • gangyanliang
  • 2013年01月04日 14:45
  • 5084

Linux TCP/IP 协议栈源码分析

一.linux内核网络栈代码的准备知识   1. linux内核ipv4网络部分分层结构:   BSD socket层: 这一部分处理BSD socket相关操作,每个so...
  • gx19862005
  • gx19862005
  • 2014年07月01日 15:46
  • 631

Linux TCP/IP 协议栈源码分析 - 数据 发送/接收 流程图

Linux TCP/IP 协议栈源码分析 - 数据 发送/接收 流程图
  • ztguang
  • ztguang
  • 2016年09月27日 10:56
  • 1569

Linux TCP/IP 协议栈源码分析

原文:http://blog.csdn.net/aaa6695798/article/details/4341627 一.linux内核网络栈代码的准备知识   1. linux内核ipv4...
  • cjsycyl
  • cjsycyl
  • 2012年03月30日 14:42
  • 711

Linux TCP/IP 协议栈源码分析

http://www.cnblogs.com/better-zyy/archive/2012/03/16/2400811.html 一.linux内核网络栈代码的准备知识 1. l...
  • chenyijun
  • chenyijun
  • 2016年10月13日 13:29
  • 529

[转载]Linux TCP/IP 协议栈源码分析

一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以str...
  • wdsfup
  • wdsfup
  • 2016年05月31日 10:10
  • 357

Linux TCP/IP 协议栈源码分析

一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct ...
  • seven_1990180
  • seven_1990180
  • 2012年06月27日 15:52
  • 890
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux TCP/IP 协议栈源码分析(一)
举报原因:
原因补充:

(最多只允许输入30个字)