当前位置: 首页 > news >正文

udp通信(一)

udp通信(一)

1、udp包的格式

 public class UdpData
 {
     public byte[] SourcePort = new byte[2];
     public byte[] DestinationPort = new byte[2];
     public byte[] Length = new byte[2];//=Data.length+8;
     public byte[] Checksum = new byte[2];
     public byte[] Data = new byte[1472];//<1472
 }
第0-15位第16-31位
源端口目标端口
包长度校验和
datadata

2.IPV4包的格式

 public class  IpV4//udp包的IP包格式
 {
     //header ***********************
     public BitArray Version=new (4);//4
     public BitArray HeaderLength = new BitArray(4);
     public byte TypeOfService;//8位服务类型:3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示,最小延时,最大吞吐量,最高可靠性,最小成本。
     public byte[] TotalLength = new byte[2];//=Data.length+20+options.length
     //32bit
     public byte[] FragmentId = new byte[2];//报文分片ID
     public BitArray R = new BitArray(1);        
     public BitArray DF = new BitArray(1);//1表示禁止分片,0表示分片
     public BitArray MF = new BitArray(1);//0表示最后一片,1表示前面分片
     public BitArray FragmentOffset = new BitArray(13);//报文分片偏移
    //***************************
   //*传输分片报文时,同一分片ID的报文, offset从0 起,offset+本分片长度=下一报文offset,如果MF=0;表示最后一个分片

     //32bit
     public byte TimeToLive;//64,包转跳一次,TTL -=1;
     public byte Protocol;//1:ICMP,2:IGMP,6:TCP,17:UDP;
     public BitArray HeaderChecksum = new BitArray(16);
     //32bit
     public byte[] SourceIPAddress=new byte[4];
     //32bit
     public byte[] DestinationIPAddress = new byte[4];
     //32bit
     public byte[] Options = new byte[0];//最小0,最大40bytes//假定为0;
     //header end ****************************

     public UdpData Data;//n*4 对齐四个字节 
 }
0-3位4-7位8-15位16-31位
VersionHeaderLengthTypeOfServiceLength
0-15位16位17位18位19-31位
FragmentIDRDFMFFragmentOffset
0-7位8-15位16-31位
TimeToLiveProtocolHeaderChecksum
0-31位
SourceIPAddress
DestinationIPAddress
Options(变长,假定为4字节)
UdpData Package(n*4字节)

3.以太网包格式

 public class EtherNetFrame
 {
     public byte[] EthernetFramePreamble = [0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB];
     public byte[] SourceMac = new byte[6];
     public byte[] DestinationMac = new byte[6];
     public byte[] TypeOrLength = new byte[2];//MTU 的长度:0x0000-0x05dc Ethernet II;0xFFFF: Novell,0xAAAA: Ethernet SNAP, 0x0800:IP,0x0806:ARP, 0x8035:Novell,0x8137:IPX,0x809B: Apple talk
     //LLC******
     public Byte DSAP;//destination Service access point;
     public Byte SSAP;//source Service access point;SAP:0,4,6,AA,FE
     public Byte Control;//0x03
     //*****************
     //SNAP****************
     public byte[] OrgCode = new byte[3];//0
     public byte[] TypeOfProtocol = new byte[2];//0x8137,SSAP=0xAA;
     //********************
     public IpV4 udpMtu;//maxLength=1500;
     public byte[] FrameChecksum = new byte[4];//FCS
     public byte[] EthernetFrameEndCode = [0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA];
 }
0-78-1516-2324-31位
0xAA0xAA0xAA0xAA
0xAA0xAA0xAA0xAB
SourceMacSourceMacSourceMacSourceMac
SourceMacSourceMacDestinationMacDestinationMac
DestinationMacDestinationMacDestinationMacDestinationMac
TypeOrLengthTypeOrLengthDSAPSSAP
ControlOrgCodeOrgCodeOrgcode
TypeOfProtocolTypeOfProtocolIPV4IPV4
IPV4IPV4IPV4IPV4
FrameChecksumFrameChecksumFrameChecksumFrameChecksum
0xAA0xAA0xAA0xAA
0xAA0xAA0xAA0xAA

需要注意的是
(1)以太网传输时,低字节在前,高字节在后
(2)不同版本格式不同。
(3)真正编程时,我们关心的是本地IP,Port,远端IP 和Port,基本是从Socket开始的,校验、组包等底层工作,由网络驱动程序来完成,程序员不用关心。
如何编程,待续。。。。

相关文章:

  • VUE3+TypeScript项目,使用html2Canvas+jspdf生成PDF并实现--分页--页眉--页尾
  • 使用LLaMAFactory微调Qwen大模型
  • QT计算器开发
  • kubesphere 终端shell连不上的问题
  • FPGA Verilog/VHDl 中的锁存latch
  • leetcoed0044. 通配符匹配 hard
  • 【stm32--HAL库DMA+USART+空闲中断不定长收发数据】
  • 《探秘SQL的BETWEEN:解锁数据范围查询的深度奥秘》
  • [HCIA]网络基础
  • Canvas粒子系统终极指南:从基础运动到复杂交互的全流程实现
  • Java 环境变量配置指南
  • 【数学建模】(启发式算法)蚁群算法(Ant Colony Optimization)的详解与应用
  • 深度学习项目--基于SE的ResNet50V2网络结构探究实验
  • 蓝桥杯省模拟赛 互质的数
  • HCIP(VLAN综合实验)
  • 安装Ollama,本地部署deepseek
  • 如何去评估一个系统的高可用
  • 流程引擎/状态机简介以及选型
  • Centos7安装cat美化工具lolcat
  • 使用 flutter_blue_plus 连接蓝牙
  • 车载抬头显示爆发在即?业内:凭借市场和产业链优势,国内供应商实现反超
  • 地下5300米开辟“人造气路”,我国页岩气井垂深纪录再刷新
  • 云南大理铁路枢纽工程建设取得两大进展,预计明年建成
  • 农行深圳市分行原副行长王国彪涉嫌严重违纪违法被查
  • “饿了么”枣庄一站点两名连襟骑手先后猝死,软件显示生前3天每日工作超11小时
  • 新造古镇丨乌镇的水太包容了,可以托举住任何一种艺术