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

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

        这篇文章写于三年前,当时手中拿着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 所示。

图

待续......

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
嵌入式Linux网络体系结构与TCP/IP协议栈的关系密切,是嵌入式设备网络通信功能的核心组成部分。 嵌入式Linux网络体系结构是指整个嵌入式设备上的网络通信架构,包括网络接口、网络协议栈网络驱动等。其中,TCP/IP协议栈网络协议的核心部分。TCP/IP协议栈是一组网络协议的集合,包括IP协议、TCP协议、UDP协议等。它是实现网络通信的基础,负责数据包的传输和路由。 在嵌入式Linux网络体系结构中,网络接口是设备与网络连接的接口,负责将数据包传输到网络中。网络驱动是设备与操作系统之间的桥梁,负责控制网络设备的硬件和软件。TCP/IP协议栈则是在操作系统内核中实现的软件模块,负责处理网络数据包的封装、解析、传输和路由。 嵌入式Linux网络体系结构与TCP/IP协议栈的紧密结合,使得嵌入式设备能够进行网络通信。通过网络接口和网络驱动,嵌入式设备可以与网络进行连接,并通过TCP/IP协议栈实现数据的传输和交换。TCP/IP协议栈提供了可靠的数据传输机制,保证了数据的完整性和准确性。同时,它还提供了灵活的路由算法,使得数据能够在复杂的网络中传输。 总之,嵌入式Linux网络体系结构与TCP/IP协议栈是嵌入式设备网络通信的核心组成部分。它们共同实现了设备与网络的连接和数据的传输,为嵌入式设备提供了强大的网络通信功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值