本地发现设备协议基础

本节主要记录 IP 网络层协议,所以关于传输层 TCP、UDP 协议与应用层 HTTP、CoAP 等其他协议只有简单记录。
TCP/IP 协议栈是基于 wifi 无线传输媒介的。所有的数据通信都是基于 IP 网络协议层进行传输的。在这一层需要通过路由器分配的 IP 地址进行通信。

文章目录

  • 本地获取 IP 的常见方法
    • 广播
      • 常见的广播应用报文
      • 广播地址
      • 子网广播与主机广播
    • 服务器地址
    • 组播
      • 组播 IP 协议 IGMP
  • 常见的本地数据通信协议
    • TCP 协议
      • TCP 协议的特点
      • TCP 协议发送流程
      • TCP 的保活功能
    • HTTP 协议
      • 常见的 HTTP 请求方法
    • UDP 协议
    • CoAP 协议
    • 蓝牙通信协议

本地获取 IP 的常见方法

IP 通信除了常用的点对点通信,还有一对多(组播)通信和一对所有(广播)通信。
当然 IP 地址也可以分为:

  • 单播地址
  • 组播地址
  • 广播地址

本地发现设备的方法是,在不知道对端 IP 地址的情况下,通过组播或广播的方式,向特定地址发送报文。对端设备只需监听该地址就可以接收报文。因此组播和广播适合在局域网中发现设备。

广播

是指将报文发送给网络中所有可能的接收方。
广播的用途有两个:

  • 在本地网络中定位一个主机设备。
  • 在本地网络中减少分组流通,一个报文就可以通知本地网络中的所有主机设备。

常见的广播应用报文

  • ARP(Address Resolution Protocol,地址解析协议)。其用途是在本地网络中,广播一个 IP 地址,要求此 IP 设备返回自己的 MAC 地址。APR 的广播属于数据链路层广播。而不是三层网络层的 IP 广播。
    • 例如:在本地网络中,广播一个 ARP 请求:“IP 地址为 a,b,c,d 的设备,硬件 MAC 地址是多少,请告诉我”
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)。这种广播协议需要本地网络中存在一台 DHCP 服务器。此时 DHCP 客户端发送目的 IP 地址(通常为 255.255.255.255)的 DHCP 请求,在同一网络中的 DHCP 服务器端就可以接收到改请求并回复分配的 IP 地址。

广播地址

一般来说,报文的二层地址为 FF:FF:FF:FF:FF:FF: 则三层地址就为 255.255.255.255。因为对于接收方来说,发现报文中的二层地址不是自己的 MAC 地址 或者 广播的 MAC 地址或组播 MAC 地址(如 01:00:5E:XX:XX:XX),则丢弃不处理。

  • 二层数据链路层广播地址:(FF:FF:FF:FF:FF:FF:)
  • 三层网络层 IP 广播地址:(255.255.255.255)

子网广播与主机广播

IPv4 地址是由主机 ID与子网 ID 组成

  • 子网广播地址(如 子网掩码为 255.255.255.0 的 xxx.xxx.xxx.255)。
    • 假设子网掩码为 255.255.255.0 IP 地址为 192.168.1.1 向目的地址 192.168.1.255 发送报文,路由器只会将该报文广播给(192.168.1)子网中的主机。
    • 优点:其他子网里的主机不会接收到此报文,避免网络资源浪费。
  • 主机广播地址(如 255.255.255.255)本地网络中的所有主机都可以收到该报文。

服务器地址

一般作为服务器端,报文原地址设置为 0.0.0.0 表示不对报文源地址进行验证。

组播

组播也称为多播,相较于要么一对一的单播与一对多的广播,他提供了一个这种的方案。

  • 一个主机可以向一个组地址发送报文。所有加入此组的主机都可以收到这个报文,有点类似于子网广播。但比子网广播更灵活,所有主机都可以随时加入或者离开某个组。

组播 IP 协议 IGMP

IGMP(Internet Group Management Protocol,互联网组管理协议)是一种负责组播成员管理的协议。用来与支持 IGMP 协议的路由器之间建立、维护组播组成员关系。

常见的本地数据通信协议

下面主要介绍与 Internet 相关的协议,其他比如 蓝牙通信协议、ZigBee 通信协议等暂不做介绍。

  • TCP
  • HTTP
  • UDP
  • CoAP

TCP 协议

传输控制协议(TCP,Transmission Control Protocol)是 Internet 协议族的主要协议之一。
在 TCP/IP 模型中,TCP 作为传输层协议,为应用层协议提供可靠的数据出传输。常用的应用层协议:HTTP、MQTT、FTP 等。
在这里插入图片描述

TCP 协议的特点

  • 面向连接。采用 TCP 协议发送数据前需要三次握手建立连接。
  • 可靠的。采用 TCP 协议发送数据,出现丢失数据的情况会重传。
  • 字节流。

TCP 协议发送流程

  1. 上层应用程序将应用数据写入 TCP 缓冲区。
  2. TCP 缓冲区将数据打包成 TCP 报文发往网络层。
  3. 接收方收到 TCP 报文,将其放入 TCP 缓冲区。
  4. 接收一定数量的 TCP 报文后,对数据进行排序与重组并告知应用程序。
    在这里插入图片描述

TCP 的保活功能

TCP 客户端在一段保活间隔时间内没有数据时,需要给 TCP 服务器端发送保活报文,从而保持连接。保活间隔时间与重传次数都是可配置的。

HTTP 协议

HTTP(HyperText Transfer Protocol,超文本传输协议) 是基于传输层 TCP/IP 之上的应用协议。它规定了客户端与服务器端之间数据传输的格式与方式。客户端(用户)可通过网站、网络爬虫或者其他工具与服务器端(网站)建立 TCP 连接。通过 HTTP 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

常见的 HTTP 请求方法

  • GET,请求指定的 URI 资源。
  • POST,向指定 URI 资源提交数据。
  • DELETE,请求服务器端删除 URI 所标识的资源。

UDP 协议

用户数据报协议(UDP ,User Datagram Protocol)是一个简单的面向数据报的通信协议,它的特点如下

  • 面向数据
  • 不可靠。因为不会与 TCP 一样建立连接与维护连接状态,而是只负责传输。当然也可以在应用层代码加一些逻辑处理。
  • 网络资源与时间耗费少。因为不会与 TCP 一样存在丢包重传机制。
  • 适合流媒体、实时多人游戏和 IP 语音之类丢失几个包不会影响的应用。

CoAP 协议

受限制的应用协议(Constrained Application Protocol, CoAP)为了满足资源(RAM/FLASH/CPU/网络宽带)受限的物联网设备而产生的基于 UDP 的协议。因为 TCP 和 HTTP 往往需要更多的内存与网络带宽。
特点:

  • 客户端和服务器端都可以独立地向对方发送请求。
  • 虽然是基于 UDP 的协议,但支持可靠的数据传输。
  • 支持多播与广播,可以实现一对多的数据传输。
  • 支持低功耗、非长连接的通信。
  • 相比于 HTTP 协议,其包头更轻量。

蓝牙通信协议

暂略。

ref:《ESP32C3 物联网开发实战》

你可能感兴趣的:(连网,ESP32,书籍,tcp/ip,协议,物联网)