IP 网际协议
1. IP数据首部长度:
4位版本号 :
4 位,用于标明 IP 版本号,0100 表示 IPv4,0110 表示 IPv6。目前常见的是 IPv4。
4位首部长度:
首部长度是占4位,可表示的最大十进制值是15. 这个字段的单位是32位字(一个32位字长4个字节)。所以当 IP 首部长度为 1111 (就是十进制15),首部长度就达到最大值 60 字节,这个不常用,为减小开销,常用20字节(首部长度为 0101, 5*4=20) 。
服务类型(TOS) :
分别有:最小时延、最大吞吐量、最高可靠性、最小花费 4 种服务,如下图所示。4 个标识位只能有一个被置为 1 :
TOS包括共8位,包括3 bit的优先权字段(取值可以从000-111所有值),4 bit的TOS子字段和1 bit未用位但必须置0。
3bit的8个优先级的定义如下:
111--Network Control(网络控制);
110--Internetwork Control(网间控制);
101--Critic(关键);
100--Flash Override(疾速);
011--Flash(闪速);
010--Immediate(快速);
001--Priority(优先);
000--Routine(普通)。
优先级6和7一般保留给网络控制数据使用,如路由。
优先级5推荐给语音数据使用。
优先级4由视频会议和视频流使用。
优先级3给语音控制数据使用。
优先级1和2给数据业务使用。
优先级0为默认标记值。
在标记数据时,既可以使用数值,也可以使用名称(英文名称)。
4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
Telnet、Rlogin这两个交互应用要求最小的传输时延,FTP文件传输要求最大吞吐量,最高可靠性是指网络管理(SNMP)和路由选择协议。用户网络新闻要求最小费用
总长度 :
16 位,报头长度加上数据部分长度,便是数据报的总长度。IP 数据报最长可达 65535 字节。
标识 :
16 位,接收方根据分片中的标识字段相不相同来判断这些分片是不是同一个数据报的分片,从而进行分片的重组。通常每发送一份报文它的值就会加 1。
标志 :
3 位,用于标识数据报是否分片。其中的第 2 位是不分段(DF)位。当 DF 位被设置为 1 时,则不对数据包进行分段处理;第 3 位是分段(MF)位,除了最后一个分段的 MF 位被设置为 0 外,其他的分段的 MF 位均设置为 1。
偏移 :
13 位,在接收方进行数据报重组时用来标识分片的顺序。
生存时间(TTL) :
8 位,用于设置数据报可以经过的最多的路由器个数。TTL 的初始值由源主机设置(通常为 32 或 64),每经过一个处理它的路由器,TTL 值减 1。如果一个数据报的 TTL 值被减至 0,它将被丢弃。
协议 :
8 位,用来标识是哪个协议向 IP 传送数据。ICMP 为 1,IGMP 为 2,TCP 为 6,UDP 为 17,GRE 为 47,ESP 为 50。
首部校验和 :
根据 IP 首部计算的校验和码。
源 IP 和目的 IP :
数据报头还会包含该数据报的发送方 IP 和接收方 IP。
选项 :
是数据报中的一个可变长、可选的信息,不常用,多用于安全、军事等领域。
____________________________________________________________________________________________________________________
wireshark 是一个非常好的网络抓包分析工具。
Riverbed Technology是一中先进的广域网技术,可以大幅度提高传输速度。
ip包实例分析:
要分析IP包,首先要知道 IP包的包头格式,各种计算机网络的书籍都有介绍,必须了解该协议分析包才有意义,IPv4首部一般是20字节长,该协议如下:
下面使用Ethereal抓取一个特定的IP包,然后根据该协议分析该IP包。
使用Ethereal抓取的IP包如下: 我用不同的框框划分出来了,便于分析。
首先,开始的 6字节+ 6字节 + 2字节不属于IP包包头本身。
(1)“ 00 e0 4c 5f 97 1b ” 目的主机的MAC地址
(2)“ 00 1a 4d 28 62 ff ” 源主机的MAC地址:
(3)“08 00 ” 包类型: 08 00 为 IP包 后面的开始为真正的IP包包头,可以根据上面的协议进行分析了。
(4)“45”,其中“4”是IP协议的版本(Version),说明是IP4 “5”指本IP包的包头长度为 5X4 = 20 字节
(5)“00”服务类型(Type of Service)
(6)“00 40”是IP数据报文总长,包含头部以及数据,这里表示4X16 = 64字节(注:00 40为16进制表示)
(7) " 62 06 "、" 40 00 " 表示认证、标志、段偏移:主要用于数据报的分段
(8) " 40" 表示一个IP数据流的生命周期,用Ping显示的结果,能得到TTL的值,很多文章就说通过TTL位来判别主机类型。因为一般主机都有默认的TTL值,不同系统的默认值不一样.
(9)" 06 " 很重要,表示传输层的协议类型(Protocol),06表示TCP协议
(10)"8b e5" 为校验和
(11)"c0 a8 0c 34" 源地址的IP : 即192.128.12.52
(12)"79 c2 06 2e"目的地址的IP:即121.194.6.46 后面接着的就是IP的数据内容了,IP包包头分析就到此为止,其实分析包头并不难,UDP、ARP包的分析可以按照本文的思路,按照协议一一分析即可。
IP 网际协议的更多相关文章
- 《TCP/IP详解 卷1:协议》第3章 IP:网际协议
3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输(见图1-4).许多刚开始接触TCP/IP的人对IP提供不可靠.无连接的数据报 ...
- IP网际协议 - IP首部,IP路由选择,子网掩码
IP首部 4个字节的32 bit值以下面的次序传输:首先是0-7 bit,其次8-15 bit,然后1 6-23 bit,最后是24~31 bit.这种传输次序称作big endian字节序.由于T ...
- IP网际协议
IP分类 IP地址分为网络号和主机号,5类不同的IP地址格式如下: A类地址每个网段内最多有224个,也就是16,777,214个. B类地址每个网段内最多有216个,也就是65535个. C类地址每 ...
- TCP/IP 笔记 1.3 IP:网际协议
---恢复内容开始--- I P是T C P / I P协议族中最为核心的协议.所有的 T C P.U D P.I C M P及I G M P数据都以I P数据报格式传输. 不可靠( u n r e ...
- TCP/IP基础
TCP/IP 是用于因特网 (Internet) 的通信协议. 计算机通信协议是对那些计算机必须遵守以便彼此通信的规则的描述. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的 ...
- 温故知新--计算机网络 iso/osi七层模型 tcp/ip四层模型
ISO七层模型由下至上为1至7层,分别为: 应用层(Application layer) 表示层(Presentation layer) 会话层(Session layer) 传输层(Transpor ...
- 《TCP/IP详解 卷1:协议》读书笔记
第一章 概述 协议栈 应用层 HTTP,FTP 运输层 TCP, UDP 段(Segment) 网络层 IP, ICMP, IGMP 数据报(Datagram) 链路层 帧(Frame) 物理 ...
- 计算机网络自学之路------IP协议(1)
1)TCP/IP模型与OSI对应 2)TCP/IP集每层主要协议 3)IP协议 4)IP地址的命名与使用 5)子网与子网掩码 1)TCP/IP模型与OSI对应关系 我们看到,TCP/IP只有四层与OS ...
- c++游戏服务器编程学习笔记(一)TCP/IP
1. c++游戏服务器编程c++运行效率非常高2. TCP传输控制协议IP网际协议Socket 3.Linux 乌班图开源第三方库BOOST 4.80%游戏服务器端用C++工作量最大的地方是具体的游戏 ...
随机推荐
- 程序开发:MVC设计模式与应用
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面 显示分离的方法组织代 ...
- python 字典排序,列表排序详细
在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按“键”排序和按“值”排序. 1.按“值 ...
- Linux平台从文件中查找字符赋值于变量
以telnet方式登录Linux主机,在默认目录下用命令创建一个包含DUT wanIP的文本文件.[root] echo wanIP=88.0.100.253 > ./wanIP.txt在默认目 ...
- 其他应用和技巧-用Json格式来保存数据
-------------------- <script type="text/javascript"> //定义json变量 ...
- spark介绍
什么是Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hado ...
- JavaScript join() 方法
http://www.w3school.com.cn/jsref/jsref_shift.asp JavaScript Array 对象 定义和用法 join() 方法用于把数组中的所有元素放入一个字 ...
- 一个字符串搜索的Aho-Corasick算法
Aho和Corasick对KMP算法(Knuth–Morris–Pratt algorithm)进行了改进,Aho-Corasick算法(Aho-Corasick algorithm)利用构建树,总时 ...
- 解决在IIS中调用Microsoft Office Excel组件后进程无法正常退出的问题
来源:http://www.cnblogs.com/ahui/archive/2013/03/05/2944441.html 有一个项目用到Excel组件产生报表,本以为这个通用功能是个很简单的cas ...
- SQL查询表,表的所有字段名,SQL查询表,表的所有字段名
SQL查询表,表的所有字段名 2011-07-29 10:21:43| 分类: SQLServer | 标签:表 sql 字段 |举报 |字号 订阅 SQL查询表,表的所有字段名 SQ ...
- 不注册COM组件直接调用接口
本文以COM组件AppTest.dll为例,AppTest.dll中提供了ITest接口,在不使用regsvr32命令向系统注册的情况下创建ITest接口并调用. 一.导入组件或类型库: 在C++中使 ...