当你需要使用千兆网发送数据的时候,你需要先传输8字节的前导码,也就是7个字节的0xaa和1个字节的0xab,但是因为网络协议规定,传输一个字节时lsb最先传输,所以在程序里,需要先发7个字节的0x55,再发1个字节的0xd5。然后就完成了以太网的数据同步和开始。
接下来就要开始二层mac帧,里面的内容包括了发送目的地址的mac地址,源地址的mac地址以及ip类型,因为mac帧里面除了ip协议以后,还有其他的比如atm网络类型。所以这个地方的ip类型选择0x0800,为ipv4类型。
二层发完就需要发送三层的ip数据报首部,这个首部的内容就有点多了。以一个图片来代表,
该图来源网络
这里我们只选用最精简的ip数据报首部,其它的可选项都忽略不表。
因为使用ipv4,版本号肯定是4;这里的头长度,以4个字节为一个单位,我们选用最精简的版本,所以这里为5;服务类型默认为0;总长度以1个字节为一个单位,所以这个长度需要将udp数据包长度加上4倍的ip包头长度;标识是每个数据包的计数器,当然发送一个包后,这个计数器就加1;标志位起到的作用是标志数据包是否有分片,如果有分片该包是否是这个分片的最后一包;片偏移就是在启用分片的时候标记出,这个数据包在整个数据中的位置;生存时间是这个数据包能够经过的最大路由器数,当它经过一个路由器转发,这个生存时间就会减1,减到0就会丢弃这个数据包,也就是代表这个数据包找不到它的下家了;上层协议标识,也就是ip数据包封装的里面的数据包的类型,我们选用相对简单的udp协议,所以这个地方的值为17;头部检验和,这个检验和必须按照规则来说,否则接收方会认为这个数据包已经损坏了,它的运算规则可以从网上的资料查到,操作并不麻烦;接下来就要我们发送方的地址——源ip地址,这样让接收方收到我们的来信可以给我们回信;然后就是接收这个数据包的收件人的地址——目的ip地址;至此,我们的ip数据包首部已经设置结束。
接下来就进入了udp数据包首部,相对来说,udp数据包的首部就非常简单,跟mac帧一样简单。
该图来源网络
它的首部,2个字节的源地址端口,2个字节的目的端口,也就像门牌号一样,即使给你小区的名字,还需要给你一个几期几单元几栋才能找得到人;接下来就是数据长度,这里的数据长度不是指你要发送的数据长度,而是你要发送的数据长度加上udp数据包的长度,所以这里的长度等于你要发的数据的长度(1个字节为1个单位)加上8,单位也是1个字节;最后的检验和可以设置为0,这里设为0不会影响数据的传输;然后你就可以愉快的发送数据,发送完了之后就可以发送4个字节的crc校验值。至此整个数据传输结束。
Imagination全新发布IMG CXM GPU,打造RISC-V伙伴的首选GPU
英特尔公布11代桌面酷睿
华为云电脑体验评测 未来将会成为更多人的办公选择
联想联合中国移动展示5G_C-RAN软基站验证样机
基于准垂直型氮化镓肖特基二极管的高功率微波限幅器
认识以太网帧的整个结构
润和软件受邀赋能“2022年江苏省数字经济卓越工程师高级研修班”
欧姆龙推出E3ZG系列高性能光电传感器
PLC的分类 PLC具有哪些特点
从ChatGPT看AI对未来军事变革的影响
中易云物联网系统在城市中的应用
医疗应用中的Everspin MRAM存储器
成都东站的能耗监测系统设计和应用
自由程序员有哪几个级别
SOLIDWORKS Electrical 2023新功能揭秘!提高电气工程师设计效率 与机械工程师协同设计
基于区块链技术的以太坊二层扩容技术解析
半导体光放大器SOA原理
使用数控等离子切割机割炬高度控制的必要性
如何防止碳化硅SiC MOSFET失效呢?
中国海装给出了针对低风速地区平价风电项目的最优解