【lwip】11-UDP协议&源码分析

目录

  • 前言
  • 11.1 传输层说明
  • 11.2 UDP协议简介
  • 11.3 UDP特点
  • 11.4 UDP端口号
  • 11.5 UDP报文
  • 11.6 UDP伪首部和校验和
  • 11.7 wireshark报文分析
  • 11.8 UDP数据结构
    • 11.8.1 UDP首部
  • 11.9 UDP控制块
  • 11.10 端口号相关
    • 11.10.1 端口号范围
    • 11.10.2 端口号初始值
    • 11.10.3 udp_new_port()端口号申请
  • 11.11 UDP控制块操作函数
    • 11.11.1 udp_new():新建UDP控制块
    • 11.11.2 udp_remove():删除UDP控制块
    • 11.11.3 udp_bind():绑定控制块
    • 11.11.4 udp_bind_netif():绑定网卡
    • 11.11.5 udp_connect():连接控制
    • 11.11.6 udp_disconnect():断开连接
    • 11.11.7 udp_recv():控制块注册接收函数
    • 11.11.8 udp_netif_ip_addr_changed():更新UDP控制块本地IP
  • 11.12 UDP发送数据
    • 11.12.1 udp_sendto_if_src():UDP发送数据基函数
    • 11.12.2 udp_send():UDP发送数据函数
  • 11.13 UDP接收数据
  • 11.14 UDP RAW接口编程
  • 11.15 个人博客
前言主要分析源码实现 。
源码部分,本章节也只分析协议实现部分和最原始的南北接口 。
北向协议栈接口和套接字接口的封装后面有独立章节分析 。
即是UDP RAW接口 。
友链:
  • 李柱明博客园https://www.cnblogs.com/lizhuming/p/16880148.html
11.1 传输层说明IP协议只能完成数据报在互联网主机之间的传递,交付 。
而传输层主要负责向两个主机中进程之间的通信提供服务 。
传输层的几个重要的任务:
  1. 为两个通信的进程提供连接机制 。即是传输层需要识别两个正在通信的进程 。
  2. 传输层应该提供数据传输服务 。在数据发送端,传输层将用户数据进行组装递交给IP层发送出去 。在接收端,等待属于同一应用程序的所有数据单元到达,然后解析转交给用户 。
  3. 为了提供可靠的传输服务,传输层还可以提供流量控制、数据确认等,保证两个主机的应用程序之间数据的有效性 。
11.2 UDP协议简介UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议 。
11.3 UDP特点UDP特点:
  1. 无连接、不可靠 。
  2. 尽可能提供交付数据服务,出现差错直接丢弃,无反馈 。
  3. 面向报文 , 发送方的 UDP 拿到上层数据直接添加个 UDP 首部,然后进行校验后就递交给IP 层 , 而接收的一方在接收到 UDP 报文后简单进行校验,然后直接去除数据递交给上层应用 。
  4. 支持一对一,一对多,多对一,多对多的交互通信 。
  5. 速度快 , UDP 没有 TCP 的握手、确认、窗口、重传、拥塞控制等机制,UDP 是一个无状态的传输协议,所以它在传递数据时非常快,即使在网络拥塞的时候 UDP 也不会降低发送的数据 。
11.4 UDP端口号UDP 报文协议根据对应的端口号传递到目标主机的应用线程的 。
传输层到应用层的唯一标识是通过端口号决定的,两个线程之间进行通信必须用端口号进行识别 。
使用“IP 地址 + 端口号”来区分主机不同的线程 。
范围:[0,65535],因为只有2字节:
  1. 端口号小于256的定义为常用端口 , 服务器一般都是通过常用端口号来识别的 。任何TCP/IP实现所提供的服务都用[1 , 1023]之间的端口号,是由ICANN来管理的;
  2. 端口号从[1024, 49151]是被注册的端口,也成为“用户端口”,被IANA指定为特殊服务使用 。
  3. 大多数TCP/IP实现给临时端口号分配[1024, 5000]之间的端口号 。
  4. 大于5000的端口号是为其他服务器预留的 。
  5. 客户端只需保证该端口号在本机上是唯一的就可以了 。客户端端口号因存在时间很短暂又称临时端口号 。
常见的UDP协议端口号:
端口号协议说明0保留7echo报文回送服务器端口53DNS域名服务器端口69TFT中小型文件传输协议端口123NTP网络时问协议端口是用来同步网络中各个计算机时问的协议161SNMP简单网络管理协议端口11.5 UDP报文UDP 报文也被称为用户数据报 。
UDP报文封装:
  • UDP的数据区就是用户程序的数据了 。
    【lwip】11-UDP协议&源码分析

    文章插图
UDP报文格式:
【lwip】11-UDP协议&源码分析

文章插图
源端口号:用户发送数据的进程锁绑定的本地端口号 。