注意命令和参数之间要有空格
最常用的方式为:
ping ip地址或网址??用于测试与特定目标之间的网络连通性,中间有一空格 ping ip地址或网址 –t?用于测试与特定目标之间的连续连通性,中间有两个空格
(2) traceroute命令
traceroute命令用来获得从本地计算机到目的主机的路径信息。在MS Windows中该命令为tracert,而UNIX系统中则为traceroute。traceroute通过发送数据报到目的设备并直到其应答,通过应答报文得到路径和时延信息。一条路径上的每个设备traceroute要测3次,输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)或IP地址。
该程序通过向目的地发送具有不同生存时间(TTL)的ICMP回送请求报文,以确定至目的地的路由。路径上的每个路由器都要在转发该ICMP回送请求报文之前将其TTL值至少减1,因此TTL是有效的跳转计数。当报文的TTL值减少到0时,路由器向源系统发回ICMP超时信息。通过发送TTL为1的第一个回送请求报文并且在随后的发送中每次将TTL 值加1,直到目标发送回送应答报文或达到最大TTL值,由此tracert可以获得从本地计算机到目的主机的路径信息。
在Windows系统下执行的tracert命令描述如下:
tracert [-d] [-h maximum_hops] [-j computer – list] [-w timeout] target_name 参数说明:
-d:指定不对计算机名解析地址。
-h maximum_hops:指定查找目标的跳转的最大数目。 -j computer - list:指定在computer - list中松散源路由。 -w timeout:等待由timeout对每个应答指定的毫秒数。 Target_name:目标计算机的名称。
IP报文格式
如错误!未找到引用源。7所示,IP数据报由首部和数据两部分组成。
IP报头 IP数据 图 4-7 IP数据报
首部又分为两部分,前一部分是固定长度的,必不可少,共20字节;后一部分是一些可选字段,长度可变,如错误!未找到引用源。所示。
比特 0 1 优 先 级 2 3 D 4 T 5 R 6 C 7 未用 比特 0 版 本 4 首部长度 8 服 务 类 型 标 识 16 标志 协 议 源 地 址 目 的 地 址 19 24 总 长 度 片 偏 移 31 首 部 固 定 部 分 可变 部分 生 存 时 间 首 部 检 验 和 可 选 字 段 (长 度 可 变) 数 据 部 分 填 充 传送 首 部 数 据 部 分 IP 数据报
图 4-8 IP数据报首部
TCP的报文格式
TCP的报文段分为首部和数据两部分,如错误!未找到引用源。所示。
32 bit 比特 0 8 16 24 31 源 端 口 序 号 确 认 号 TCP 首部 数据 偏移 保 留 U A P R S F R C S S Y I G K H T N N 窗 口 20字节的 固定首部 目 的 端 口 检 验 和 选 项 (长 度 可 变) 紧 急 指 针 填充 TCP 报文段 发送在前 IP 首部 TCP 首部 TCP 数据部分 IP 数据部分 图 4-9 TCP报文段的总体结构
TCP的报文段首部又分为固定部分和选项部分,固定部分共20字节。如错误!未找到引用源。9所示,主要字段有:源端口、目的端口、序号、确认号、数据偏移、保留、码元比特、窗口、校验和、紧急指针、选项和填充字段,各字段的意义可参见其他参考文献。正是这些字段作用的有机结合,实现了TCP的全部功能。
TCP协议采用运输连接的方式传送TCP报文,运输连接包括连接建立、数据传送和连接释放三个阶段。
TCP连接的建立
TCP连接的建立采用了三次握手(Three -way Handshake)方式。
首先,主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同步位SYN应置1,同时选择一个序号x,表明在后面传送数据时的第一个数据字节的序号是x + 1,如图 4-10所示。
主机 A 主机 B 主动打开 连接请求 SYN, SEQ = x SYN, ACK, SEQ = y, ACK= x ? 1 确认 ACK, SEQ = x + 1, ACK = y ? 1 被动打开 确认
图 4-10 TCP连接的建立
然后,主机B的TCP收到连接请求报文段后,若同意,则发回确认。在确认报文段中应将SYN和ACK都置1,确认号应为x + 1,同时也为自己选择一个序号y。
最后,主机A的TCP收到B的确认后,要向B发回确认,其ACK置1,确认号为y + 1,而自己的序号为x + 1。TCP的标准规定,SYN置1的报文段要消耗掉一个序号。同时,
运行客户进程的主机A的TCP通知上层应用进程,连接已经建立。当主机A向B发送第一个数据报文段时,其序号仍为x + 1,因为前一个确认报文段并不消耗序号。
当运行服务器进程的主机B的TCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。
另外,在TCP连接的建立过程中,还利用TCP报文段首部的选项字段进行双方最大报文段长度MSS(Maximum Segment Size)协商,确定报文段的数据字段的最大长度。双方都将自己能够支持的MSS写入选项字段,比较之后,取较小的值赋给MSS,并应用于数据传送阶段。
TCP数据的传送
为了保证TCP传输的可靠性,TCP协议采用面向字节的方式,将报文段的数据部分进行编号,每一个字节对应一个序号。并在连接建立时,双方商定初始序号。在报文段首部中,序号字段和数据部分长度可以确定发送方传送数据的每一个字节的序号,确认号字段则表示接收方希望下次收到的数据的第一个字节的序号,即表示这个序号之前的数据字节均已收到。这样,既做到了可靠传输,又做到了全双工通信。
当然,数据传送阶段有很多非常复杂的问题和情况,如流量控制、拥塞控制、重传控制等,这些内容将在下一部分介绍。
TCP连接的释放
在数据传输结束后,通信的双方都可以发出释放连接的请求。TCP连接的释放采用所谓四次握手方式。
首先,设错误!未找到引用源。11中主机A的应用进程先向其TCP发出释放连接请求,并且不再发送数据。TCP通知对方要释放从A到B这个方向的连接,将发往主机B的TCP报文段首部的终止位FIN置1,其序号x等于前面已传送过的数据的最后一个字节的序号加1。
主机 A 主机 B 应用进程 释放连接 A 不再发送报文 FIN, SEQ = x ACK, SEQ = y, ACK= x ? 1 FIN, ACK, SEQ = y, ACK = x + 1 ① 通知主机 应用进程 确认 应用进程 释放连接 B 不再发送报文 ② 确认 ACK, SEQ = x + 1, ACK = y ? 1 图 4-11 TCP连接释放过程
主机B的TCP收到释放连接通知后即发出确认,其序号为y,确认号为x + 1,同时通知高层应用进程,如错误!未找到引用源。11中的箭头① 。这样,从A到B的连接就被释放了,连接处于半关闭(half - close)状态,相当于主机A对主机B说:“我已经没有数据要发送了。但你如果还发送数据,我仍接收。”
此后,主机B不再接收主机A发来的数据。但若主机B还有一些数据要发往主机A,则可以继续发送(这种情况很少)。主机A只要正确收到数据,仍应向主机B发送确认。若主机B不再向主机A发送数据,其应用进程就通知TCP释放连接,如错误!未找到引用源。中的箭头②。主机B发出的连接释放报文段必须将终止位FIN和确认位ACK置1,并使其序号仍为y(因为前面发送的确认报文段不消耗序号),但还必须重复上次已发送过的ACK = x + 1。主机A必须对此发出确认,将ACK置1,ACK = y + 1,而自己的序号是x + 1,因为根据TCP标准,前面发送过的FIN报文段要消耗一个序号。这样把B到A的反方向连接释放掉。主机A的TCP再向其应用进程报告,整个连接已经全部释放。
UDP的报文格式
UDP协议是User Datagram Protocol的缩写,主要用来支持在计算机之间传输数据的网络应用,与TCP协议一样,UDP协议也位于IP协议之上,UDP报文是封装在IP 报文里进行传输的。
UDP协议是基于数据报文的协议,在传输过程中每一次都最大限度的传输数据。同时,UDP协议又是不可靠的,在传输数据之前不建立连接,传输过程中没有报文确认信息。DNS协议是应用层协议,是基于UDP协议的。
UDP报文的格式见图 4-1212。
字节 4 源 IP 地址 字节 12 伪首部 4 目的 IP 地址 2 源端口 2 目的端口 1 0 1 17 2 长 度 2 UDP长度 2 检验和 UDP 用户数据报 首 部 数 据 发送在前 首 部 数 据 IP 数据报 图 4-12 UDP用户数据报的首部和伪首部
用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8 个字节(图 4-1212),由4个字段组成,每个字段都是两个字节。各字段意义如下:
(1) 源端口 源端口号。 (2) 目的端口 目的端口号。
(3) 长度 UDP用户数据报的长度。
(4) 检验和 防止UDP用户数据报在传输中出错。
四、实验原理
以太网数据传输通过广播实现,在同一网段的所有网卡事实上都可以访问在共享的物理介质上传输的所有数据。但系统正常工作时,一个合法的网络接口应只响应两种数据帧:一是帧上的目标MAC地址与本地网卡地址相符;二是帧的目标地址是广播地址,除此之外数据帧将被丢弃不作处理。要监听流经网卡的不属于自己主机的数据,则必须将用于监听的计算机的网卡设置在“混杂”方式,绕过系统正常工作的处理机制,直接访问网络底层,这时就可以监听到同一冲突域上传输的数据帧。
应当注意的是当用于监听的主机连接在共享型以太网集线器上时,采用“混杂”方式是可以监听到同一冲突域上传输的数据帧;但当用于监听的主机连接在交换机上时,由于交换机通常不会将数据帧广播到所有端口上(除非在其MAC地址——端口映射表内找不到相应的表项),因而不能利用以太网络的广播特性进行监听。这时,可利用交换机的端口镜像(Port Mirror)功能实现监听或者取消“混杂”方式只监听本机的数据帧。
常用工具和开发系统
1. ETHEREAL、Sniffer Pro等以太网数据包监听工具 2. Libpcap(Linux下)函数库
3. Winpcap(Window下的Libpcap)函数库
实验环境与分组
? 安装有ETHEREAL软件的联网计算机1台,每组一人。
五、实验步骤
步骤1 安装并运行Ethereal软件。
步骤2 选取Capture→Option菜单项,弹出“Capture Option”对话框(见错误!未找到引用源。)。
图 4-13 “Define Filter – Monitor”对话框
步骤3 在对话框的“Interface”栏上选择需要监听的网卡,如果勾选“Capture packets in promiscuous mode”则设置为以“混杂”方式监听。
步骤4 点击“Start”按钮,开始截获数据报文。如图1-14:
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育实验四 IP协议分析 (2)全文阅读和word下载服务。
相关推荐: