TCP/IP协议栈
文章平均质量分 97
流云IoT
这个作者很懒,什么都没留下…
展开
-
Web技术(七):如何使用并实现MQTT 消息订阅-发布模型?
物联网时代,大量的嵌入式设备需要接入网络,并完成复杂的消息传递过程。基于请求响应的单对单同步通信协议 -- HTTP 已经难以满足大规模物联网设备的通信需求,因此需要为物联网通信设计一种新的消息传递机制,MQTT 实现的订阅-发布消息模型就可以满足物联网通信需求。什么是订阅-发布消息模型呢?这种消息传递模型有哪些应用呢?订阅-发布消息模型除了用于复杂网络节点间的通信,是否可用于进程或服务间通信呢?MQTT 是如何实现消息订阅-发布机制的呢?MQTT 又是如何保证网络通信安全的呢?原创 2021-05-12 19:09:19 · 8980 阅读 · 3 评论 -
Web技术(六):QUIC 是如何解决TCP 性能瓶颈的?
一、QUIC 如何解决TCP的队头阻塞问题?1.1 TCP 为何会有队头阻塞问题1.2 QUIC 如何解决队头阻塞问题1.3 QUIC 没有队头阻塞的多路复用二、QUIC 如何优化TCP 的连接管理机制?2.1 TCP连接的本质是什么2.2 QUIC 如何减少TCP 建立连接的开销2.3 QUIC 如何实现连接的无感迁移三、QUIC 如何改进TCP 的拥塞控制机制?3.1 TCP 拥塞控制机制的瓶颈在哪?3.2 QUIC 如何降低重传概率3.3 QUIC 如何改进拥塞控制机制原创 2020-06-10 01:01:41 · 5074 阅读 · 1 评论 -
Web技术(五):HTTP/2 是如何解决HTTP/1.1 性能瓶颈的?
一、HTTP/2 概览1. HTTP/1.1 存在的队头阻塞问题,降低了TCP连接利用率;HTTP/2 通过多数据流并发复用TCP连接部分解决了该问题;2. HTTP/1.1 重复传输臃肿的首部字段,降低了网络资源利用率;HTTP/2 通过首部压缩HPACK,大幅减少了传输开销;3. HTTP/1.1 报文各字段长度不固定,只能串行解析;HTTP/2 整个报文都采用二进制编码,且每个字段长度固定,可以并行处理;4. HTTP/1.1 客户端不能接收除响应之外的报文;HTTP/2 支持服务端主动推送。原创 2020-06-03 00:47:49 · 3524 阅读 · 0 评论 -
Web技术(四):TLS 握手过程与性能优化(TLS 1.2与TLS 1.3对比)
二、TLS 握手协议TLS 协议是由TLS 记录协议和TLS 握手协议这两层协议叠加而成的,位于底层的TLS 记录协议负责进行信息传输和认证加密,位于上层的TLS 握手协议则负责除加密以外的其它各种操作,比如密钥协商交换、身份认证等。TLS 1.2 首次完整握手过程需要2-RTT,会话恢复简短握手过程需要1-RTT,TLS 1.3 在两种情况下均能比前者减少1-RTT。三、TLS 性能优化TLS 可以通过选择更安全高效的加解密算法、使用硬件加速模块、更新的协议、CDN技术等来提高效率。原创 2020-05-22 00:24:40 · 7366 阅读 · 0 评论 -
Web技术(三):TLS 1.2/1.3 加密原理(AES-GCM + ECDHE-ECDSA/RSA)
一、TLS 加密原理 TLS (Transport Layer Security)通过对称密钥加密法来保证通信的机密性,通过消息认证码MAC来保证通信的完整性和真实性,对称加密与MAC共同构成了认证加密方案同时保证通信的机密性、完整性和真实性。认证加密的共享密钥交换是个难题,Diffie和Hellman两人发明了一套密钥协商方案(Diffie–Hellman key exchange)解决了该问题,为确认通信对端的真实性又产生了数字签名算法,为解决数字签名中无法确认公钥真实性的问题,又提出了证书的概念。原创 2020-05-14 19:54:47 · 22820 阅读 · 4 评论 -
Web技术(二):图解HTTP + HTTPS + HSTS
一、HTTP简介目前使用最广泛的仍是HTTP/1.1,截至2020年4月,W3Techs统计的前1000万网站中支持HTTP/2的大概占43.6%,支持QUIC的仅占4.2%。要了解HTTP/2离不开HTTP/1.1,因此本文先介绍主流的HTTP/1.1版本。HTTP属于应用层协议,底层依赖于TCP/IP协议完成数据报文的传输。如果对HTTP报文有加密传输的需求,在HTTP协议与TCP协议之间还可以增加SSL/TLS协议层,这就构成了HTTPS协议。二、HTTP报文2.1 HTTP Request原创 2020-05-10 19:52:40 · 6212 阅读 · 0 评论 -
Web技术(一):互联网的设计与演化(URL + HTML + HTTP)
一、Web技术简史1990年底,Tim Berners-Lee 领导的小组已经构建了Web技术的五大要素:HTML、HTTP、URL、Web浏览器、Web服务器。二、Web三大构建技术2.1 URL / URILinux上一切皆文件,Web上一切皆资源,URL可以唯一标识并定位任一MIME资源。2.2 HTML / XMLHTML语言关心的是信息的表现形式,而XML语言关心的是信息本身的格式和数据内容。2.3 HTTP / HTTPSHTTP基于底层的TCP/IP协议完成html页面的传输。原创 2020-04-27 19:39:30 · 5893 阅读 · 5 评论 -
IOT-OS之RT-Thread(十六)--- WLAN管理框架 + AP6181(BCM43362) WiFi模块
一、WLAN管理框架简介随着物联网快速发展,越来越多的嵌入式设备上搭载了 WIFI 无线网络设备,为了能够管理 WIFI 网络设备,引入了 WLAN 设备管理框架:对下连接具体的 WIFI 驱动,控制 WIFI 的连接、断开、扫描等操作;对上承载不同的应用,为应用提供 WIFI 控制、事件、数据导流等操作。二、WLAN Device实现与AP6181 WLAN驱动移植三、WLAN Protocol实现与LwIP协议栈移植四、WLAN Config 管理与自动连接六、WIFI与Socket网络开发原创 2020-04-10 20:45:28 · 17834 阅读 · 5 评论 -
IOT-OS之RT-Thread(十四)--- AT命令集 + ESP8266 WiFi模块
一、AT命令集简介AT 命令(Attention Commands)作为主芯片和通讯模块的协议接口,广泛应用于嵌入式开发领域,比如GPRS模块、3G 模块、WiFi/蓝牙/GPS模块等,这些网络扩展模块的硬件接口一般为串口,这样主控设备可以通过简单的命令和硬件设计实现多种网络服务功能。 为了方便用户使用 AT 命令,简单的适配不同的 AT 模块, RT-Thread 提供了 AT 组件用于 AT 设备的连接和数据通讯。二、ESP8266 WiFi模块简介三、AT组件实现原理与ESP8266模块移植原创 2020-03-24 23:23:24 · 8283 阅读 · 2 评论 -
IOT-OS之RT-Thread(十三)--- 网络分层结构 + netdev/SAL原理
一、网络分层结构我们单独介绍网络协议栈时,经常使用TCP/IP分层结构,方便了解每一层的作用及实现原理。但当我们在操作系统中使用网络协议栈(比如LwIP协议栈)时,常把其看作一个整体,只关心协议栈对下层硬件与上层应用的接口,并不关心协议栈内部具体的实现过程。二、RT-Thread网络分层结构2.1 ENC28J60设备驱动层2.2 设备无关接口层netdev2.3 网络协议层LwIP2.4 协议无关接口层SAL2.5 系统调用接口层Socket API三、HTTP Server示例程序原创 2020-03-18 21:33:36 · 6181 阅读 · 0 评论 -
TCP/IP协议栈之LwIP(十一)--- LwIP协议栈移植
一、移植环境准备前面主要是基于QEMU虚拟机环境进行LwIP协议栈开发调试的,如果手头没有开发板可以先在个人电脑上运行QEMU虚拟机以便学习LwIP协议栈的实现原理或者开发调试过程。在实际产品中,就需要在真实的开发板上移植LwIP协议栈,并在此基础上进行开发调试了。1.1 IoT-OS准备现在物联网设备越来越需要操作系统支持,所以本文在有操作系统的基础上移植LwIP协议栈,选择的操作系统环境...原创 2019-11-30 14:08:32 · 4879 阅读 · 0 评论 -
TCP/IP协议栈之QEMU(零)--- LwIP开发调试环境搭建
一、QEMU环境搭建嵌入式软件开发离不开开发板,在没有物理开发板的情况下,可以使用 QEMU 等类似的虚拟机来模拟开发板。QEMU 是一个支持跨平台虚拟化的虚拟机,它可以虚拟很多开发板。为了方便大家在没有开发板的情况下体验 RT-Thread,RT-Thread 提供了 QEMU 模拟的 ARM vexpress A9 开发板的板级支持包 (BSP), 我们可以在此基础上学习LwIP协议栈的开发...原创 2019-11-22 01:01:21 · 3156 阅读 · 0 评论 -
TCP/IP协议栈之LwIP(二)---网络接口管理
一、网络接口管理前面提到TCP/IP可分为四层,最底层是网络接口层,实际可细分为物理层和逻辑链路层,逻辑链路层又可细分为介质访问控制子层(即MAC层)与逻辑链路控制子层(即LLC层),大致关系如下:原创 2019-07-14 12:48:59 · 3824 阅读 · 0 评论 -
TCP/IP协议栈之LwIP(三)---网际寻址与路由(IPv4 + ARP + IPv6)
一、网际寻址原理当网络设备地址总数并不是很多的情况下,有了唯一地址(比如MAC地址)就可以定位相互通信的主体。然而,当地址总数越来越多时,如何高效地从中找出通信的目标地址将成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。MAC地址虽然具有唯一性,但没有层次性,也即当网络设备增加到一定程度,需要将网络分成多个数据链路时,MAC地址无法跨链路寻址,是真正负责最终通信的地址。要实现跨局域网的网际寻址,就要靠具有层次性的网络IP地址实现了。原创 2019-07-18 19:53:02 · 5433 阅读 · 1 评论 -
TCP/IP协议栈之LwIP(七)---内核定时事件管理
一、协议栈定时结构管理网络协议要想实现高效的通信,离不开对定时事件的管理,比如ARP协议中的缓存表项定时、IP协议中的分片数据重组定时、TCP协议中的快定时与慢定时,它们都是协议栈功能实现的基本保障。LwIP设计时保证了与操作系统或底层硬件间的独立性,它自身并不维护硬件定时器,更不会对硬件定时器进行管理,那LwIP怎样实现上述定时机制呢?1.1 定时结构描述LwIP中的定时完全是基于软件方式...原创 2019-08-04 13:44:04 · 3836 阅读 · 3 评论 -
TCP/IP协议栈之LwIP(四)---网络诊断与状态查询(ICMPv4 + ICMPv6)
一、ICMP协议简介架构IP网络时需要特别注意两点:确认网络是否正常工作;遇到异常时进行问题诊断。例如,一个刚刚搭建好的网络,需要验证该网络的设置是否正确,为了确保网络能够按照预期正常工作,一旦遇到什么问题需要立即制止问题的蔓延。IP协议虽然完成了数据报在各个主机之间的递交,但它只提供了一种无连接不可靠的数据报交付服务,协议本身并不提供任何错误检验与恢复机制,这就需要另一种协议ICMP(Inte...原创 2019-07-22 00:09:42 · 6656 阅读 · 0 评论 -
TCP/IP协议栈之LwIP(六)---网络传输管理之TCP协议
一、TCP协议简介在传输层协议中,UDP是一种没有复杂控制,提供面向无连接通信服务的一种协议,它将部分控制转移给应用程序去处理,自己却只提供作为传输层协议的最基本功能。与UDP不同,TCP则是对传输、发送、通信等进行控制的协议。TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)的区别相当大,它充分实现了数据传输时各种控制...原创 2019-07-31 08:58:27 · 3486 阅读 · 1 评论 -
TCP/IP协议栈之LwIP(八)---Raw/Callbck API编程
一、UDP RAW编程控制块操作函数构成了UDP编程的核心,用户程序使用UDP传输数据的关键在于使用内核提供控制块操作函数注册、管理控制块,同时最重要的是编写用户自定义报文处理函数。使用UDP编程,基本就是调用控制块操作函数对UDP控制块进行操作,UDP相关的函数比较简单,它没有流量控制机制、没有确认机制,它完成的简单工作就是根据接收到的报文查找UDP控制块,然后调用注册的用户函数处理报文数据...原创 2019-07-31 00:50:44 · 5012 阅读 · 1 评论 -
TCP/IP协议栈之LwIP(五)---网络传输管理之UDP协议
一、传输层简介TCP/IP协议栈为了区分一台计算机上运行的多个程序,引入了端口号的概念,由于端口号是用来识别同一台计算机中进行通信的不同应用程序,它也被称为程序地址。再回想下TCP/IP协议栈的分层模型,数据链路层有MAC地址用来识别同一链路中不同的计算机,网络层有IP地址用来识别网络中互连的主机或路由器,这里引入的程序地址(即端口号Port)是在传输层用来识别本机中正在进行通信的应用程序,并准确的进行数据传输。例如提供www服务的HTTP程序端口号为80,提供文件传输服务的FTP程序端口号为21原创 2019-07-27 00:13:41 · 2481 阅读 · 0 评论 -
TCP/IP协议栈之LwIP(九)---Sequetia API编程
一、Sequetia API实现原理LwIP协议栈针对上述特点提供了Sequetia API,它的出发点是上层已经预知了协议栈内核的部分结构,API可以使用这种预知来避免数据拷贝的出现,Sequetia API与BSD Socket具有很大的相似性,但工作在更低的层次(Sequetia API操作的是一个网络连接,BSD Socket像操作普通文件那样来操作一个网络连接,充分贯彻linux一切皆文件的理念),用户进程可以直接操作内核进程中的数据包数据。原创 2019-08-10 09:34:51 · 3603 阅读 · 0 评论 -
TCP/IP协议栈之LwIP(十)---Socket API编程
一、BSD Socket简介BSD Socket最初是由加州伯克利大学为Unix系统开发出来的,因此也被称为伯克利套接字(Internet Berkeley Sockets),它是一种采用C语言进程间通信库的应用程序接口(API),经常用在计算机网络间的通信,大多数其他的编程语言也都使用类似的接口。BSD Socket作为一种API,允许不同主机或者同一个计算机上的不同进程之间的通信,它支持多...原创 2019-08-15 21:38:59 · 13134 阅读 · 4 评论 -
TCP/IP协议栈之LwIP(一)---网络数据包管理
一、TCP/IP分层思想直接看理论书籍不够直观高效,这个系列依然主要从如何实现的角度介绍TCP/IP协议。就像前面介绍操作系统,主要从比较简单的UCOS源码介绍操作系统的实现,对RTOS的实现有了深入的了解,再去阅读Linux的源码会更容易理解。这里介绍的TCP/IP系列也从相对轻量的LwIP协议栈源码的实现来介绍TCP/IP协议的原理和应用,LwIP协议源码如下:http://git.sava...原创 2019-07-02 21:41:14 · 8169 阅读 · 0 评论