Wireshark捕获分组深入理解TCPIP协之IP协议

上传人:野鹰 文档编号:3200060 上传时间:2017-07-31 格式:DOCX 页数:7 大小:136.02KB
返回 下载 相关 举报
Wireshark捕获分组深入理解TCPIP协之IP协议_第1页
第1页 / 共7页
Wireshark捕获分组深入理解TCPIP协之IP协议_第2页
第2页 / 共7页
Wireshark捕获分组深入理解TCPIP协之IP协议_第3页
第3页 / 共7页
Wireshark捕获分组深入理解TCPIP协之IP协议_第4页
第4页 / 共7页
Wireshark捕获分组深入理解TCPIP协之IP协议_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Wireshark捕获分组深入理解TCPIP协之IP协议》由会员分享,可在线阅读,更多相关《Wireshark捕获分组深入理解TCPIP协之IP协议(7页珍藏版)》请在金锄头文库上搜索。

1、Wireshark 捕获分组深入理解 TCP/IP 协议之 IP 协议 摘要:本文简单介绍了网络层理论知识,详细讲解了 IP 数据报各个字段,并从 Wireshark 俘获分组中选取 IP 数据报进行分析,也阐述了分组和分片的区别。一、IPv4 数据报网络层是处理端到端数据传输的最低层。网络层关注如何将分组从源端沿着网络路径送达目的端,期间可能需要经过许多跳中间路由器。即提供转发(数据从路由器那个接口出去)、选路( 发送方与接收方间的路径)、网络建立( 如 ATM、帧中继)。这里以 IPv4 为例,关于 IPv6 报文格式详见博文 IPv4 与 IPv6 数据报格式详解。图 1 IPv4 数据

2、报格式版本号(version)不同的 IP 协议版本使用不同的数据报格式。首部长度(HL, Internet Head Length)确定 IP 数据报中数据部分实际从哪里开始,包含可变数量的选项 。若 IP 数据报没有包含选项,则 IP 数据报首部长度为 20 字节。服务类型(TOS, Type Of Service)更好地服务不同类型 IP 数据报(如实时数据报 IP 电话应用、非实时通信流 FTP),Cisco 将 TOS 前 3 位标识不同服务等级,即优先级。数据报长度(TL, Total Length)IP 数据报长度,即首部+ 数据。分片:标识(identification)、标志

3、 (flags)、段位移(Fragment Offset)这 3 个字段跟 IP 分片有关,当目的主机从同一个源收到一批数据报时,需要确定这些数据报是完整数据报还是分片后的数据报,数据报首部标识字段解决这个问题,检查数据报的标识号确定哪些数据报真正是同一个较大数据报的片;如何判断最后一个分片已收到,数据报首部标志字段解决这个问题,将最后一片的标志为 0,其他标记为 1;如何顺序重组这些片,这就需要记录每个片的在数据报有效净荷的偏移量,这也确定了片是否丢失。若丢失某些片,则丢弃这个不完整的数据报(不会交给传输层) 。需要可靠传输怎么办呢,由传输层让源重传原始数据摄中的数据(如 TCP)。寿命(T

4、TL, Time To Live)每次数据报经过一台路由器时,该字段的值减 1,若 TTL 字段减为 0,则丢弃该数据报,从而确保数据报不会永远在网络循环。上层协议(Protocol)该字段用于指明 IP 数据报的数据部分应该交给哪个传输层协议(6 为 TCP、17 为UDP)。首部检查和(Header Checksum)只是对 IP 首部进行检验, 对整个 TCP/UDP 报文段检验交由 TCP/UDP 完成。将首部中的每两个字节当作一个数,用反码运算对这些数求和,该和按 1 补码值存放在检查和字段。当路由器收到 IP 数据报时,计算其首部检查和,与该字段值比较,若出错则丢弃该数据报。注:因

5、为 TTL 字段及选项字段可能改变,所以每个路由器上的检查和都须重新计算并存放在原处。(检查后,再更新 )源和目的 IP 地址 (Source/Destination Address)选项(Options)选项字段允许 IP 首部被扩展,由此导致数据报首部长度可变,故不能预先确定数据字段从何开始,同时也使路由器处理一个 IP 数据报所需时间差异很大 (有的要处理选项,有的不需要)。数据(Data)当使用 TCP/UDP 协议时,数据即为传输层报文段(TCP/UDP)。数据字段也可承载其他类型数据,如 ICMP 报文段。二、实例解析以请求百度首页基本 HTML 为例,因 HTTP 报文太大(38

6、35 字节),网络层对其进行分片,共 4 片,如下图(截自 Wireshark 俘获的 HTTP 响应报文 ):图 2 数据分片实例整个 HTTP 报文传输示意图如下:图 3 HTTP 报文传输实例示意图2.1 分片IP 数据报首部字段的 标识 (identification)、标志(flags)、段位移(Fragment Offset) 用来处理分片。当目的主机从同一个源收到一批数据报时,需要确定这些数据报是完整数据报还是分片后的数据报,数据报首部标识字段解决这个问题,检查数据报的标识号确定哪些数据报真正是同一个较大数据报的片;如何判断最后一个分片已收到,数据报首部标志字段解决这个问题,将最

7、后一片的标志为 0,其他标记为 1;如何顺序重组这些片,这就需要记录每个片的在数据报有效净荷的偏移量,这也确定了片是否丢失。若丢失某些片,则丢弃这个不完整的数据报(不会交给传输层) 。需要可靠传输怎么办呢,由传输层让源 重传原始数据摄中的数据(如 TCP)。将该 4 个 IP 数据报(组成该完整的 HTTP 报文) 的标识、标志、段位移部分抽出来,如下图所示:图 4 HTTP 响应报文的 4 个 IP 数据报可以看出,IP 数据报并没有分片,这是因为这些 IP 数据报封装成帧并没有超过MTU(以太网 MTU 为 1500 字节)。蛮想找一个有分片的 IP 数据报分析下,可惜俘获的分组没有:-(

8、不尽要问,当报文太大时,什么时候划分报文呢?主要是在两个地方:传输层 TCP 分组、网络层 IP 分片。(1)分组TCP 把应用程序交给它的报文分成合适的小块交给下面网络层,要不要分取决于应用层报文是否大于 MSS(想想 TCP 连接建立时最大报文段 MSS 大小的协商,注 MSS 仅包含 TCP 报文段的净荷数据,不包括 TCP 首部),怎么分取决于特定的分组算法。本例将3836 字节长度 HTTP 报文分成:411+1440+1440+545。(2)分片IP 数据报在发送方与目的地间传输可能选择不同的路径,路径上的每段链路可能使用不同的链路层协议,协议可能具有不同的最大传输单(MTU,链路

9、层数据报能承载的最大数据量)。当出链路的 MTU 比 IP 数据报的长度小时,需要将过大的 IP 数据报分片。IPv4 数据报首部字段标识、标志、偏移量解决这个问题。值得注意的是,IP 数据报分片在网络层重组,重组好了,再交给传输层。TCP 报文段在传输层重组,重组好了,再交给应用层。2.2 IP 数据报实例接下来,取一个完整 IP 数据报分析 (以第一个数据报为例,即 27),如下:图 4 IP 数据报实例IP 数据报首部没有选项字段,长度为 20 字节,数据报长度 451=IP 数据报首部长度20(没有选项字段)+TCP 首部长度 20(没有选项字段)+TCP 报文段的数据字段 411(实

10、为HTTP 报文前 411 字节)。最后附上我向春哥取经的东西:IP 分片和 TCP 的分组有什么本质的区别么 ?ans:IP 是 TCP 的底层为什么不能把大的数据都丢到 IP 层去而还需要 TCP 的分组呢ans:ip 分片用的不多的通常都是在跨链路的时候,没办法才分的同时是解决物理层的问题而 ip 分组解决的是连续传输大数据的问题,两者要解决的问题不同分片解决物理层的问题?这个怎么理解?ans:比如一个快速网络 (基于网线的) MTU 是 1500 结果一个 ip 包通过路由器后进入了一个电话线网络,这个时候 MTU 是 500,于是路由器就会对该 ip 包进行分片分享到: 上一篇: 网络编程:Reactor 与 Proactor 的概念 下一篇: 使用 ATL 窗口类

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号