mac头和ip头部详解

25 篇文章 7 订阅
12 篇文章 9 订阅

报文封装整体结构

mac帧头定义
 /*数据帧定义,头14个字节,尾4个字节*/
typedef struct _MAC_FRAME_HEADER
{
 char m_cDstMacAddress[6];    //目的mac地址
 char m_cSrcMacAddress[6];    //源mac地址
 short m_cType;            //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp
}__attribute__((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;

ip头部定义


/*IP头定义,共20个字节*/
 struct iphdr {
#if defined(__LITTLE_ENDIAN_BITFIELD)
        __u8    ihl:4,
                version:4;
#elif defined (__BIG_ENDIAN_BITFIELD)
        __u8    version:4,
                ihl:4;
#else
#error  "Please fix <asm/byteorder.h>"
#endif
        __u8    tos;
        __be16  tot_len;
        __be16  id;
        __be16  frag_off;
        __u8    ttl;
        __u8    protocol;
        __sum16 check;
        __be32  saddr;
        __be32  daddr;
        /*The options start here. */
};
  •  

    iphdr->version
        版本(4位),目前的协议版本号是4,因此IP有时也称作IPv4。

    iphdr->ihl
        首部长度(4位):首部长度指的是IP层头部占32 bit字的数目(也就是IP层头部包含多少个4字节 -- 32位),包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(没有任何选择项)字段的值是5 <==> 5 * 32 / 8 = 5 * 4 = 20 Bytes

    iphdr->tos
        服务类型字段(8位): 服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TOS子字段分别代表:最小时延、最大吞吐量、最高可靠性和最
    小费用。4 bit中只能设置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。

    iphdr->tot_len
        总长度字段(16位)是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道 IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节
         总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为46字节,但是IP数据可能会更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。

    iphdr->id
        标识字段(16位)唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。

    iphdr->frag_off (16位)
        frag_off域的低13位 -- 分段偏移(Fragment offset)域指明了该分段在当前数据报中的什么位置上。除了一个数据报的最后一个分段以外,其他所有的分段(分片)必须是8字节的倍数。这是8字节是基本分段单位。由于该域有13个位,所以,每个数据报最多有8192个分段。因此,最大的数据报长度为65,536字节,比iphdr->tot_len域还要大1。

    iphdr->frag_off的高3位
        (1) 比特0是保留的,必须为0;
        (2) 比特1是“更多分片”(MF -- More Fragment)标志。除了最后一片外,其他每个组成数据报的片都要把该比特置1。
        (3) 比特2是“不分片”(DF -- DonDon't Fragment)标志,如果将这一比特置1,IP将不对数据报进行分片,这时如果有需要进行分片的数据报到来,会丢弃此数据报并发送一个ICMP差错报文给起始端。
         
       |---|-------------|
       |DM0|   offset    |
       |---|-------------|
       15 1312          0 
           

    iphdr->TTL
     TTL意为“Time to Live”,指定了从发送者到接收者的传输路径上中间站点的最大数目(或跳数)。

    iphdr->protocol
     Protocol标识了IP分组承载的高层协议(传输层)。例如, TCP和UDP协议都有对应的唯一值。

    iphdr->check
     Checksum包含了一个校验和,根据首部和数据的内容计算。如果指定的校验和与接收方计算的值不一致,那么可能发生了传输错误,应该丢弃该分组。
     
    src和dest指定了源和目标的32位IP地址。

     options用于扩展IP选项,在这里不讨论了。

     data保存了分组数据(净荷)。

  •     4个字节的32 bit值以下面的次序传输:首先是0~7bit,其次8~15bit,然后16~23bit,最后是24~31 bit。这种传输次序称作big endian字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算系统与网络安全Computer System and Network Security 2023/6/4 计算系统与网络安全全文共131页,当前为第1页。 第9章 网络攻防技术 结论 网络攻击阶段及相关工具 网络安全常识 操作系统简介(自学) 网络简介 2023/6/4 计算系统与网络安全全文共131页,当前为第2页。 第9章 网络攻防技术 结论 网络攻击阶段及相关工具 网络安全常识 操作系统简介(自学) 网络简介 2023/6/4 计算系统与网络安全全文共131页,当前为第3页。 开始任何攻击或探测之前,请注意你自己也将暴露在攻击目标或监管系统面前,并请遵守信息安全职业道德! -周世杰 2023/6/4 计算系统与网络安全全文共131页,当前为第4页。 网络简介 协议分层 协议层 N+1 协议层 N 协议层 N-1 协议层 N+1 协议层 N 协议层 N-1 发送方计算机 接收方计算机 2023/6/4 计算系统与网络安全全文共131页,当前为第5页。 OSI七层模型 2023/6/4 计算系统与网络安全全文共131页,当前为第6页。 TCP/IP分层模型 ARP RARP TCP UDP IP ICMP IGMP SMTP HTTP TELNET DNS SNMP 应用层 传输层 网络层 网络接口层 2023/6/4 计算系统与网络安全全文共131页,当前为第7页。 TCP/IP网络 传输层 网络层 数据链路层 物理层 应用层 传输层 网络层 数据链路层 物理层 应用层 网络层 数据链路层 物理层 2023/6/4 计算系统与网络安全全文共131页,当前为第8页。 TCP/IP数据封装 2023/6/4 计算系统与网络安全全文共131页,当前为第9页。 TCP/IP进一步讨论 传输控制协议TCP 用户数据报UDP 网际协议IP Internet 控制消息协议ICMP 传输层 网络层 2023/6/4 计算系统与网络安全全文共131页,当前为第10页。 TCP TCP源端口(16) TCP目的端口(16) 序列号(32) 确认号(32) 数据偏移(4) 保留(6) 控制位(6) 窗口(16) 校验和(16) 紧急指针(16) 选项(如果有) 填充位 数据 2023/6/4 计算系统与网络安全全文共131页,当前为第11页。 TCP(续) 控制字段: 每一位代表一种控制功能 从左至右为:紧急指针URG、ACK应答域有效、立即发送PSH、复位RST、同步序列号SYN、释放连接FIN 2023/6/4 计算系统与网络安全全文共131页,当前为第12页。 TCP(续) 校验和 包括TCP协议、数据和一个伪头部头部组成 源地址 目的址 00000000 协议号 TCP数据长度 伪头部 2023/6/4 计算系统与网络安全全文共131页,当前为第13页。 TCP(续) 三次握手 带有初始序列号的SYNa ACK SYNa,且带有初始序列号的SYNb ACK SYNb Connection 2023/6/4 计算系统与网络安全全文共131页,当前为第14页。 TCP(续) 问题:6位保留位用来作什么? 2023/6/4 计算系统与网络安全全文共131页,当前为第15页。 UDP TCP源端口(16) TCP目的端口(16) 消息长度(16) 数据 校验和 UDP=Unreliable Damn Protocol UDP=User Datagram Protocol 2023/6/4 计算系统与网络安全全文共131页,当前为第16页。 IP 2023/6/4 计算系统与网络安全全文共131页,当前为第17页。 IP(续) IP地址 子网掩码 路由器 交换机 集线器 网关 网闸(Network Air Gap) 2023/6/4 计算系统与网络安全全文共131页,当前为第18页。 IP(续) IP分片 3位标志:是否分片 2023/6/4 计算系统与网络安全全文共131页,当前为第19页。 IP(续) 问题:8位服务类型一般没有使用,我们可以用它来做什么? 2023/6/4 计算系统与网络安全全文共131页,当前为第20页。 ICMP ICMP是TCP/IP中重要的协议之一 ICMP使用与IP相同的首部格式,在首部之后,在IP数据包的数据部分,ICMP加入一个ICMP类型字段,ICMP余下的格式依赖于ICMP类型字段 ICMP的类型:响应应答(0)、目的不可到达(3)、源抑制(6)、重定向(5)、响应(8)、超时(11)、参数问题(12)、时间戳(13)、时间戳应答(14)、消息请求(15)、消息应答(16) 2023/6/4 计算系统与网络安全全文共131页,当前为第21页。 数据链路层 以太网数据帧格式 2023/6/4 计算

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值