各种协议报头解析(以太网,IP,TCP,UDP报头)

本篇我们将介绍各种协议的报头解析。其中包括以太网数据报头,IP数据报头,TCP数据报头,UDP数据报头。

工具/原料

  • wireshark抓包工具

方法/步骤

  1. 1

    首先我们介绍以太网数据报头的解析。其中以太网报头长度为14个字节。主要包括:目的地址占6个字节,源地址6个字节,类型2个字节。

  2. 2

    接下来我们通过wireshark进行抓包分析,进行验证以太网报头长度为14个字节。可以通过wireshark解析看到,为14个字节。

  3. 3

    下面我们介绍IP数据报头的解析。详细解析:

    版本(4位):用来标识IP协议的版本,最常见的就是4和6,分别代表IPv4和IPv6。

    首部长度(4位):长度4位。这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即本区域值= IP头部长度(单位为bit)/(8*4),因此,一个IP包头的长度最长为“1111”,即15*4=60个字节。IP包头最小长度为20字节。

    服务类型(8位):长度8比特。8位 按位被如下定义 PPP DTRC0PPP:定义包的优先级,取值越大数据越重

    000 普通 (Routine)

    001 优先的 (Priority)

    010 立即的发送 (Immediate)011 闪电式的 (Flash)100 比闪电还闪电式的 (Flash Override)101 CRI/TIC/ECP(找不到这个词的翻译)110 网间控制 (Internetwork Control

    111 网络控制 (Network ControlD 时延: 0:普通 1:延迟尽量小T 吞吐量: 0:普通 1:流量尽量大R 可靠性: 0:普通 1:可靠性尽量大M 传输成本: 0:普通 1:成本尽量小0 最后一位被保留,恒定为0

    总长度(16位):此处的总长度是指首部长度和数据长度之和,单位仍然是字节。

    16bit可以表示的最大值为65535,所以IP数据报的最大长度可以到达65535字节。但由于以太网的MTU(Maximum Transmission Unit)最大为1500字节,所以如果IP协议是运行在以太网的话,就会遇到需要分片的情况。

    标志(3位):这3位中只有前2位有用,中间一位表示DF(don’t fragment),而最低位(最右侧的bit)表示MF(more fragment)。

    DF等于1的话,表示此IP数据报“不能分片”。只有在DF等于0时,才允许对其进行分片。

    MF等于1的话,表示此IP数据报后面还有分片的数据报,而MF等于0时,则表示当前的IP数据报是这一组中最后一个数据报。

    片偏移(13位):此域表示当IP数据报超过MTU而被分拆成多片后,每一片在原IP数据报中的位置。此偏移量的参照起点是原数据报的数据部分的起点。

    生存时间(8位):长度8比特。当IP包进行传送时,先会对该字段赋予某个特定的值。当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于路由环路而导致IP包在网络中不停被转发。

    协议(8位):标识了上层所使用的协议,以下是比较常用的协议号:

    1    ICMP    2    IGMP    6    TCP   17    UDP   88    IGRP   89    OSPF

    头部校验(16位):用来做IP头部的正确性检测,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。

    源IP地址(16位):

    目的IP地址(16位):

    总共20个字节,构成了IP数据报的头部。

  4. 4

    接下来我们通过wireshark抓包,进行解析,并可以看到IP数据报头的长度为20个字节。

  5. 5

    下面我们介绍TCP协议的数据报头的解析,其长度为20个字节。详细解析:

    源端口(16位),目的端口(16位)。

    顺序号(32位),表明了发送的数据报的顺序。

    确认号(32位),希望收到的下一个数据报的序列号。

    TCP协议数据报头头长(4位),表明TCP头中包含多少个32位字。

    下面6位目前未用,

    ACK:ACK位置1表明确认号是合法的。如果ACK为0,那么数据报不包含确认信息,确认字段被省略。

    PSH:表示是带有PUSH标志的数据。接收方因此请求数据报一到便可送往应用程序而不必等到缓冲区装满时才传送。

    RST:用于复位由于主机崩溃或其它原因而出现的错误的连接。还可以用于拒绝非法的数据报或拒绝连接请求。

    SYN:用于建立连接。

    FIN:用于释放连接。

    窗口大小(16位),表示在确认了字节之后还可以发送多少个字节。

    检验和(16位),是为了确保高可靠性而设置的。它校验头部、数据和伪TCP头部之和。

    紧急指针(16位),它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

    以上20个字节组成了TCP协议的基本报头。

    由此我们可以得出一个算法:普通TCP协议的总报头长度=以太网数据报头+IP数据报头+TCP协议数据报头。

  6. 6

    下面我们依然使用wireshark进行抓包分析并解析验证,可以看到TCP协议数据报头为20个字节。

  7. 7

    下面我们介绍UDP协议的数据报头。其共占8个字节。其中包括:

    源端口(2个字节),目的端口(2个字节)。

    长度(2个字节),UDP用户数据报的总长度,以字节为单位。

    检验和(2个字节)。

    由此我们可以得出结论,UDP协议的数据报总长度=以太网数据报长度+IP数据报头+UDP数据报头。

  8. 8

    下面我们再使用wireshark进行抓包验证,可以看到UDP数据报头的长度为8字节。

各种协议报头解析(以太网,IP,TCP,UDP报头)相关推荐

  1. 《深入浅出DPDK》读书笔记(十):硬件加速与功能卸载(VLAN、IEEE1588、IP TCP/UDP/SCTP checksum、Tunnel)

    Table of Contents 109.硬件卸载简介 110.网卡硬件卸载功能 111.DPDK软件接口 接收侧: 发送侧: 112.硬件与软件功能实现 113.VLAN硬件卸载 1. 收包时VL ...

  2. 网络编程培训之一 编程实现IP/TCP/UDP报文

    系列博客参考:http://blog.csdn.net/zy416548283/article/category/1108400 代码以编号对应放在Github上:https://github.com ...

  3. 以太网,IP,TCP,UDP数据包分析【转】

    原文地址:http://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html 1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 ...

  4. 网际传输协议和传输控制协议(IP,TCP,IP)

    文章目录 1 简介 2 IP 2.1 简介 2.2 IP的可靠性 2.1 IP Header 2.3 IP分片和重组 3 TCP 3.1 简介 3.2 TCP Header 3.3 TCP 三次握手 ...

  5. 网工协议基础(4)TCP/UDP协议

    往期回顾 网工协议基础(1) OSI七层模型 网工协议基础(2) TCP/IP四层模型 网工协议基础(3) IP地址 欢迎关注微信公众号[厦门微思网络].www.xmws.cn专业IT认证培训19周年 ...

  6. 2020-01-14 IP/TCP/UDP 对应的RFC编号

    Networking Protocol Documents IPv4 specification (RFC 791) IPv6 specification (RFC 2460) TCP/UDP spe ...

  7. Ethernet IP TCP UDP 协议头部格式

    The Ethernet header structure is shown in the illustration below: 以太网头部14 bytes Destination Source L ...

  8. ip tcp udp mpeg4头结构的定义

    IP包头结构浅析 版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),IPv6的值(0110) IP包头长度(Header Length):长度4比特 ...

  9. IP/TCP/UDP/RTP/RTCP 包结构图

    IP 包头结构: TCP 包头结构: UDP 包头结构: RTP 包头结构: RTCP 包头结构:

  10. ip, tcp, udp, icmp header

    Figure 1. IPv4 header Figure 2. TCP header Figure 3. UDP header Figure 4. ICMP header reference:TCP/ ...

最新文章

  1. PCL从0到1|点云滤波之直通滤波与体素法滤波
  2. redis内部分享ppt
  3. Win10 Wsl可以装mysql_WSL win10子系统linux-ubuntu 安装mysql root用户远程连接 开机启动mysql服务 用navicat连接登录...
  4. Windows Phone 7 MVVM模式通讯方式之实现Command
  5. iOS 点击推送消息跳转指定界面 —总结篇
  6. 对话系统(三)- 优化方法
  7. Android Studio百度地图开发所需参数获取SHA1或MD5的最简单方法(图文教程)
  8. ubuntu安装操作HttpSQS高速队列
  9. RuntimeError: Working outside of request context. This typically means that you attempted to use fun
  10. 劳荣枝潜逃 23 年落网,多亏了它!
  11. [NOIP2015]金币
  12. Codeforces Round #584 (Div. 1 + Div. 2)
  13. Jcreator5.0
  14. 2018我读过的那些书
  15. 【毕业设计】python opencv 深度学习 指纹识别算法实现
  16. 七天学完Vue之第四天学习笔记(ref获取dom元素和组件以及路由的讲解)
  17. 【Get Up&Move】MMD镜头+动作打包下载.zip
  18. 蛋疼菊紧的Outlook 2013
  19. 不是python文件打开的合法模式组合是_以下选项中,不是Python文件打开的合法模式组合是:...
  20. 1062 最简分数 (20 分)

热门文章

  1. Node.js | express 获取请求参数 | 客户端渲染 | 服务端渲染
  2. android静默升级方案,Android静默更新程序
  3. struct ethhdr、ether_header、iphdr、tcphdr、udphdr
  4. wordpress报Your PHP installation appears to be missing the MySQL extension which is required by WordP
  5. 代码漏洞扫描常见漏洞
  6. 程序员庞博:凭什么他在《奇葩说》比池子牛x?
  7. 谷歌收购摩托罗拉移动
  8. 做了个web应用打印控件,用了4Fang WEB 打印控件,免费
  9. Linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)
  10. 男人,改变了航空历史