[Network]网络协议结构体及文件

本文深入探讨了网络协议层次结构,包括MAC帧的构成,ARP协议的工作原理,IP帧的格式,ICMP协议在错误检测中的作用,以及UDP和TCP这两种传输层协议的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本文,集中汇集了各个协议头部,通过理解头部,可以帮助理解网络协议的组成,或者应用开发等。

    然而,一开始学习的时候,发现在/usr/include目录里面,子目录Linux和netinet都分别有定义网络协议的相关文件。后来:whats-the-practical-difference-between-the-headers-linux-in-h-and-netinet-in, 链接
结论:
    Linux子目录是给 内核开发 使用,而我们一般 应用开发 是使用netinet目录下的头文件。

    为什么要写这篇文章?上面已经给出了一部分原因了,还有就是,作为嵌入式工程师或者是网络工程师,我确实感受到了网络的需求,有一次实现多网卡切换,就需要修改MAC帧结构。

    Linux网络结构体与定义文件, 链接:帮助搜索文件位置

顺序
  1. MAC帧
  2. ARP协议结构
  3. IP帧
  4. ICMP协议结构
  5. UDP帧
  6. TCP帧


MAC帧
net/ethernet.h

/* This is a name for the 48 bit ethernet address available on many systems.  */
struct ether_addr
{
  u_int8_t ether_addr_octet[ETH_ALEN];
} __attribute__ ((__packed__));

struct ether_header
{
  u_int8_t  ether_dhost[ETH_ALEN];    /* destination eth addr    */
  u_int8_t  ether_shost[ETH_ALEN];    /* source ether addr    */
  u_int16_t ether_type;                /* packet type ID field    */
} __attribute__ ((__packed__));


ARP协议结构
net/if_ether.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值