0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux网络栈总体架构

麦辣鸡腿堡 来源:技术简说 作者:技术简说 2023-07-24 10:59 次阅读

网络栈总体架构

总体结构

网络栈指的是为了进行网络数据包的收发,由内核实现的一套函数集合。网络栈安装预先设置的一套规则对用户数据进行封装从而达到网络上主机之间数据交换的目的。

最初按照这种分层设计的思想,网络栈被分为了4层,从上到下依次为应用层、传输层、网络层、链路层,而且在每个层次都定义了数据的封装方式,随着网络协议的发展,四层分层架构满足不了新的需求,OSI七层网络栈出现,在原先的应用层进行了更细致的划分,将应用层划为:应用层、表示层、会话层。

以OSI七层模式为依据,学习Linux1.2内核网络栈实现中的文件对应关系:

图片

应用层:

该层定义了一套用户调用接口函数,即socket套接字接口函数,如socket、bind、accept等,这套接口函数由Linux操作系统的glicbc库提供,网络栈实现不涉及这套函数。

表示层、会话层:

相应的功能实现对于BSD Socket或INET Socket层。

传输层:

如常见的TCP、UDP协议,对于传输层的实现集中在TCP协议和UDP协议上

该层涉及的文件主要有:tcp.c udp.c igmp.c snmp.h

网络层:

数据包路由功能实现在网络层,这一层也是IP协议所在的层次,RAW套接字也划分在这一层,用户必须自己创建IP首部和传输层协议首部。

该层涉及的文件主要有:ip.c route.c ip_fw.c raw.c packet.c

链路层:

链路层实现是作为网络栈与底层硬件驱动的一个接口层存在的。

该层涉及的文件主要有:dev.c p8022.c panap.c p8023.c eth.c arp.c

“驱动层”:

OSI七层模式没有这一层,将驱动层序所在层次定义为“驱动层”,该层与链路层进行交互,完成数据包的收发公工作。

该层涉及的文件定义在dricers子目录下的一些网络设备的驱动程序。

物理层:

网络栈实现不涉及物理层

Linux网络栈层次命名

网络栈分层如下:BSD socket层、INET层、传输层(L4)、网络层(L3)、链路层(L2)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209334
  • 网络
    +关注

    关注

    14

    文章

    7553

    浏览量

    88732
收藏 人收藏

    评论

    相关推荐

    结合pppoe协议分析Linux网络的实现方式

    这个标题起得比较纠结,之前熟知的PPPOE是作为PPP协议的底层载体,而实际上它也是一个完整的协议,不过它的实现比较简单,由它出发,可以很容易理清楚Linux网络的实现方式。 1.总述 Li
    的头像 发表于 10-26 15:21 2668次阅读
    结合pppoe协议分析<b class='flag-5'>Linux</b><b class='flag-5'>网络</b><b class='flag-5'>栈</b>的实现方式

    深度解析Linux网络路径及sk_buff struct 数据结构

    理解 Linux 网络(1):Linux 网络协议简单总结 本系列文章总结
    的头像 发表于 10-22 15:04 5605次阅读
    深度解析<b class='flag-5'>Linux</b><b class='flag-5'>网络</b>路径及sk_buff struct 数据结构

    Linux网络原理与实现

    本文尝试从技术研发与工程实践(而非纯理论学习)角度,在原理与实现、监控告警、 配置调优三方面介绍内核5.10 网络。由于内容非常多,因此分为了几篇系列文章。
    发表于 08-10 08:58 3742次阅读

    linux网络驱动

    目前正在学习linux下飞思卡尔imx6q_sabre的ARM A9开发板的网络驱动,学的云里雾里的,哪位高手帮忙指点一下,最好从代码的角度来说。上层用户发送数据通建立socket、经过协议、经过网卡发送到
    发表于 08-22 15:23

    UE侧协议架构

    UE侧协议架构
    发表于 09-18 15:25 1337次阅读

    LINUX网络协议实现分析-SKBUFF的实现

    了解网络协议的人都知道,网络协议是一个有层次的软件结构,层与层之间通过预定的接口传递网络报文。网络
    发表于 04-07 22:32 26次下载

    嵌入式LINUX内核网络(源代码)

    本文选择 LINUX-1.2.13 内核所包含的网络部分代码分析(注意网络部分代码与内核代码的演变是分离的,如LINUX1.2.8 网络代码
    发表于 05-12 10:39 57次下载
    嵌入式<b class='flag-5'>LINUX</b>内核<b class='flag-5'>网络</b><b class='flag-5'>栈</b>(源代码)

    Linux平台双协议主机网络管控系统设计与实现

    Linux平台双协议主机网络管控系统设计与实现_贾锐
    发表于 01-07 19:00 2次下载

    Linux网络技术中最核心的部分--TCP/IP协议

    今天给大家介绍Linux网络技术中最核心的部分--TCP/IP协议 。 我们先看一下抽象的网络协议模型 再按分层思想看
    的头像 发表于 06-29 15:14 2342次阅读

    是什么?有什么作用?

    大多数的处理器架构,都有实现硬件。有专门的指针寄存器,以及特定的硬件指令来完成 入/出 的操作。例如在 ARM
    的头像 发表于 06-17 11:19 1.3w次阅读

    【RT-Thread学习笔记】基于Linux的反汇编和追溯

    【经验分享】基于Linux命令行编程环境的追溯和反汇编技术实践分享
    的头像 发表于 07-30 13:44 1351次阅读
    【RT-Thread学习笔记】基于<b class='flag-5'>Linux</b>的反汇编和<b class='flag-5'>栈</b>追溯

    linux网络监控及调优:数据接收

    linux 网络的监控及调优上没有捷径可言,如果你想做有效的调优,就必须搞清楚各个系统之间是怎么交互的。
    的头像 发表于 03-25 16:44 1234次阅读

    linux中的进程,线程,内核的区别

    大多数的处理器架构,都有实现硬件。有专门的指针寄存器,以及特定的硬件指令来完成 入/出 的操作。例如在 ARM
    发表于 08-18 10:57 499次阅读
    <b class='flag-5'>linux</b>中的进程<b class='flag-5'>栈</b>,线程<b class='flag-5'>栈</b>,内核<b class='flag-5'>栈</b>的区别

    Linux网络技术的相关知识

    网络是一个很复杂的协议,今天网络这么发达,网络协议起到关键性作用。 这里就给大家详细描述一下:Linux
    的头像 发表于 08-24 10:33 663次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>网络</b>技术<b class='flag-5'>栈</b>的相关知识

    Linux网络协议的实现

    请求并与底层的网络硬件进行交互。本文将深入探讨 Linux 网络协议架构与实现,涵盖数据包处理流程、关键模块、协议
    的头像 发表于 09-10 09:51 302次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>网络</b>协议<b class='flag-5'>栈</b>的实现