报文分析2、IP头的结构

IP头的结构


版本(4位)

头长度(4位)

服务类型(8位)

封包总长度(16位)

封包标识(16位)

标志(3位)

片断偏移地址(13位)

存活时间(8位)

协议(8位)

校验和(16位)

来源IP地址(32位)

目的IP地址(32位)

选项(可选)

填充(可选)

数据

(1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从左到右,依次从低位到高位。

(2)版本:占第一个字节的高四位。头长度:占第一个字节的低四位。

(3)服务类型:前3位为优先字段权,现在已经被忽略。接着4位用来表示最小延迟、最大吞吐量、最高可靠性和最小费用。

(4)封包总长度:整个IP报的长度,单位为字节。

(5)存活时间:就是封包的生存时间。通常用通过的路由器的个数来衡量,比如初始值设置为32,则每通过一个路由器处理就会被减一,当这个值为0的时候就会丢掉这个包,并用ICMP消息通知源主机。

(6)协议:定义了数据的协议,分别为:TCP、UDP、ICMP和IGMP。定义为:

#define PROTOCOL_TCP    0x06

#define PROTOCOL_UDP    0x11

#define PROTOCOL_ICMP   0x06

#define PROTOCOL_IGMP   0x06

(7)检验和:校验的首先将该字段设置为0,然后将IP头的每16位进行二进制取反求和,将结果保存在校验和字段。

(8)来源IP地址:将IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。转化的方法是:将每4个字节首尾互换,将2、3字节互换。

(9)目的IP地址:转换方法和来源IP地址一样。

在网络协议中,IP是面向非连接的,所谓的非连接就是传递数据的时候,不检测网络是否连通。所以是不可靠的数据报协议,IP协议主要负责在主机之间寻址和选择数据包路由。

原文地址:https://www.cnblogs.com/classics/p/10417386.html

时间: 2024-11-08 01:46:18

报文分析2、IP头的结构的相关文章

报文分析6、ARP报头结构

ARP报头结构 硬件类型 协议类型 硬件地址长度 协议长度 操作类型 发送方的硬件地址(0-3字节) 源物理地址(4-5字节) 源IP地址(0-1字节) 源IP地址(2-3字节) 目标硬件地址(0-1字节) 目标硬件地址(2-5字节) 目标IP地址(0-3字节)       (1)硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1: (2)协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制): (3)硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP

python使用原始套接字 解析原始ip头数据

使用底层套接字解码底层流量,是这次做的重点工作. 首先来捕获第一个包 # coding:utf-8import socket # 监听的主机IP host = "192.168.1.100" socket_protocol = socket.IPPROTO_ICMP sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol) sniffer.bind((host, 0)) sniffer.setso

TCP/IP数据包结构具体解释

[关键词] TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构,以及协议分析.如:网络监控,故障排查等-- IP包是不安全的,可是它是互联网的基础,在各方面都有广泛的应用.由IP协议衍生的协议族有10数种(据我所知),以后还会出现 很多其它的基于IP的协议- 先从实际出发吧! 一般我们在谈上网速度的时候,专业上用带宽来描写叙述,事实上不管说网速或者带宽都是不准确

http报文分析

http报文分析 一.什么是报文 用于HTTP协议交互的信息被称为报文. 请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文. HTTP报文本身是由多行数据构成的字符串文本. HTTP报文大致上可分为报文首部和报文主体两块,两者由最初出现的空行划分. 5. 通常,并不一定要有报文主体. 二.组成 起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况 报文头:起始行后面有零个或多个字段.每个字段都包含一个名字和一个值,为了便于解析

IP头,TCP头,UDP头,MAC帧头定义

一.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,*PM

win32下PE文件分析之NT头

接上一篇的win32下PE文件分析之DOS头 (一)win32中PE的NT: NT头是PE文件中标准PE头和可选PE头的总体称谓,还包含一个PE标识.下面是它在Visual C++ 6.0中WINNT.h中的定义: typedef struct _IMAGE_NT_HEADERS64 {     DWORD Signature;     IMAGE_FILE_HEADER FileHeader;     IMAGE_OPTIONAL_HEADER64 OptionalHeader; } IMAG

通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的.我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试.虽然已经

wcf第3步之报文分析及原生调用

最简单的调用当然是服务引用,但是我更想原生调用,所以希望能通过报文有如下研究 1.报文分析 <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-

IP头结构中的checksum

转载请注明原文链接,http://www.cnblogs.com/flyingcloude/p/6992326.html 对于IP头结构中checksum,一开始以为是通过CRC计算出来的,在TCP/IP协议中没有谈到有关这方面的知识.查资料之后,发现在RFC791里有说明. 计算45 00 00 1c 00 0b 00 00 80 01 (b7 53这个不要) c0 a8 01 17 c0 a8 01 1b #include <stdio.h> /* *函数名称:check_sum *