网络帧分析及总结

本文深入探讨了TCP/IP五层网络协议,包括应用层、传输层、网络层、链路层和物理层的主要职责。重点分析了以太网帧的结构,详细解释了IP帧、TCP帧和UDP帧的格式,以及http数据在帧中的封装。通过理解这些帧结构,有助于更好地理解和诊断网络通信问题。
摘要由CSDN通过智能技术生成

TCP/IP五层网络协议

  1. 应用层:是网络应用程序及其应用层协议存留的地方。因特网的应用层包括许多协议,常见的有HTTP(它为web文档提供了请求和传送)、SMTP(它提供了电子邮件报文的传输)和FTP(它提供了两个端系统之间的文件传送)。
  2. 传输层:负责为信源和信宿提供应用程序进程(包括同一终端上的不同进程)间的数据传输服务,这一层上主要定义了两个传输协议,传输控制协议即TCP和用户数据报协议UDP。
  3. 网络层:负责将数据报独立地从信源发送到信宿,主要解决路由选择、拥塞控制和网络互联等问题。
  4. 链路层:负责将IP数据报封装成合适在物理网络上传输的帧格式并传输,或将从物理网络接收到的帧解封,取出IP数据报交给网络层。
  5. 物理层:负责将比特流在结点间传输,即负责物理传输。该层的协议既与链路有关也与传输介质有关。

以太网帧

由于物理层更多的是与物理介质有关,所以直接从链路层开始分析。在链路层中,使用的最多的是以太网,而以太网帧因为历史原因存在多个版本,这里以IEEE802.3以太网帧格式为例介绍。
IEEE802.3以太网帧结构

  • 前导码:7个字节,用于数据传输过程中的双方发送、接收的速率的同步
  • 帧开始符:1个字节,表明下一个字节开始是真实数据(目的MAC地址)
  • 目的MAC地址:6个字节,指明帧的接受者
  • 源MAC地址:6个字节,指明帧的发送者
  • 类型/长度:2个字节,0-1500保留为长度域值,1536-65535保留为类型域值(0x0600-0xffff),通过wireshark抓包看到的,这2个字节指明帧中数据的协议类型,比如常见的IPv4中ip协议采用0x0800
  • 数据:46~1500个字节,包含了上层协议传递下来的数据,如果加入数据字段后帧长度不够64字节,会在数据字段“填充至46字节”以使整个帧达到64字节(除去前导码和帧开始符的8个字节,包含帧尾FCS),即6+6+2+46+4=64
  • 帧校验序列:4个字节,对接收网卡(主要是检测数据字段)提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。目前最为流行的用于FCS的算法是循环冗余校验(cyclic redundancy check –CRC)

备注:除去前导码和帧开始符,也可称为mac帧头,其定义如下所示,wireshark抓包一般看不到FCS,mac帧头都可以看到

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;

typedef struct _MAC_FRAME_TAIL
{
 unsigned int m_sCheckSum;    //数据帧尾校验和
}__attribute__((packed))MAC_FRAME_TAIL, *PMAC_FRAME_TAIL;

IP帧

  • 上面说到的数据字段是上层协议传递下来的数据,而最常见的上层协议便是ip协议。
  • IP协议是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送
  • ip帧的格式如下:
    IP帧结构
  • Version:版本,4位,用来表明IP协议实现的版本号,当前一般为IPv4,即0100,IPv6的为0110。这个字段确保可能运行不同IP版本的的设备之间的兼容性
  • IHL:报头长度,4位,以32比特的字(即4字节)来定义IP首部的长度,包括可选项。若该字段的值是5,即5*32=160比特=20字节。此字段最大值为60(15*32/8=60)字节,没有任何选项的ip头部为20字节
  • TOS:服务类型,8位,用于携带提供服务质量特征信息的字段,服务类型字段声明了数据报被网络系统传输时可以被怎样处理。其中前
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值