网络协议实践
网络工程
《网络协议实践》 课程设计报告
姓 名: 学 号: 班 级:
XX XX XX
签名:
目 录
第一章
TCP 协议 ...........................................................................................................................................3
1TCP 协议基础 .............................................................. 3 1.1 什么是TCP 协议 ......................................................... 3 1.2 报文类型与格式.......................................................... 3 1.3TCP 连接的建立 .......................................................... 3 1.4TCP 连接的释放 .......................................................... 4 2抓包验证TCP 协议 ......................................................... 5 2.1实验环境 ................................................................ 5 2.2实验步骤与实验结果分析 .................................................. 5 2.2.1建立TCP 连接 ......................................................... 5 2.2.2释放TCP 连接 .......................................................... 6
第二章 ARP 协议 . ..................................................................................................................................................9
1 ARP 协议基础 ............................................................. 9 1.1什么是ARP 协议 ......................................................... 9 1.2ARP 欺骗 ................................................................ 9 1.3ARP 的报文格式 ........................................................... 9 2抓包验证ARP 协议 ......................................................... 10 2.1实验环境 ............................................................... 10 2.2实验步骤与实验结果分析 ................................................. 10 2.2.1建立连接 ............................................................. 10 3模拟ARP 欺骗 ............................................................. 12 3.1实验环境及原理 ......................................................... 12 3.2实验步骤与结果 ......................................................... 12
第三章OSPF 路由协议验证分析 . ....................................................................................................................14
1OSPF 协议基础 ............................................................ 14 1.1OSPF 协议简介 .......................................................... 14 1.2OSPF 的HELLO 包 ........................................................ 14 1.2.1HELLO 包的作用以及所包含的信息 . ....................................... 14 1.3 OSPF 邻居关系 .......................................................... 15 1.3.1 邻接关系建立的4个阶段:.............................................. 15 1.3.2.OSPF 路由器在完全邻接之前, 所经过的几个状态 ........................... 15 2 抓包验证OSPF 协议........................................................ 15 2.1 实验环境............................................................... 15 2.2实验步骤与实验结果分析 ................................................. 15 2.2.1建立连接 ............................................................. 15 2.2.2HELLO 包 . ............................................................. 16 2.2.3D ATABASE D ESCRIPTION 包: ............................................. 18 2.2.4L INK S TA TE R EQUEST .................................................... 22 2.2.5L INK S TA TE U PDA TE 和L INK S TA TE A CKNOWLEDGE ........................... 23 3实验结论 ................................................................. 25
网络协议实践
第一章 TCP 协议
1TCP 协议基础
1.1 什么是TCP 协议
TCP 协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。TCP 提供端到端、全双工通信;采用字节流方式,如果字节流太长,将其分段;提供紧急数据传送功能。尽管TCP 和UDP 都使用相同的网络层(IP ),TCP 却向应用层提供与UDP 完全不同的服务。TCP 提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP 的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP 连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。 在一个TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于TCP 。
1.2 报文类型与格式
图1.2TCP 报文的包头格式
1.3TCP 连接的建立
TCP 是因特网中的传输层协议,使用三次握手协议建 立连接。当主动方发出SYN 连接请求后,等待对方回答SYN ,ACK 。这种建立连接的方法可以防止产生错误的连接,TCP 使用的流量控制协议是可变大小的 滑动窗口协议。第一次握手:建立连接时,客户端发送SYN 包(SEQ=x)到服务器,并进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收 到SYN 包,必须确认客户的SYN(ACK=x+1),同时自己也送一个SYN 包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。第三次握手:客户端收到服务器的
SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入Established 状态,完成三次握手。如图
图1.3TCP 连接的建立
1.4TCP 连接的释放
数据传输结束后,通信的双方都可释放连接。
1、现在A 的应用进程先向其TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。
2、B 发出确认,确认号 ack = u +1,而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收..
3、若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接, 4、A 收到连接释放报文段后,必须发出确认。
在确认报文段中 ACK = 1,确认号 ack w 1,自己的序号 seq = u + 1。 TCP 连接必须经过时间 2MSL 后才真正释放掉;如下图
2抓包验证TCP 协议
2.1实验环境
在gn3中使用wireshark 抓包进行分析
2.2实验步骤与实验结果分析
2.2.1建立TCP 连接
1.打开gns3,建立拓扑图,连接启动wireshark 。如图:
2.R1 telnet R2的IP 12.1.1.2。得到TCP 建立连接的3次握手。如下图:
从上图可以直观的看出TCP 连接的3此握手。一下具体说明; 3.第一个数据包如图:
由主机向服务器发送数据包,其中sequence number=x=0,标志位SYN=1。
4.第二个数据包如图:
服务器向主机回数据包,其中sequence number=y=0,acknowledgement number=x+1=1 标志位SYN=1,ACK=1
5.第三个数据包如图:
主机向服务器发送确认包,其中sequence number=x+1=1,acknowledgement number=y+1=1 标志位ACK=1
2.2.2释放TCP 连接
1.TCP 连接的释放有四步,如图:
2.第一个数据包如图:
主机向服务器发送连接断开报文, sequence number=x=317, acknowledgement number=y=66 标志位FIN=1,ACK=1
3.第二个数据包如图:
服务器向主机发送第一个报文,为确认报文, sequence number=y=66,
acknowledgement number=x+1=318 标志位
ACK=1
从主机到服务器这个方向的连接就释放了,TCP 连接处于半关闭状态。服务器若发送数据,主机仍要接收
4.第三个数据包如图: 服务器向主机发送第二个报文, sequence number=y=66,
acknowledgement number=x+1=318
意为若没有要向主机发送的数据,其应用进程通知 TCP 释放连接。 标志位FIN=1,ACK=1
5.第四个数据包如图: 主机向服务器发送第二个报文, sequence number=x+1=318, acknowledgement number=y+1=67 标志位
ACK=1
至此,四次握手结束,TCP 连接断开。
第二章 ARP 协议
1 ARP 协议基础
1.1什么是ARP 协议
ARP 是Address Resolution Protocol(RFC826)的缩写。中文译做“地址解析协议”,本质是完成网络地址到物理地址的映射,具体到以太网,它使用的是动态绑定转换的方法。 在TCP/IP协议中,每一个网络结点是用IP 地址标识的,IP 地址是一个逻辑地址。而在以太网中数据包是靠48位MAC 地址(物理地址)寻址的。因此,必须建立IP 地址与MAC 地址之间的对应(映射)关系,ARP 协议就是为完成这个工作而设计的。 其作用为通过IP 地址寻找主机的MAC 地址。
1.2ARP 欺骗
ARP 协议是建立在信任局域网内所有结点的基础上的,它很高效,但却不安全。它是无状态的协议,不会检查自己是否发过请求包,也不管(其实也不知道)是否是合法的应答,只要收到目标MAC 是自己的ARP reply包或arp 广播包(包括ARP request和ARP reply),都会接受并缓存。这就为ARP 欺骗提供了可能,恶意节点可以发布虚假的ARP 报文从而影响网内结点的通信,甚至可以做“中间人”。
当局域网中的某台机器B 向A 发送一个自己伪造的ARP 应答,而如果这个应答是B 冒充C 伪造来的,即IP 地址为C 的IP ,而MAC 地址是伪造的,则当A 接收到B 伪造的ARP 应答后,就会更新本地的ARP 缓存,这样在A 看来C 的IP 地址没有变,而它的MAC 地址已经不是原来那个了。在A 上C 的MAC 地址被改变成一个不存在的MAC 地址,这样就会造成网络不通,导致A 不能Ping 通C ,这就是一个简单的ARP 欺骗。
ARP 欺骗方式:
伪装成被攻击主机广播ARP 请求 伪装成被攻击者进行ARP 应答 伪装成网关进行ARP 应答
1.3ARP 的报文格式
硬件类型指明发送方想知道的硬件接口类型。对以太网,值为1;
协议类型指明发送方提供的高层协议地址类型。对TCP/IP互联网,采用IP 地址,值为十六机制的0806;
操作指明ARP 的操作类型,ARP 请求为1,ARP 响应为2,RARP 请求为3,RARP 响应为4。
在以太网环境下的ARP 报文,硬件地址为48位(6个八位组)
2抓包验证ARP 协议
2.1实验环境
在gn3中使用wireshark 抓包进行分析
2.2实验步骤与实验结果分析
2.2.1建立连接
1. 在GN3中建立拓扑图,在R1上
PING R2
2. 抓到的ARP 报文;如图:
3. 第一个数据包
第一个包如图:
为主机发送ARP 广播寻找网关12.1.1.2
源MAC 为自己,目的MAC 为广播地址255.255.255.255, ARP 包中opcode 为操作,值为0x0001,意为查询(request ) 目标IP 为12.1.1.2为网关地址,目标MAC 为未知
4. 第二个数据包
第二个包如图:
为网关回应主机的arp 请求报文源MAC 为网关, 目的MAC 为主机
ARP 包中opcode 为操作,值为0x0002,意为回复(reply ) Sender MAC address 为网关MAC
当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
ARP 保存在cache 中的项目都设置了生存时间,凡是超过生存时间的项目都将从cache 中删除
3模拟ARP 欺骗
3.1实验环境及原理
主机IP :192.168.1.37 虚拟机IP192.168.1.35。Sniffer 安装在虚拟机上。
原理:主机与虚拟机之间能正常通信,主机上有MAC 地址映射表,现在要模拟ARP 欺骗,在虚拟机上用sniffer 构造虚假报文,将虚拟机192.168.1.35的MAC 地址做修改,之后发给主机,以使主机的MAC 地址表中相关项目更改,主机与虚拟机之间便无法通信,以达欺骗目的。
3.2实验步骤与结果
1. 主机ping 虚拟机192.168.1.35 能够ping 通
2. 查看虚拟机和主机接口的MAC 地址表
3. 在虚拟机里面用sniffer 构造报文,发送地址为192.168.1.37,更改192.168.1.35和网卡的映射,将00-0c-29-7a-95-50中的7a 改成00: 修改前的报文:
将7a 修改成了
00
4. 在接口处查看修改后的mac 地址
5. 然后PING192.168.1.35。请求超时,说明ARP 欺骗成功。
由此可见ARP 欺骗实验成功,主机与虚拟机间的通信中断。
第三章OSPF 路由协议验证分析
1OSPF 协议基础
1.1OSPF 协议简介
链路是路由器接口的另一种说法,因此OSPF 也称为接口状态路由协议。OSPF 通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF 路由器使用这些最短路径构造路由表。
OSPF 路由协议是一种典型的链路状态(Link-state )的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System ),即AS ,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS 中,所有的OSPF 路由器都维护一个相同的描述这个AS 结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF 路由器正是通过这个数据库计算出其OSPF 路由表的。
作为一种链路状态的路由协议,OSPF 将链路状态广播数据LSA (Link State Advertisement )传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
1.2OSPF 的hello 包
1.2.1hello 包的作用以及所包含的信息
1. 用于发现邻居
2. 在成为邻居之前, 必须对Hello 包里的一些参数进行协商 3.Hello 包在邻居之间扮演着keepalive 的角色 4. 允许邻居之间的双向通信
5. 用于在NBMA(Nonbroadcast Multi-access)网络上选举DR 和BDR Hello Packet包含以下信息: 1. 源路由器的RID 2. 源路由器的Area ID 3. 源路由器接口的掩码
4. 源路由器接口的认证类型和认证信息 5. 源路由器接口的Hello 包发送的时间间隔 6. 源路由器接口的无效时间间隔 7. 优先级
8.DR/BDR接口IP 地址 9. 五个标记位(flag bit) 10. 源路由器的所有邻居的RID
1.3 OSPF邻居关系
1.3.1 邻接关系建立的4个阶段:
1. 邻居发现阶段
2. 双向通信阶段:Hello 报文都列出了对方的RID ,则BC 完成. 3. 数据库同步阶段: 4. 完全邻接阶段: full adjacency
邻居关系的建立和维持都是靠Hello 包完成的, 在一般的网络类型中,Hello 包周期性的以 HelloInterval 秒发送, 有1个例外:在NBMA 网络中, 路由器每经过一个PollInterval 周期发送Hello 包给状态为down 的邻 居(其他类型的网络是不会把Hello 包发送给状态为down 的路由器的).Cisco 路由器上PollInterval 默认60s Hello Packet以组播的方式发送给224.0.0.5,在NBMA 类型,点到多点和虚链路类型网络,以单播发送给邻居路由器。邻居可以通过手工配置或者 Inverse-ARP 发现.
1.3.2.OSPF路由器在完全邻接之前, 所经过的几个状态
1.Down: 此状态还没有与其他路由器交换信息。首先从其ospf 接口向外发送hello 分组,
还并不知道DR(若为广播网络) 和任何其他路由器。发送hello 分组使用组播地址224.0.0.5。
2.Attempt: 只适于NBMA 网络, 在NBMA 网络中邻居是手动指定的, 在该状态下, 路由器将使用HelloInterval 取代PollInterval 来发送Hello 包.
3.Init: 表明在DeadInterval 里收到了Hello 包, 但是2-Way 通信仍然没有建立起来. 4.two-way: 双向会话建立, 而RID 彼此出现在对方的邻居列表中。(若为广播网络:例如:以太网。在这个时候应该选举DR,BDR 。)
5.ExStart: 信息交换初始状态,在这个状态下, 本地路由器和邻居将建立Master/Slave关系, 并确定DD Sequence Number,路由器ID 大的的成为Master.
6.Exchange: 信息交换状态,本地路由器和邻居交换一个或多个DBD 分组(也叫DDP) 。DBD 包含有关LSDB 中LSA 条目的摘要信息) 。
7.Loading: 信息加载状态:收到DBD 后, 将收到的信息同LSDB 中的信息进行比较。如果DBD 中有更新的链路状态条目,则向对方发送一个LSR ,用于请求新的LSA 。
8.Full: 完全邻接状态, 邻接间的链路状态数据库同步完成,通过邻居链路状态请求列表为空且邻居状态为Loading 判断。
2 抓包验证OSPF 协议
2.1 实验环境
在gn3中使用wireshark 抓包进行分析
2.2实验步骤与实验结果分析
2.2.1建立连接
1. 在GN3中建立拓扑图,如图
2. 抓到的ARP 报文;如图:
OSPF 用组播地址224.0.0.5进行报文发送地址,启用OSPF 的路由器都能接受其报文。R1、R2分别向组播地址发送hello 包如图: 2.2.2hello 包
R1发送的第一个hello 包:
R1发送的第二个hello 包
R1和R2发送的第二个hello 包比发送的第一个hello 包active neighbour,其中包含对方的信息,所以第二个包的大小也要比第一个大。至此两边HELLO 过程结束,进入EXSTART 状态。
2.2.3Database Description包:
两路由器分别首次发送DBD 报文,本地路由器和邻居将建立Master/Slave关系, 并确定DD Sequence Number, 路由器ID 大的的成为Master. 初次发送DBD 报文时,两个路由器都有自己的sequence number并且都认为自己是master ,I 、M 、MS 字段值都为1。 R1发送的第一个DB 包
R1发送的第二个DB 包:
R2发送的第二个DB 包:
R1与R2发送两个DB 包之后的两个LSA HEADER:
此时,链路状态数据库同步结束后,将I 、M 置0并且SEQUENCE NUMBER+1之后便进入LOADING 状态:
R1发送的第三个DB 包:
R2发送的第三个DB 包:
在接收到以上字段的DBD 包之后便进入LOADING 状态,开始进行路由更新与应答:
2.2.4Link State Request R1发送的
LSR
R2发送的
LSR
2.2.5Link State Update 和Link State Acknowledge R1发送的第一个
LSU: sequence number 0x8000000a
R1发送的第二个
LSU: sequence number 0x8000000b
R2发送的LSACK :确认两条LSU
sequence number 0x8000000a 0x8000000b
R2发送的LSU :sequence number 0x80000009
R1发送的LSACK :sequence number 0x80000009
经过以上步骤则得到如下结果:邻居关系建立结束,进入FULL 状态; 在R1上
show ip ospf neighbor
在R2上
show ip ospf neighbor
3实验结论
通过这次课程实践,让自己充分理解了TCP 协议、ARP 协议和OSPF 协议。以前对于这3中协议懵懵懂懂的地方,现在也熟悉无比。对TCP 协议的三次连接握手和四次释放连接有了充分的了解。自己构造了ARP 欺骗,让自己了解到了ARP 欺骗在局域网中处处体现。对OSPF 的5个数据包也从深的层次理解了一遍。总之,这次实践,让我学会了在网络中如何利用抓包工具来对数据包进行分析,用来诊断网络问题。相信以后自己会做的更好。