这几天完成一个对比以太网帧的程序(c语言),老师给了以太网帧头部和IP报文头部的结构体,跟实际抓取到的数据包的格式是相同的。

以太网帧头部的数据结构:

typedef struct {
unsigned char dest_mac[];
unsigned char src_mac[];
unsigned short eth_type;
} ethernet_header;

eth_type字段用来指明上层协议类型,两字节。eth_type字段常见值及对应协议

  0x0800  网际协议(IP)
  0x0806  地址解析协议(ARP)
  0x8035  反向地址解析协议

更多可见:http://blog.sina.com.cn/s/blog_a206e924010111tm.html

IP报文格式头部的数据结构:

typedef struct {
unsigned char header_len:;
unsigned char version:;
unsigned char tos:;
unsigned short total_len;
unsigned short ident;
unsigned short flags;
unsigned char ttl:;
unsigned char proto:;
unsigned short checksum;
unsigned char src_ip[];
unsigned char dest_ip[];
} ip_header;

IP报文的格式如图:

IP报文中有的字段只占了4位,结构体中的成员采用了位域定义的形式。

struct name{
  type name:n;
};

成员变量name占用空间为n位,n必须为正整数,其值必须小于type类型占用的位数,如果type是int,那么n必须是1~31之间的整数。对于位域类型的成员,在赋值时如果实际值超过n位能表达的范围,超出部分将会被截掉。

结构体中 首部长度字段 在 版本字段的前面,跟图片中的相反,这两个字段占一个字节,版本字段是低四位,在内存中存储的位置是  首部长度|版本  ,因此结构体中将首部长度放在第一个。

proto表示传输层的协议,常见的对应描述:

  1  Internet控制消息(ICMP)
  2  Internet组管理(IGMP)
  6  传输控制(TCP)
  17  用户数据报文(UDP)

 更多见:http://blog.csdn.net/jiary5201314/article/details/41213561

IP报文中的报头长度字段表示的是头部占32比特的数字,即IP报文头部的长度为 header_len * 4 字节。

以太网帧、IP报文格式的更多相关文章

  1. 【转】以太网帧、IP报文格式

    原文:https://www.cnblogs.com/yongren1zu/p/6274460.html https://blog.csdn.net/gufachongyang02/article/d ...

  2. 【转】TCP/IP报文格式

    1.IP报文格式 IP协议是TCP/IP协议族中最为核心的协议.它提供不可靠.无连接的服务,也即依赖其他层的协议进行差错控制.在局域网环境,IP协议往往被封装在以太网帧(见本章1.3节)中传送.而所有 ...

  3. 【转】IP报文格式详解

    下图为常见的IP报文格式表: 上面是IP的报文格式,接下来我们先说明各个字段的意义.然后,用Etheral软件转包分析IP的报文格式. 1.版本:ip报文中,版本占了4位,用来表示该协议采用的是那一个 ...

  4. TCP/IP报文格式

    1.TCP首部格式 1.1 格式各字段含义 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程. 目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应 ...

  5. IP报文格式及各字段意义

    IP数据包由报头和数据两部分组成.报头的前一部分是固定长度,共20字节.在报头的固定部分的后面是可选部分——IP选项和填充域. 首部各字段的含义如下 1.版本      占4位,指IP协议的版本. 2 ...

  6. tcp、udp、ip、icmp报文格式分析

    TCP .UDP .IP. ICMP协议报文格式分析 Tcp报文格式: Wireshark抓包如图: 源端口/目的端口(16bit): 在TCP报文中包涵了源端口/目的端口,源端口标识了发送进程,目的 ...

  7. TCP,UDP,IP包头格式及说明(zz)

    一.MAC帧头定义 /数据帧定义,头14个字节,尾4个字节/ typedef struct _MAC_FRAME_HEADER { ]; //目的mac地址 ]; //源mac地址 short m_c ...

  8. TCP/IP包格式详解

    文章参考地址:http://blog.chinaunix.net/uid-20698826-id-4700710.html http://blog.csdn.net/mrwangwang/articl ...

  9. 以太网帧、TCP与UDP段以及IP数据报格式总结

    传输层及其以下的机制由内核提供,是操作系统的一部分,应⽤层由⽤户进程提供应⽤层数据通过协议栈发到⽹络上时,每层协议都要加上⼀个数据⾸部(header),称为封装.不同的协议层对数据包有不同的称谓,在传 ...

随机推荐

  1. Failed to resolve: com.android.support:design:25.4.0

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 错误:(27, 13) Failed to resolve: com.android.s ...

  2. bzoj 4573: [Zjoi2016]大森林 lct splay

    http://www.lydsy.com/JudgeOnline/problem.php?id=4573 http://blog.csdn.net/lych_cys/article/details/5 ...

  3. 【dijkstra优化/次短路径】POJ3255-Roadblocks

    [题目大意] 给出一张无向图,求出从源点到终点的次短边. [思路] 先来谈谈Dijkstra的优化.对于每次寻找到当前为访问过的点中距离最短的那一个,运用优先队列进行优化,避免全部扫描,每更新一个点的 ...

  4. hihocoder #1299 : 打折机票 线段树

    #1299 : 打折机票 题目连接: http://hihocoder.com/problemset/problem/1299 Description 因为思念新宿的"小姐姐"们, ...

  5. UVALive 4867 Maximum Square 贪心

    E - Maximum Square Time Limit:4500MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit ...

  6. JavaEE-学习目录

    JavaEE ============================================ Web工作机制 JSP Struts基础 Struts核心文件 Struts数据校验与国际化 S ...

  7. ProtoBuffer使用笔记

    ProtoBuffer是由谷歌研发的对象序列化和反序列化的开源工具,ProtoBuffer和Xml类似,都是数据描述工具,后者使用更为广泛,前者Google内部使用且具有更高的效率.该工具安装和使用都 ...

  8. ROS知识(14)----局部避障的动态窗口算法(DWA)及其调试的方法

    Dynamic Window Approach(DWA)是重要的局部轨迹规划算法,ROS中使用了DWA算法获得了很好的局部路径规划的效果.具体的教程可参考官方的导航调试资料Navigation Tun ...

  9. 记录一次apache错误:“child pid 29023 exit signal Segmentation fault (11)”

    目前做了一台公网的测试机,主要是  php 5.3.3 版本,是 browser  --> nginx  --> apache --> php 今天因为想要安装一个商城,要求需要 P ...

  10. C#编程(一)

    第一个简单的C#程序 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...