协议栈 订阅
协议栈(英语:Protocol stack),又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和上下两个其他协议模块通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。用户应用程序只是处理最上层的协议。(参见OSI模型) 展开全文
协议栈(英语:Protocol stack),又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和上下两个其他协议模块通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。用户应用程序只是处理最上层的协议。(参见OSI模型)
信息
反映了
一个网络中文件传输的过程
外文名
Protocol Stack
中文名
协议栈
解    释
网络中各层协议的总和
协议栈简介
协议栈(英语:Protocol stack),又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和上下两个其他协议模块通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。用户应用程序只是处理最上层的协议。(参见OSI模型)在实际中,协议栈通常分为三个主要部分:媒体,传输和应用。一个特定的操作系统或平台往往有两个定义良好的软件接口:一个在媒体层与传输层之间,另一个在传输层和应用程序之间。媒体到传输接口定义了传输协议的软件怎样使用特定的媒体和硬件(“驱动程序”)。例如,此接口定义的TCP/IP传输软件怎么与以太网硬件对话。这些接口的例子包括Windows和DOS环境下的ODI和NDIS。应用到传输接口定义了应用程序如何利用传输层。例如,此接口定义一个网页浏览器程序怎样和TCP/IP传输软件对话。这些接口的例子包括Unix世界中的伯克利套接字和微软的Winsock。 [1] 
收起全文
精华内容
下载资源
问答
  • 协议栈

    2018-11-30 21:35:14
    协议栈 协议栈是什么?协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议.使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,...

    协议栈

    协议栈是什么?协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议.使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,TELNET,DNS,EMAIL等),运输层(TCP,UDP),网络层(IP),链路层(WI-FI,以太网,令牌环,FDDI等)

    入协议栈的过程(请求的过程)

    出协议栈的过程(接受的过程)

     

     

     

     

     

    上面两张图摘抄自http://www.cnblogs.com/mengwang024/p/4425834.html  这篇博客,里面对整个网络传输有很详细的介绍。 

    展开全文
  • 文章目录目录前文列表用户态网络协议栈简述内核协议栈存在的问题总结参考文档 前文列表 《Linux 内核网络协议栈》 《DPDK 网络加速在 NFV 中的应用》 用户态网络协议栈简述 用户态网络协议栈的底层支撑技术称为「...

    目录

    内核协议栈存在的意义

    关于内核协议栈的功能与原理我们在《Linux 内核网络协议栈》一文中已有讨论,这里我们主要思考内核协议栈存在的意义。要回答这个问题,我希望从操作系统聊起。

    一个正在运行的程序会做一件非常简单的事情:执行指令。CPU 从内存中获取一条指令,对其进行解码、然后执行它应该做的事情,例如:相加算数、访问内存、检查条件、跳转到函数等等。

    实际上,有一类软件负责让这些程序的运行变得简单,运行程序间共享内存,让程序能够与设备交互,这类软件就是操作系统。现在被我们称之为 “操作系统” 的软件其实最早的称谓是 Supervisor,往后还被叫过一段时间的 Master Control Program(主控程序),但最终 Operating System 胜出了。它们负责确保系统即易于使用又能正确高效的运行,为此,操作系统实现了以下两点需求:

    1. 操作系统带来了硬件的独立性和容易使用的 API(系统调用),让上层应用程序的运行更加简单。
    2. 操作系统应用(CPU、内存)虚拟化技术添加了一个时间分享的层,让多个上层应用程序的运行更加简单。

    写到这里不仅感叹 Unix 操作系统与 C 语言的出现,以及贝尔实验室排除万难使用 C 语言重写了 Unix 的壮举。从此,上层应用程序与计算机硬件的世界被解耦,黑客文化与思潮得以诞生,正是这群软件世界的叛逆者捍卫了代码的自由,开源运动才得以启动。

    回到主题,从操作系统的启发,我们大概能够理解内核协议栈的意义,它是为了让种类多如繁星的网络协议能够在计算机上运行得更加简单。但世上本不存在所谓的 “万金油”,计算机的世界从来都是时间与空间的博弈。看似万能的内核协议栈,其实充满妥协 —— Linux 内核协议栈存在严重的 Scalable(可伸展性)问题。

    在这里插入图片描述

    NOTE

    • BPS(Bit Per Second):比特每秒,表示每秒钟传输多少位信息,即带宽。例如:常说的 1M 带宽的意思是 1Mbps(兆比特每秒)。
    • CPS(Connect Per Second):TCP 每秒新建连接数。
    • PPS(Packet Per Second):包转发率,即能够同时转发的数据包的数量,表示转发数据包能力的大小。

    从上图可以看见,内核协议栈的 CPS、PPS 以及 CPU 数量的关系远没有达到线性提升,甚至远没有用户态协议栈来的优秀。据经验,在C1(8 Core)上运行应用程序每 1W 包处理需要消耗 1% 软中断 CPU,这意味着单机的上限是 100W PPS。假设,要跑满 10GE 网卡,每个包 64 字节,就需要 2000W PPS(注:实际上以太网万兆网卡速度上限是 1488W PPS,因为最小数据帧的大小为 84B),100G 就是 2亿 PPS,即每个包的处理耗时不能超过 50 纳秒。而一次 Cache Miss,不管 Miss 的是 TLB、数据 Cache 还是指令 Cache,回内存读取都需要大约为 65 纳秒,而且在 NUMA 架构体系下的跨 Node 通讯大约还需要额外多加 40 纳秒。

    所以,内核协议栈一秒钟能处理的数据包是有限的。当达到上限的时候,所有的 CPU 都开始忙于接收数据包。在这种情形下,数据包要么被丢弃,要么会导致应用 CPU 匮乏( starve of CPU)。诚然,这并非内核协议栈所愿,但现实如此,受限于操作系统和硬件设备的实现细节,内核协议栈选择了向空间(满足大部分常规使用场景)“妥协”。

    对此,笔者曾在《DPDK 网络加速在 NFV 中的应用》一文中详细谈到 Linux 内核协议栈存在的问题,这里不再赘述,简单总结为几点:

    • 上下文切换开销大
    • 内存拷贝昂贵
    • Cache Miss 高
    • 中断处理频繁
    • 系统调用开销

    再回过头来看,我们可以明显的感受到网速一直在提升,网络技术的发展从 1GE/10GE/25GE/40GE/100GE 演变,这也为计算机网络 I/O 能力提出了挑战。如何跟上网速的发展?这是一个宽泛的命题,我们只看其中的一个方法 —— 用户态网络协议栈。

    用户态网络协议栈简述

    用户态网络协议栈,即在 Linux 用户态上实现的网络协议栈处理程序,底层支撑技术被称为内核旁路技术,又可细分为完全内核旁路及部分内核旁路。其思路大抵是绕过内核,直接将网络硬件设备交给运行在用户态的应用程序使用,常见的内核旁路技术实现有 PF_RING、Snabbswitch、Netmap 以及 DPDK。

    有了内核旁路技术,开发者得以编写自己的网络协议栈,让协议栈功能变得更加灵活,专注于某些高级特性,并且针对性能进行优化。可见,用户态网络协议栈最大的特点就是 “自定义”,针对特定的业务需求来实现数据流量转发控制以及性能提升。当然了,这也需要付出代价 —— 每一张网卡只能用于一个进程,此时的网卡不再具备 “常规意义上” 的网卡功能。例如:Linux 的 netstat、tcpdump 等工具可能会停止工作。

    对于部分内核旁路技术,内核仍然保留对网卡的拥有权,并且能让用户态应用程序只在一个单独的接收队列(Rx Queue)上执行旁路,典型的部分内核旁路技术实现有 Linux 社区开源的 Netmap,官方数据是 10G 网卡 1400W PPS,已经比较接近 1488W 的极限了,但是 Netmap 没又得到广泛使用。其原因有几个:

    • Netmap 需要网卡驱动的支持,即受制于网卡厂商。
    • Netmap 仍然依赖中断通知机制,没完全解决瓶颈。
    • Netmap 更像是几个系统调用,实现用户态直接收发包,功能太过原始,没形成依赖的网络开发框架,社区不完善。

    但鉴于目前还没有稳定的开源部分内核旁路技术方案,我们希望 Netmap 能抢占这个商机。毕竟现在常见的 DPDK 与 Intel 的关系实在过于紧密。

    用户态网络协议栈的应用场景

    • 软件定义的交换机或者路由器,例如 OvS、vRouter。该场景中希望将网卡交由应用程序来管理,以及处理原始的数据包并且完全绕开内核。
    • 专用的负载均衡器。类似的,如果该机器只用来做数据包的随机处理(Packet Shuffling),那绕过内核就是合理的。
    • 对于选定的高吞吐/低延迟的应用进行部分旁路。例如:DDoS 缓解系统中。
    • 在高频交易(High Frequency Trading)场景中使用,因为用户态协议可以很好的降低延迟。

    用户态网络协议栈面临的挑战

    • Linux 内核协议栈有很多重要的特性和优秀的调试能力。需要花费长期的时间才可能挑战这个丰富的生态系统。

    用户态协议栈如何解决这个问题?

    解决问题,首先要提出问题。这里的问题是:如何提高收包吞吐?

    以 DPDK 为例,笔者《DPDK 网络加速在 NFV 中的应用》一文中也有过阐述,这里不再赘述。

    netmap 高性能网络 I/O 框架

    Netmap 基于共享内存的思想,是一个高性能收发原始数据包的框架,由 Luigi Rizzo 等人开发完成,其包含了内核模块以及用户态库函数。其目标是,不修改现有操作系统软件以及不需要特殊硬件支持,实现用户态和网卡之间数据包的高性能传递。

    在这里插入图片描述

    在 Netmap 框架下,内核拥有数据包池,发送环\接收环上的数据包不需要动态申请,有数据到达网卡时,当有数据到达后,直接从数据包池中取出一个数据包,然后将数据放入此数据包中,再将数据包的描述符放入接收环中。内核中的数据包池,通过 mmap 技术映射到用户空间。用户态程序最终通过 netmap_if 获取接收发送环 netmap_ring,进行数据包的获取发送。

    参考文档

    https://www.cnblogs.com/huangfuyuan/p/9238437.html
    https://cloud.tencent.com/developer/article/1198333
    https://blog.csdn.net/dog250/article/details/80532754

    展开全文
  • 什么是协议栈

    万次阅读 2018-12-19 14:20:43
    协议栈是什么 1.协议栈是什么--简介  协议栈,英语名称为Protocol stack,又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。...

    协议栈是什么

    1.协议栈是什么--简介

      协议栈,英语名称为Protocol stack,又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和其他两个通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。

    2.协议栈是什么--分类

      协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程,由上层协议到底层协议,再由底层协议到上层协议。协议栈主要分为以下几种:

      OSI协议栈:OSI协议栈是由国际标准化组织为提倡世界范围的互操作性而定义的。它通常被用于其它协议栈进行比较的标准。

      TCP/IP协议组:传输控制协议/因特网协议(TCP/IP)是最早的网络协议栈之一。其中IP部分提供了一种对互联网络连接的最好定义,并且被许多厂商用于在局域或广域互联产品。

      ZigBee协议栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4的PHY和MAC层,以及ZigBee堆栈层:网络层、应用层和安全服务提供层。

    3.协议栈是什么--应用

      协议是个标准,是约定;协议栈是协议的实现,可以理解为代码、函数库、供上层应用调用。商业化的协议栈就是给你写好了底层的代码,符合协议标准,提供给你一个功能模块给你调用。你需要关心的就是你的应用逻辑,数据从哪里到哪里,怎么存储,处理还有系统里的设备之间的通信顺序什么的。所以当你做具体应用时,不需要关心协议栈是怎么写的,里面的每条代码是什么意思。

    展开全文
  • 5G NR协议栈----无线协议栈

    千次阅读 2018-09-04 15:03:46
    NR无线协议栈分为两个平面:用户面和控制面。  用户面(User Plane, UP)协议栈即用户数据传输采用的协议簇;  控制面(Control Plane, CP)协议栈即系统的控制信令传输采用的协议簇。 用户面  NR用户平面相比...

    NR无线协议栈分为两个平面:用户面和控制面。
      用户面(User Plane, UP)协议栈即用户数据传输采用的协议簇;
      控制面(Control Plane, CP)协议栈即系统的控制信令传输采用的协议簇。

    • 用户面
        NR用户平面相比LTE协议栈多了一层SDAP层,用户面协议从上到下依次是:
        l SDAP层:Service Data Adaptation Protocol
        l PDCP层:Packet Data Convergence Protocol
        l RLC层:Radio Link Control
        l MAC层:Medium Access Control
        l PHY层:Physical
        这里写图片描述
    • 控制面
        NR控制面协议几乎与LTE协议栈一模一样,从上到下依次为:
        l NAS层:Non-Access Stratum
        l RRC层:Radio Resource Control
        l PDCP层:Packet Data Convergence Protocol
        l RLC层:Radio Link Con trol
        l MAC层:Medium Access Control
        l PHY层:Physical
      这里写图片描述
        UE所有的协议栈都位于UE内;而在网络侧,NAS层不位于基站gNB上,而是在核心网的AMF (Access and Mobility Management Function)实体上。还有一点需要强调的是,控制面协议栈不包含SDAP层。
    展开全文
  • 蓝牙协议栈

    2020-05-14 20:30:00
    BLE协议栈为什么要分层?怎么理解BLE“连接”?如果BLE协议只有ATT层没有GATT层会发生什么? 协议栈框架 一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的...
  • ZigBee协议栈(一)--协议栈介绍

    千次阅读 2017-09-24 13:26:04
    1、Zigbee协议栈简介  协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个...
  • 协议栈可能是指很多个协议叠在一起,像栈一样,应该是一组协议,就叫协议栈。就像因特网它不是单个协议,而是很多个协议组成的,像mavlink就没有协议栈这么一说,它就是单个协议。 果然看下百度百科,协议栈又称...
  • 协议、协议栈

    2018-08-19 11:42:21
    协议定义的是一系列的通信标准, 通信双方需要共同按照这一标准进行正常的数据收发;...协议栈是协议的具体实现形式, 通俗的理解就是用代码实现的函数库, 以便于开发人员调用。 协议栈是通常是一个层级结构。...
  • GPRS模块协议栈和终端协议栈的区分

    千次阅读 2018-03-08 14:13:26
    1. 模块(外部)协议栈即采用AT指令收、发数据,由GPRS模块组TCP/IP协议帧与服务器通信,这里的AT指令,数据都是通过一个串口可以实现;2. 终端(内部)协议栈终端自身采用pppd内置TCP/IP协议与GPRS模块和服务器通信...
  • 协议跟协议栈分别

    2020-05-28 16:11:46
    首先要区分协议跟协议栈。◇协议是一种规定。是一系列的通信标准,通信双方按照这一标准进行数据收发。◇协议栈是一系列代码,是协议的具体实现形式,通俗的理解就是用代码实现的函数库,以便开发人员调用。而z_...
  • 协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议,进而实现无线数据收发。 如图1所示:Zigbee协议分为两部分,IEEE 802.15.4定义了PHY(物理层)和...
  • 1.协议栈 (1)协议栈定义 协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程: 由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议 栈,由上到下的协议分别是:应用...
  • linux网络报文接收发送浅析 作者: 七伤 对于linux内核来说,网络报文由... 网络报文的发送与之相反,进程通过系统调用将数据送入网络协议栈,或者由网络协议栈自己发起报文的发送,然后协议栈通过调用网络接口函数
  • 主要介绍下蓝牙协议栈开发板跑传统蓝牙串口协议SPP AT指令以及上位机操作步骤,以及原理 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些...
  • 蓝牙协议栈详解

    2018-05-07 16:13:40
    蓝牙协议栈的详细文档,硬件工程师和嵌入式软件工程师必读的文档
  • ZigBee协议栈

    千次阅读 2019-05-10 14:52:43
    协议栈:是协议的具体实现形式,可以说是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议,进而实现无线数据收发。 ZigBee 的协议分为两部分, IEEE 802.15.4 定义了 PHY(物理层)和 MAC(介质...
  • doc目录就不介绍了 ... 1、ZStack协议栈构架 Zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户...协议栈体系分层架构与协议栈代码文件夹对应表如下: 二这些目录在 Components中,...
  • 开源蓝牙协议栈

    千次阅读 2020-10-29 09:43:29
    开源蓝牙协议栈 想学习蓝牙协议栈的同学,可以了解下以下的一些开源项目。 1):bluedroid,Android系统底层蓝牙协议栈。 2):bluez,linux系统官方蓝牙协议栈,http://www.bluez.org/。 3):Zephyr物联网实时...
  • 手把手教你蓝牙协议栈入门

    千人学习 2020-07-16 09:03:50
    本课程定位是:引领想学习蓝牙协议栈的学生或者从事蓝牙,但是对蓝牙没有一个系统概念的工程师快速入门 课程是多年从事蓝牙经验总结出来的,希望能让你看完有一种醍醐灌顶的感觉。 不要在摸着石头过河了·学习完这些...
  • 4G EPS 的网络协议栈

    千次阅读 多人点赞 2019-11-24 00:43:28
    文章目录目录前文列表LTE/EPC 协议栈概览LTE 层 1LTE 层 2MACRLCPDCP参考文档 前文列表 《LTE/EPC 第四代移动通信系统》 LTE/EPC 协议栈概览 LTE/EPC 协议栈主要分为两个面: 用户面协议栈:负责用户数据传输。...
  • CAN CANopen 协议栈

    2014-02-13 20:40:09
    CAN CANopen 协议栈 - CAN Festival. 较为完整的实现了CANopen协议栈
  • 主要介绍下蓝牙协议栈开发板跑传统蓝牙搜索AT指令以及上位机操作步骤,以及原理 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,...
  • 浅析BLE协议栈

    2019-12-02 11:23:19
    学习使用蓝牙芯片进行项目开发,就得先对协议栈的框架结构进行分析,需要对BLE协议栈的框架结构有清晰的理解,因此我尝试简单分析一下BLE协议栈协议栈框架 首先,协议栈的意思就是对协议的代码实现,协议栈的...
  • 主要介绍下用Linux ubuntu虚拟机外接我们的蓝牙扩展版跑蓝牙协议栈的初始化以及搜索演示 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些...
  • wifi协议栈实现细节

    2019-10-31 17:38:28
    之前开发wifi协议栈,记录下来其中的细节,对sta,ap模式, WPA均有介绍

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,928
精华内容 10,371
关键字:

协议栈