协议栈

【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

。_饼干妹妹 提交于 2019-12-22 12:12:04
【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线 小蜜蜂科教 / 广东职业技术学院 欧浩源 一、引言 在 物联网技术应用 的知识体系中 ,Zigbee无线组网技术 是非常重要的一环,也是大家感觉比较难以掌握的一个部分。Zigbee无线组网技术之所以让你感有学习难度, 不是因为它真的复杂,仅仅是它看起来很复杂而已 ,让人望而止步。另一方面则是Zigbee技术在应用层面上将硬件和软件完成融为一个体系,要求开发人员既要有 扎实的硬件技术 ,又要有 清晰的软件思维 。 目前,尽管有不少关于Zigbee无线组网的技术书籍写得非常棒,但对于初学者入门来说可能还是有点难。由于工作需要和形势所迫,我自己摸索着学习Zigbee无线组网技术。其入门过程可谓一波三折,碰过不少障碍,走过不少弯路,吃过不少苦头。所以,在这里结合自己学习Zigbee技术的过程,和大家分享一下学习体会,探讨一下学习路线。大家互助互勉,共同进步。 二、关于Zigbee与Z-Stack 明明看的是关于Zigbee协议的技术教材,为什么里面的内容讲的却是Z-Stack协议栈的内容呢?相信有不少初学者都要这样的疑问。 Zigbee 是基于 IEEE 802.15.4 标准的低功耗局域网协议。 该协议的物理层(PHY)和介质访问层(MAC)由IEEE 802.15.4标准来定义;网络层(NWK)和应用层(APP

【网络编程】---C++实现原始套接字捕获数据包

被刻印的时光 ゝ 提交于 2019-12-19 02:40:04
【网络编程】—C++实现原始套接字捕获数据包 引言:原始套接字是允许访问底层传输协议的一种套接字类型,提供了普通套接字所不具备的功能,能够对网络数据包进行某种程度的控制操作。因此原始套接字通常用开发简单网络性能监视程序以及网络探测、网络攻击等工具。今天我们来探索一下,从实现原始套接字到捕获数据包的整个过程。 1.原始套接字与TCP套接字和UDP套接字的区别 Berkeley套接字将流式套接字和数据报套接字定义为标准套接字,用于在主机之间通过TCP和UDP来传输数据。为了保证Internet的使用效率,除了传输数据之外,操作系统的协议栈还处理了大量的非数据流量,如果程序员在创建应用时也需要对这些非数据流量进行控制的话,那么此时就需要另一种套接字,即原始套接字。这种套接字越过了TCP/IP协议栈的部分层次,为程序员提供了完全且直接的的数据包级别的Internet访问能力,如下图所示。 具有发送和接收ICMPv4、IGMPv4、ICMPv6等分组 具有发送和接收内核不处理其协议字段的IPv4数据包 可以控制IPv4首部 从图中我们可以清晰看出,对于普通流式套接字和数据包套接字的应用程序,他们只能控制数据包的数据部分,也就是除了传输层首部和网络层首部以外的,需要通过网络传输的数据部分。而传输层首部和网络层首部则由协议栈根据创建套接字时候指定的参数负责填充,显而易见的是,这两部分

[转]Linux虚拟网络设备之tun/tap

半城伤御伤魂 提交于 2019-12-15 00:24:03
转, 原文: https://segmentfault.com/a/1190000009249039 -------------------------------------------------------------------------------------------------------------- 在现在的云时代,到处都是虚拟机和容器,它们背后的网络管理都离不开虚拟网络设备,所以了解虚拟网络设备有利于我们更好的理解云时代的网络结构。从本篇开始,将介绍Linux下的虚拟网络设备。 虚拟设备和物理设备的区别 在 Linux网络数据包的接收过程 和 数据包的发送过程 这两篇文章中,介绍了数据包的收发流程,知道了Linux内核中有一个网络设备管理层,处于网络设备驱动和协议栈之间,负责衔接它们之间的数据交互。驱动不需要了解协议栈的细节,协议栈也不需要了解设备驱动的细节。 对于一个网络设备来说,就像一个管道(pipe)一样,有两端,从其中任意一端收到的数据将从另一端发送出去。 比如一个物理网卡eth0,它的两端分别是内核协议栈(通过内核网络设备管理模块间接的通信)和外面的物理网络,从物理网络收到的数据,会转发给内核协议栈,而应用程序从协议栈发过来的数据将会通过物理网络发送出去。 那么对于一个虚拟网络设备呢?首先它也归内核的网络设备管理子系统管理

TCP/IP协议栈 头部参数

与世无争的帅哥 提交于 2019-12-09 11:22:01
IP头部:20个字节 TCP头部:20字节 UDP头部:8字节 ICMP头部:4字节 TTL:经过一个路由器就减1,当TTL值为0时,路由器就丢弃这个包,然后发送ICMP包给源主机。 默认情况下, Linux 系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。 以太网EthernetII最大的数据帧是1518字节, 刨去以太网帧的帧头(DMAC 目的地址MAC48bit =6Bytes+ SMAC源MAC地址48bit =6Bytes+ Type域 2bytes)14Bytes和帧尾CRC校验部分4Bytes(有时候大家也把它叫做 FCS ),那么剩下承载上层协议的地方也就是Data域最大就只能有 1500Bytes. 这个值我们就把它称之为MTU。 以太网数据包长度:(64~1518) MTU: Maxitum Transmission Unit 最大传输单元 (46~1500) MSS: Maxitum Segment Size 最大分段大小 (MTU-IP header size-TCP header size) (1460=1500-20-20) MSS解释: MSS最大传输大小的缩写,是TCP协议里面的一个概念。MSS就是TCP数据包每次能够传输的最大数据分段

因特网协议栈中的层

♀尐吖头ヾ 提交于 2019-12-06 19:41:04
人们已经进行了一些讨论关于如何将 TCP/IP参考模型 映射到到 OSI模型 。由于 TCP/IP 和 OSI 模型组不能精确地匹配,还没有一个完全正确的答案。 另外, OSI模型 下层还不具备能够真正占据真正层的位置的能力;在传输层和网络层之间还需要另外一个层(网络互连层)。特定网络类型专用的一些协议应该运行在网络层上,但是却运行在基本的硬件帧交换上。类似协议的例子有 地址解析协议 和 生成树协议 (用来保持冗余 网桥 的空闲状态直到真正需要它们)。然而,它们是本地协议并且在网络互连功能下面运行。不可否认,将两个组(更不用说它们只是运行在如 ICMP 等不同的互连网络协议上的逻辑上的网络层的一部分)整个放在同一层会引起混淆,但是OSI模型还没有复杂到能够做更好的工作。 下面的图表试图显示不同的TCP/IP和其他的协议在最初 OSI模型 中的位置: 7 应用层 例如 HTTP 、 SMTP 、 SNMP 、 FTP 、 Telnet 、 SIP 、 SSH 、 NFS 、 RTSP 、 XMPP 、 Whois 、 ENRP 6 表示层 例如 XDR 、 ASN.1 、 SMB 、 AFP 、 NCP 5 会话层 例如 ASAP 、 TLS 、 SSH 、ISO 8327 / CCITT X.225、 RPC 、 NetBIOS 、 ASP 、 Winsock 、 BSD

TCP/IP协议栈概述及各层包头分析

邮差的信 提交于 2019-12-06 19:39:36
一、摘要   对之前几篇博文涉及到的网络通信协议进行分析,概述出TCP/IP的协议栈模型,最后根据实例对各层包头进行分析。 二、标准TCP/IP协议栈模型   标准TCP/IP协议是用于计算机通信的一组协议,通常被称为TCP/IP协议栈,以它为基础组建的互联网是目前国际上规模最大的计算机网络。正因为互联网的广泛应用,使得TCP/IP成为了事实上的网络标准。 1、OSI模型和TCP/IP协议模型   图1是OSI模型和TCP/IP协议模型的对比。 图1 OSI模型和TCP/IP协议模型 2、TCP/IP协议模型分层 (1)网络接口层   TCP/IP协议模型的基层,负责数据帧的发送和接收。对应OSI模型中的物理层和数据链路层,是TCP/IP的最底层,不过通常在描述TCP/IP模型时还是会划分具体为物理层(PHY)和数据链路层(MAC)。 (2)网络层   通过互联协议将数据包封装成互联网数据包,并运行必要的路由算法。这里有4种互联协议。   (a)网际协议IP:负责在主机和网络之间的路径寻址和数据包路由。   (b)地址解析协议ARP:获得同一物理网络中的主机硬件地址。   (c)网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。   (d)互联组管理协议IGMP:用来实现本地多路广播路由器报告。 (3)传输层   传输协议在主机之间提供通信会话

浅谈TCP/IP协议栈模型

最后都变了- 提交于 2019-12-06 19:36:53
TCP/IP协议栈参考模型 参考模型: 应用层、传输层、网络IP层、链路层 链路层 :给网络IP层提供访问接口,可以传输IP数据包 IP层 :将数据包进行分组并发往目的主机或者网络,对分组进行排序,主要提供路由、网际互联和拥塞控制,包含网际控制报文协议ICMP和地址识别协议ARP 传输层 :主要提供两种协议, 传输控制协议TCP 和 用户数据报协议UDP TCP协议是一个面向连接的,可靠的协议,它利用IP层的机制在不可靠的连接的基础上实现可靠的连接,通过发送窗口控制,超时重发,分包等方法将一台主机发出的字节流发往互联网上的其它主机 UDP协议是一个不可靠的,无连接的协议,主要适用于不怕数据丢失,不需要对报文进行排序、流量控制的场景 应用层 :基于TCP和UDP可实现很多的应用层协议,如基于TCP协议的文件传输协议FTP,Telnet协议,超文本链接HTTP协议,基于UDP协议有TFTP,网络管理协议SNMP,域名服务DNS,网络文件共享NFS和SAMBA等 链路层的主机到网络层协议 协议格式 目的地址(6字节) 源地址(6字节) 类型(2字节) 数据(46-1500字节) CRC(4字节) 0800 IP数据 IP数据包(46-1500字节) 0806 ARP请求 ARP请求应答(28字节)|PAD(18字节) 8035 ARP请求应答(28字节)|PAD(18字节) 说明

几种开源的TCP/IP协议栈对比

戏子无情 提交于 2019-12-06 19:36:40
几种开放源码的TCPIP协议栈概述 1、BSD TCP/IP协议栈 BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP 栈)是BSD栈派生的。这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。 2、uC/IP uC/IP是由Guy Lancaster编写的一套基于uC/OS且开放源码的TCP/IP协议栈,亦可移植到其它操作系统,是一套完全免费的、可供研究的TCP/IP协议栈,uC/IP大部分源码是从公开源码BSD发布站点和KA9Q(一个基于DOS单任务环境运行的TCP/IP协议栈)移植过来。uC/IP具有如下一些特点:带身份验证和报头压缩支持的PPP协议,优化的单一请求/回复交互过程,支持IP/TCP/UDP协议,可实现的网络功能较为强大,并可裁减。 UCIP协议栈被设计为一个带最小化用户接口及可应用串行链路网络模块。根据采用CPU、编译器和系统所需实现协议的多少,协议栈需要的代码容量空间在 30-60KB之间。http://ucip.sourceforge.net 3、LwIP LwIP是瑞士计算机科学院(Swedish Institute of Computer

TCP/IP协议栈的网络层的主要功能是通过( )来完成的。

自闭症网瘾萝莉.ら 提交于 2019-12-06 19:36:21
TCP/IP协议栈的网络层的主要功能是通过( )来完成的。 正确答案: A 你的答案: A (正确) IP协议 TCP协议 以太网协议 IGP协议 添加笔记 收藏 纠错 TCP/IP协议栈(分为4层,不同于OSI,他将OSI中的会话层、表示层规划到应用层) 应用层 FTP SMTP HTTP ... 传输层 TCP UDP 网络层IP ICMP IGMP(都是I开头的,表示internet) 网络接口层 ARP RARP 以太网 令牌环 FDDI ... 来源: CSDN 作者: chengonghao 链接: https://blog.csdn.net/chengonghao/article/details/51901692

TCP/IP协议栈与数据包封装

痞子三分冷 提交于 2019-12-06 19:35:58
TCP/IP协议栈与数据包封装 TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示(该图出自[TCPIP])。 图 36.1. TCP/IP协议栈 两台计算机通过TCP/IP协议通讯的过程如下所示(该图出自[TCPIP])。 图 36.2. TCP/IP通讯过程 传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编写应用程序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation) ,如下图所示(该图出自[TCPIP])。 图 36.3. TCP/IP数据包的封装 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame) 。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。 上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个 路由器 ,如下图所示