TCP/IP Four Layer Protocol Format Learning(undone)

相关学习资料

tcp-ip详解卷1:协议.pdf

目录

0. 引言
1. 应用层
3. 传输层
4. 网络层

0. 引言

协议中的网络字节序问题

在学习协议格式之前,有一点必须明白,否则我们在观察抓包数据的时候可能会产生疑惑:

1. 协议格式中的字段排布,最高位在左边,记为0bit;最低位在右边,记为31 bit。
2. 4个字节的32bit值以下面的次序传输:
    1) 首先是0~7bit
    2) 其次8~15bit
    3) 然后16~23bit
    4) 最后是24~31bit
这种传输次序称作"big endian字节序"
3. 由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作"网络字节序"
4. 以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序

1. 应用层

0x1: NTP网络协议

NTP有两种不同类型的报文,一种是时钟同步报文,另一种是控制报文(用于网络管理),NTP基于UDP报文进行传输,使用的UDP端口号为123

1. 时钟同步报文

1. LI(Leap Indicator)(2 bits)
    1) 值为"11"时表示告警状态,时钟未被同步
    2) 为其他值时NTP本身不做处理
2. VN(Version Number)(3 bits): 表示NTP的版本号,目前的最新版本为3
3. Mode(3 bits): 表示NTP的工作模式。不同的值所表示的含义分别是:
    1) 0: 未定义
    2) 1: 主动对等体模式
    3) 2: 表示被动对等体模式
    4) 3: 表示客户模式
    5) 4: 表示服务器模式
    6) 5: 表示广播模式或组播模式
    7) 6: 表示此报文为NTP控制报文(MODE_CONTROL)
    8) 7: 预留给内部使用(MODE_PRIVATE)
4. Stratum(8 bits): 系统时钟的层数,取值范围为1~16,它定义了时钟的准确度,这也表明了整个NTP的架构是一种层次型的架构
    1) 层数为1的时钟准确度最高
    2) 准确度从1到16依次递减
    3) 层数为16的时钟处于未同步状态,不能作为参考时钟
5. Poll(8 bits): 轮询时间,即两个连续NTP报文之间的时间间隔
6. Precision(8 bits): 系统时钟的精度
7. Root Delay(32 bits): 本地到主参考时钟源的往返时间
8. Root Dispersion(32 bits): 系统时钟相对于主参考时钟的最大误差
9. Reference Identifier(32 bits): 参考时钟源的标识
10. Reference Timestamp(64 bits): 系统时钟最后一次被设定或更新的时间 

11. Originate Timestamp(64 bits): NTP请求报文离开发送端时发送端的本地时间
12. Receive Timestamp(64 bits): NTP请求报文到达接收端时接收端的本地时间
13. Transmit Timestamp(64 bits): 应答报文离开应答者时应答者的本地时间
14. Authenticator((optional)96 bits): 验证信息 

Relevant Link:

http://bjtime.cn/info/view.asp?id=270
http://www.rfc-editor.org/rfc/rfc958.txt
http://wenku.baidu.com/view/4a7e73c308a1284ac85043a8.html
http://wiki.wireshark.org/SampleCaptures
http://qgjie456.blog.163.com/blog/static/354513672010821241599/
http://www.cnblogs.com/TianFang/archive/2011/12/20/2294603.html

2. 控制报文

控制报文和时钟同步报文的区别仅仅在于"Mode"字段的区别,

1. 常规NTP时间同步报文
模式1~5 

2. NTP控制报文
模式6,由ntpq使用

3. NTP mode 7 (MODE_PRIVATE)
由ntpdc查询和控制工具使用

对于控制报文来说,"Mode"字段的值为6

Relevant Link:

http://wiki.wireshark.org/NTP
http://wiki.wireshark.org/SampleCaptures

3. 传输层

0x1: ICMP Internet控制报文协议

尽管对于ICMP协议属于网络层还是传输层有很多争议,但是从学习协议的严谨性上来说,ICMP应该算是传输层协议,因为ICMP数据报需要被包装在IP数据报的数据部分进行发送,所以ICMP也应该算是IP协议的一个上层协议。

ICMP属于传输层协议。ICMP 的正式规范参见RFC 792 [Posterl 1981b]

和其他大多数协议一样,ICMP有很多种数据报类型,它们的协议格式也不尽相同,我们按照类型的大分类来逐一学习

在ICMP数据报中,头部的类型(8bit)、和代码(8bit)字段决定了这个ICMP数据报的准确类型。类型和代码各占8bit,先决定类型,然后看代码,它们共同决定了这个ICMP数据报的类型

Destination Unreachable Message(目的不可达)

1. 类型
类型码为3
2. 代码
    1) 0: 网络不可达
    2) 1: 主机不可达
    3) 2: 协议不可达
    4) 3: 端口不可达
    5) 4: 需要进行分片但设置了不分片bit
    6) 5: 源站路由失败
    7) 6: 目的网络不认识
    8) 7: 目的主机不认识
    9) 8: 源主机被隔离(作废不用)
    10) 9: 目的网络被强制禁止
    11) 10: 目的主机被强制禁止
    12) 11: 由于服务类型TOS,网络不可达
    13) 12: 由于服务类型TOS,主机不可达
    14) 13: 由于过滤,通信被强制禁止
    15) 14: 主机越权
    16) 15: 优先权中止生效
3. 校验和
4. 4字节的unused字段,置零
5. 原始IP数据报的头部+64bit的数据部分当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节(64bit)。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来

Time Exceeded Message(超时)

1. 类型
类型码为11
2. 代码
    1) 0: 传输期间生存期为0
    2) 1: 在数据报组装期间生存期为0
3. 校验和
4. 4字节的unused字段,置零
5. 原始IP数据报的头部+64bit的数据部分
当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节(64bit)。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来

Parameter Problem Message(参数错误)

1. 类型
类型码为12
2. 代码
    1) 0: 错误信息的指针
3. 校验和
4. 4字节的unused字段,置零
5. 原始IP数据报的头部+64bit的数据部分
当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节(64bit)。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来

Source Quench Message(源站被抑制)

1. 类型
类型码为4
2. 代码
    1) 0: 源站被抑制
3. 校验和
4. 4字节的unused字段,置零
5. 原始IP数据报的头部+64bit的数据部分
当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节(64bit)。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来

Redirect Message(重定向)

1. 类型
类型码为5
2. 代码
    1) 0: 对网络重定向
    2) 1: 对主机重定向
    3) 2: 对服务类型和网络重定向
    4) 3: 对服务类型和主机重定向
3. 校验和
4. Gateway Internet Address
指明重定向后的IP地址
5. 原始IP数据报的头部+64bit的数据部分
当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节(64bit)。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来

对于ICMP Redirect重定向数据报,我们需要注意的,攻击者可以针对指定主机或者路由器发送ICMP Redirect数据报,来强制更新目标主机或路由器的"网关设置",从而劫持目标主机的原始流量。

http://insecure.org/sploits/arp.games.html

Echo or Echo Reply Message(ping)

1. 类型
    1) 0: 回显应答
    2) 8: 回显请求
2. 代码
0
3. 校验和
5. Identifier、Sequence Number
发送方用它们对每次的echo和reply进行匹配
6. 数据

Timestamp or Timestamp Reply Message(ICMP时间戳请求与应答)

ICMP时间戳请求允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始计算的毫秒数,协调的统一时间(Coordinated Universal Time, UTC)

1. 类型
    1) 13: 发送时间戳
    2) 14: 返回时间戳
2. 代码
0
3. 校验和
5. Identifier、Sequence Number
发送方用它们对每次的echo和reply进行匹配
6. Originate Timestamp
请求端填写发起时间戳,然后发送报文
7. Receive Timestamp
应答系统收到请求报文时填写接收时间戳
8. Transmit Timestamp
在
发送应答时填写发送时间戳

4. 网络层

本章节介绍网络层的各种协议、以及格式规范。

(这里给一张网络层总体架构图,尽量包含完整的网络层协议)

0x1: IP 网际协议

IP是TCP/IP协议族中最为核心的协议。RFC 791[Postel 1981a]是IP的正式规范文件: http://www.rfc-editor.org/rfc/rfc791.txt

1. 版本(4bit)
    1) 版本号4: IPv4
    2) 版本号6: IPv6
2. 首部长度(4bit)
首部占32bit(4字节)字的数目(所以首部长度为这个字段值*4),包括任何选项。普通IP数据报(没有任何选择项)字段的值是5(20字节)
3. 服务类型(TOS)(8bit)
    1) 优先权子字段(3bit): 现在已被忽略
    2) TOS子字段(4bit)
        2.1)  Bit 0: 最小时延
        2.2)  Bit 1: 最大吞吐量
        2.3)  Bit 2: 最高可靠性
        2.4)  Bit 3: 最小费用
    3) 未用置0字段(1bit)
在单个IP数据报中,TOS子字段4bit中只能置其中1 bit。如果所有4bit均为0,那么就意味着是一般服务。RFC 1340、RFC 1349详细地描述了TOS的特性:
    1) Domain Name Service
        1.1) UDP Query: 1000: 最小时延
        1.2) TCP Query: 0000: 一般服务
        1.3) Zone Transfer: 0100: 最大吞吐量
        2) NNTP: 0001: 最小费用
    3) ICMP
        3.1) Errors: 0000: 一般服务
        3.2) Requests: 0000: 一般服务
        3.3) Responses: 0000: 一般服务
    4) Any IGP: 0010: 最高可靠性
    5) EGP: 0000: 一般服务
    6) TELNET: 1000: 最小时延
    Telnet要求最小的传输时延,因为人们主要用它们来传输少量的交互数据
    7) FTP
        7.1) Control: 1000: 最小时延
        7.2) Data: 0100: 最大吞吐量
    FTP文件传输则要求有最大的吞吐量
        8) TFTP: 0100: 最大吞吐量
    9) SMTP
        9.1) Command phase: 1000: 最小时延
        9.2) DATA phase: 0100: 最大吞吐量
    10) BOOTP: 0000: 一般服务
对于IP数据报中的TOS字段,我们需要明白的是: 现在大多数的TCP/IP实现都不支持TOS特性,但是在很多Unix系统上对它提供了设置。另外,路由协议如OSPF和IS-IS都能根据这些字段的值进行路由决策。所以,研究TOS还是很有现实意义的
4. 总长度(16bit)
总长度字段是指整个IP数据报的长度(以字节为单位)。利用总长度字段-首部长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。当数据报被分片时,该字段的值也随着变化(关于数据报分片,我们之后会详细学习)
总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为46字节,但是I P数据可能会更短(IP的头部只有20字节,数据部分可以为0)。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容,有多少是padding的内容
5. 标识(16bit)
标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。在分片和重组时会使用到
6. 标志(3bit)
    1) Bit 0: 保留,必须置为0
    2) Bit 1:
        2.1) 0: 可以分组
        2.2) 1: 不可以分组
    3) Bit 2:
        3.1) 0: 已经是最后一个分组了
        3.2) 1: 还有更多分组
7. 片偏移(13bit)
当前分片在完整数据报中的偏移
8. 生存时间TTL(8bit)
TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。
9. 协议(8bit)
该IP数据包携带的的上层协议,这个字段的作用为了实现"分用",所谓分用,即当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)
10. 首部检验和(16bit)
首部检验和字段是根据"IP首部"计算的检验和码(注意,只是首部),它不对首部后面的数据进行计算。
为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个16bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么I P就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传
11. 源IP地址(32bit)
每一份IP数据报都包含源IP地址和目的I P地址,它们都是32 bit的值
12. 目的IP地址(32bit)
每一份IP数据报都包含源IP地址和目的I P地址,它们都是32 bit的值
13. 选项OPTION
选项数据报中的一个"可变长"、"可选信息"。
    1) 安全和处理限制(用于军事领域,详细内容参见RFC 1108[Kent 1991])
    2) 记录路径(让每个路由器都记下它的IP地址)
    3) 时间戳(让每个路由器都记下它的IP地址和时间)
    4) 宽松的源站选路(loose source route)(为数据报指定一系列必须经过的IP地址)
    http://en.wikipedia.org/wiki/Loose_Source_Routing
    5) 严格的源站选路(strict source route)(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)   可以使用: loose: ping –j <hosts>、strict: ping –k <hosts>进行测试
14. Padding填充:
选项字段一直都是以32 bit作为界限,在必要的时候插入值为0的填充字节。这样就保证IP首部始终是32bit的整数倍(这是首部长度字段所要求的,因为它是以2为基底的)
14. 数据
IP数据包携带的上层数据

Copyright (c) 2014 LittleHann All rights reserved

时间: 2024-10-26 07:06:35

TCP/IP Four Layer Protocol Format Learning(undone)的相关文章

Chapter 2 The OSI Model and the TCP/IP protocol suite&#39;

2. The OSI Model and the TCP/IP Protocol Suite The layered model that dominated data communication and networking literature before 1990 was the Open Systems Interconnection (OSI) model. Everyone believed that the OSI model would became the ultimate

【转】TCP/IP协议栈及OSI参考模型详解

OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设备间的兼容性和标准接口: 促进标准化工作: 结构上可以分隔: 易于实现和维护. 20世纪60年代以来,计算机网络得到了飞速增长.各大厂商为了在数据通信网络领域占据主导地    位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA,Novell IPX/SPX协议,Apple公司的AppleT

TCP/IP协议栈及OSI参考模型详解

OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设备间的兼容性和标准接口: 促进标准化工作: 结构上可以分隔: 易于实现和维护. 20世纪60年代以来,计算机网络得到了飞速增长.各大厂商为了在数据通信网络领域占据主导地    位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA,Novell IPX/SPX协议,Apple公司的AppleT

TCP/IP 协议栈及 OSI 参考模型详解

转帖: http://www.codeceo.com/article/tcp-ip-osi-model.html#0-youdao-1-61759-32553cecb956bf88a1550052113e506a OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设备间的兼容性和标准接口: 促进标准化工作: 结构上可以分隔: 易于实现和维护. 20世

【jc1-1】TCP/IP协议栈及OSI参考模型详解

OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设备间的兼容性和标准接口: 促进标准化工作: 结构上可以分隔: 易于实现和维护. 20世纪60年代以来,计算机网络得到了飞速增长.各大厂商为了在数据通信网络领域占据主导地    位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA,Novell IPX/SPX协议,Apple公司的AppleT

2、TCP/IP

TCP/IP协议栈:物理层.数据接口层.网络层.传输层.应用层或网络接口层.网络层.传输层.应用层 TCP/IP协议栈的核心协议:1.TCP2.UDP3.ICMP4.IGMP5.ARP:映射IP→Ethernet6.RARP:映射Ethernet→IP TCP/IP layer-----------------Ipv4A类  : 8位network/24位host   Fisting octet :1~126    127.x.x.x本机回环地址               (0xxxxxxx)

第二章 TCP/IP 基础知识

? TCP/IP ?transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的. ? 2.2 TCP/IP 的标准化 2.2.2 TCP/IP 标准化精髓 TCP/IP 协议始终具有很强的实用性. 相比于TCP/IP ,OSI 之所以未能达到普及,主要原因在于未能尽早的制定可行性较强的协议.未能提出应对技术快速更新的协议以及没有能及时进行后期的改良的方案. 2.2.3 TCP/IP 规范 --RFC 那些需要标准

OSI 七层模型和 TCP/IP 协议比较

OSI (Open System Interconnection), 开放式系统互联参考模型.从下到上七层模型功能及其代表协议: 物理层(Physical) :规定了激活.维持.关闭通信端点之间的机械特性.电气特性.功能特性以及过程特性.该层为上层协议提供了一个传输数据的物理媒体.Bit,比特.典型协议代表:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, IEEE 802.3x(以太网) 物理层, FDDI(Fiber Distribu

TCP/IP的Socket编程

转:http://blog.csdn.net/xywlpo/article/details/6639748 1. TCP/IP.UDP的基本概念 TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,他是一个工业标准的协议集,它是为广域网设计的.其中包含了很多其他的协议,不过以TCP和IP协议为代表.UDP(User Data Protocl),即用户数据报协议,是与TCP相对应的协议,它属于TCP/IP协议族中的