




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国地质大学(武汉)计算机网络课程设计报告学 生:李 晓学 号:20111004306班 级:192111指导老师:陈 喆所在学院:计算机学院二一三年十二月目 录1.Wireshare抓包实例分析一、Wireshare简介2二、使用Wireshark理解TCP协议22.NS-3及其实例注释一、NS-3简介6二、NS-3实例代码分析7三、NS-3中实例运行163.心得体会18Wireshare抓包实例分析一、Wireshare简介Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。Wireshark的优势:- 安装方便。- 简单易用的界面。- 提供丰富的功能。 Wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者决定离开他原来供职的公司,并继续开发这个软件。但由于Ethereal这个名称的使用权已经被原来那个公司注册,Wireshark这个新名字也就应运而生了。二、使用Wireshark理解TCP协议1.TCP连接的三次握手TCP 协议为终端设备提供了面向连接的、可靠的网络服务。TCP在交换数据报文段之前要在发送方和接收方之间建立连接。客户是连接的发起者,服务器是被动打开和客户进行联系,建立TCP连接需要经历三次握手,以保证数据的可靠传输。A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是x。B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x + 1,自己选择的序号 seq = y。A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。A 的 TCP 通知上层应用进程,连接已经建立。 三次握手截图三次握手分析截图2.TCP连接释放数据传输结束后,通信的双方都可释放连接。现在A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭连接,A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待B的确认。B 发出确认,确认号 ack = u + 1,而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。从A到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收, 若 B 已经没有要向 A 发送的数据,其应用进程就通知TCP释放连接。 A 收到连接释放报文段后,必须发出确认,在确认报文段中 ACK = 1,确认号 ack = w + 1, 自己的序号 seq = u + 1。 TCP连接释放截图TCP连接释放分析3.TCP的拥塞控制在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏产生拥塞(congestion)。出现资源拥塞的条件: 对资源需求的总和 可用资源 若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。 TCP拥塞控制分析NS-3及其实例注释一、NS-3简介NS-3是一个离散事件模拟器,旨在满足学术研究和教学的需求。NS-3项目是一个始于2006年的开源项目,负责开发NS-3软件。“NS-3项目”的主要文档由四部份组成:NS-3 Doxygen手册模拟器公共API的说明文档 NS-3教程(本教程Tutorial) NS-3参考手册(Reference Manual) NS-3维基百科 NS-3的开发始于2004-2005年间。Tom Henderson(华盛顿大学)领导的一个团队、George Riley(佐治亚理工学院)、Sally Floyd(国际计算机研究中心)和Sumit Roy(华盛顿大学),申请并受美国国家科学基金会(NSF)资助,共同开发NS-2的替代品,被称作NS-3。于此同时,INRIA Sophia Antipolis的Planete研究小组内的Mathieu Lacage和Walid Dabbous开始寻找一个NS-2的替代品,以用于测试IEEE 802.11Wi-Fi模型。Lacage原先使用的模拟器名叫Yet Another Network Simulator(yans)。两股力量一起合作,在2005年2月的NS-developers邮件列表上讨论NS-3的设计方案。在2005年2月22日,Tom Henderson在NS-developers邮件列表上发了一封邮件,说“我们想要讨论一下未来NS-2如何被重构或者被分支(至少在现在并行的开发,并且维护已有的代码,”We intend to have some discussions on how some of NS-2 might be either refactored or forked as part of a future development effort (in parallel, for now, with maintenance of the existing code tree)“)。一些主要的目标包括了更好的支持网络模拟、复用生成代码和更好的集成以testbed为基础的研究工具。在NS-3的开发过程中,他们决定不再向下兼容NS-2,这主要是因为向后兼容需要太多的额外工作。新的模拟器将从头编写,使用C+。NS-3的开发始于2006年7月1日。代码主要由Mathieu Lacage编写,并利用了部分yans模拟器、佐治亚理工学院网络模拟器(GTNetS)及NS-2的代码。Gustavo Carneiro贡献了一个框架,包括生成Python绑定(pybindgen)及使用Waf编译系统。2008年6月,NS-3发布了NS-3.1,之后项目在每个季度发布,直到最近变成了1年3次发布。NS-3在2012年第三季度发布了它的第15版(NS-3.15)。NS-3由C+和Python写成,并且以这两种作为编写脚本的语言。NS-3被分为24个模块,包括几个真实网络设备和协议的模块。大致上,创建一个模拟可以被分为以下几个步骤:拓扑定义:创建基本设施和相互关系,NS-3有一个向导能够帮助完成此过程。模型使用:添加模型(例如UDP、IPv4、点对点设备和链接、应用);此时大多数操作可过向导完成。节点和连接配置:设置模型默认值(例如,一个程序发送的包的大小和点对点连接的MTU值);此时大多数操作可过属性系统完成。执行:模拟事件,用户请求数据。性能分析:在模拟完成后带时间戳的事件跟踪记录可供使用。这些数据能被工具,例如R语言分析并且得到结论。图形可视化:原始或处理过的数据能被工具,例如Gnuplot、matplotlib或是Xgraph画出。二、NS-3实例代码分析1.second.cc注释/* -*- Mode:C+; c-file-style:gnu; indent-tabs-mode:nil; -*- */ /Emacs模式行,GPL boilerplate#include ns3/core-module.h /#include ns3/simulator-module.h#include ns3/node-module.h#include ns3/helper-module.h/ Default Network Topology/ 10.1.1.0/ n0 - n1 n2 n3 n4/ point-to-point | | | |/ =/ LAN 10.1.2.0using namespace ns3;NS_LOG_COMPONENT_DEFINE (SecondScriptExample);intmain (int argc, char *argv)bool verbose = true; /定义变量,用于决定是否开启两个UdpApplication的Logging组件;默认true开启uint32_t nCsma = 3; /LAN中另有3个nodeCommandLine cmd;cmd.AddValue (nCsma, Number of extra CSMA nodes/devices, nCsma);cmd.AddValue (verbose, Tell echo applications to log if true, verbose); /命令行参数设置是否开启loggingcmd.Parse (argc,argv);if (verbose)LogComponentEnable(UdpEchoClientApplication, LOG_LEVEL_INFO);LogComponentEnable(UdpEchoServerApplication, LOG_LEVEL_INFO);nCsma = nCsma = 0 ? 1 : nCsma; /三目运算符还可以这样写。/*网络拓扑部分*/创建使用P2P链路链接的2个nodeNodeContainer p2pNodes;p2pNodes.Create (2);/创建另一个NodeContainer类对象,用于总线(CSMA)网络NodeContainer csmaNodes;csmaNodes.Add (p2pNodes.Get (1); /将之前P2P的NodeContianer的第二个节点(索引1)添加到CSMA的NodeContainer,以获得CSMA device;这个node将会有两个devicecsmaNodes.Create (nCsma); /再创建Bus network上另外的node/设置传送速率和信道延迟,同first.ccPointToPointHelper pointToPoint; /注意使用Helper的固定格式:/1/helper对象声明及属性设置;/2/devices对象声明及接收helper对象安装方法的返回列表,安装方法的参数为节点对象!pointToPoint.SetDeviceAttribute (DataRate, StringValue (5Mbps);pointToPoint.SetChannelAttribute (Delay, StringValue (2ms);/安装P2P网卡设备到P2P网络节点,同first.ccNetDeviceContainer p2pDevices;p2pDevices = pointToPoint.Install (p2pNodes);/类似于P2PHelper,CsmaHelper帮助创建和连接CSMA设备及信道CsmaHelper csma;csma.SetChannelAttribute (DataRate, StringValue (100Mbps); /数据率由channel属性指定,而非Device属性;/因为CSMA不允许同一信道上有多个不同数据率的设备csma.SetChannelAttribute (Delay, TimeValue (NanoSeconds (6560); /speed-of-light delayNetDeviceContainer csmaDevices;csmaDevices = csma.Install (csmaNodes);/安装网络协议InternetStackHelper stack;stack.Install (p2pNodes.Get (0); /P2P链路中的第一个节点stack.Install (csmaNodes); /P2P链路中的第二个节点包含在csmaNodes中Ipv4AddressHelper address; /两个网段的IP地址类对象address.SetBase (10.1.1.0, 255.255.255.0); /安排P2P网段的地址Ipv4InterfaceContainer p2pInterfaces;p2pInterfaces = address.Assign (p2pDevices);address.SetBase (10.1.2.0, 255.255.255.0); /安排CSMA网段地址Ipv4InterfaceContainer csmaInterfaces;csmaInterfaces = address.Assign (csmaDevices);/*网络拓扑部分结束*/*应用程序部分*/UdpEchoServerHelper echoServer (9);ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma); /将Server服务安装在CSMA网段的最后一个节点上,nCsma是可变的,所以不能用3serverApps.Start (Seconds (1.0);serverApps.Stop (Seconds (10.0);UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9); /同first.ccechoClient.SetAttribute (MaxPackets, UintegerValue (1);echoClient.SetAttribute (Interval, TimeValue (Seconds (1.);echoClient.SetAttribute (PacketSize, UintegerValue (1024);ApplicationContainer clientApps = echoClient.Install (p2pNodes.Get (0); /同first.ccclientApps.Start (Seconds (2.0);clientApps.Stop (Seconds (10.0);/*应用程序部分结束*/*调用全局路由Helper帮助建立网络路由*/Ipv4GlobalRoutingHelper:PopulateRoutingTables (); /全局路由管理器根据节点产生的链路通告为每个节点建立路由表/*开启pcap跟踪*/pointToPoint.EnablePcapAll (second); /开启P2PHelper类对象的pcap;second为保存文件的前缀名,两句的名称相同/前缀后的节点号是,不用担心名称相同/csma.EnablePcap (second, csmaDevices.Get (1), true); /开启csmaHelper类对象的pcap/使用csma网段索引为1的设备(第二个)进行sniff,True开启Promiscuous mode/NodeContainer类对象的Get方法用于获得容器中给定索引下的节点,返回指向请求节点的指针/Node类对象的GetId返回节点的全局ID(即节点列表中的索引号)/注意之前使用的Get是NetDevice类的方法,以下使用的是Node类的方法/NetDevice不用取得ID,可以直接使用(已验证);但Node需要进一步查找ID(已验证,不使用GetId无法通过)/所以后边的两句和这样的两句是等效的(已验证)/ “csma.EnablePcap (second, csmaDevices.Get (nCsma), 0);”/ “csma.EnablePcap (second, csmaDevices.Get (nCsma-1), 0);”pointToPoint.EnablePcap (second, p2pNodes.Get (0)-GetId (), 0);/最后一项为explicitFilename,默认false,不加也可;若true,将prefix作为文件名/倒数第二项promiscuous,默认false,此处仅想跟踪一个设备,故设为0(false);当有一个节点和设备的promiscuous模式设为true时,CSMA网段其它节点便不再产生trace文件。csma.EnablePcap (second, csmaNodes.Get (nCsma)-GetId (), 0, false);csma.EnablePcap (second, csmaNodes.Get (nCsma-1)-GetId (), 0, false);Simulator:Run ();Simulator:Destroy ();return 0;2. third.cc注释1 /* -*- Mode:C+; c-file-style:gnu; indent-tabs-mode:nil; -*- */ 2 /* 3 * This program is free software; you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License version 2 as 5 * published by the Free Software Foundation; 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software 14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 15 */ 16 #include ns3/core-module.h 17 #include ns3/simulator-module.h 18 #include ns3/node-module.h 19 #include ns3/helper-module.h 20 #include ns3/wifi-module.h 21 #include ns3/mobility-module.h 22 / Default Network Topology 23 / 24 / Wifi 10.1.3.0 25 / AP 26 / * * * * 27 / | | | | 10.1.1.0 28 / n5 n6 n7 n0 - n1 n2 n3 n4 29 / point-to-point | | | | 30 / = 31 / LAN 10.1.2.0 32 using namespace ns3; 33 NS_LOG_COMPONENT_DEFINE (ThirdScriptExample); /定义名称为 “ThirdScriptExample”的日志模块34 int 35 main (int argc, char *argv) 36 37 bool verbose = true; /定义变量,用于决定是否开启两个UdpApplication的Logging组件;默认true开启38 uint32_t nCsma = 3; /LAN中有3个结点(主机)39 uint32_t nWifi = 3; /无线网中有3个node 40 CommandLine cmd; 41 cmd.AddValue (nCsma, Number of extra CSMA nodes/devices, nCsma); 42 cmd.AddValue (nWifi, Number of wifi STA devices, nWifi); 43 cmd.AddValue (verbose, Tell echo applications to log if true, verbose); 44 cmd.Parse (argc,argv); /将命令行输入的参数作为类CommandLine的参数进行分析45 if (verbose) /下面两行脚本是用来使两个日志组件生效46 47 LogComponentEnable(UdpEchoClientApplication, LOG_LEVEL_INFO); 48 LogComponentEnable(UdpEchoServerApplication, LOG_LEVEL_INFO); 49 /*从50到67思路:1、创建所需要的结点;2、使用特定协议的帮助类管理此协议的网络。为网络中的设备,信道等设置属性;3、创建网络设备容器,创建新设备,通过帮助类的管理功能,为设备导入第1步创建的结点容器。这样,一个特定协议的网络就安装好了。Csma协议的同上。下面代码CSMA与P2P不同,csmaNodes.Add (p2pNodes.Get (1);中,给CSMA的结点容器中添加了一个P2P的结点,这样就使得,这个结点连接了2个不同的网段,中有2个设备。*/50 NodeContainer p2pNodes; /p2p类型的结点容器51 p2pNodes.Create (2); /创建2个P2P结点52 PointToPointHelper pointToPoint; 创建P2P的帮助类(管理P2P结点) 做关于创建,配置和安装设备的工作53 pointToPoint.SetDeviceAttribute (DataRate, StringValue (5Mbps); /设置P2P设备的属性,这里是设置数据率为5M/s54 pointToPoint.SetChannelAttribute (Delay, StringValue (2ms); /设置信道延时2毫秒/*下面2行是完成信道和设备的配置*/55 NetDeviceContainer p2pDevices; /创建网络设备容器,这是P2P设备56 p2pDevices = pointToPoint.Install (p2pNodes); /一个网络设备容器(NetDeviceContainer)被创建57 NodeContainer csmaNodes; /创建CSMA的结点容器58 csmaNodes.Add (p2pNodes.Get (1); /将之前P2P的NodeContianer的第二个节点(索引1)添加到CSMA的NodeContainer,以获得CSMA device;这个node将会有两个device,这里相当于这个结点连接了2种信道59 csmaNodes.Create (nCsma); /为容器添加LAN的3个结点,这样一共4个60 CsmaHelper csma; /创建CSMA管理类61 csma.SetChannelAttribute (DataRate, StringValue (100Mbps); /设置csma的信道属性,数据率为100M/s62 csma.SetChannelAttribute (Delay, TimeValue (NanoSeconds (6560); /设置信道延时6560微秒63 NetDeviceContainer csmaDevices; /创建网络设备容器,这里是csma设备64 csmaDevices = csma.Install (csmaNodes); /安装设备,导入结点,完成一个csma信道的网络65 NodeContainer wifiStaNodes; /创建WIFI结点66 wifiStaNodes.Create (nWifi); 67 NodeContainer wifiApNode = p2pNodes.Get (0); /让WIFI与P2P网络相连68 YansWifiChannelHelper channel = YansWifiChannelHelper:Default (); /默认信道管理/*69-70:创建信道信息,然后结合已经创建好的物理层信息,将信道安装到物理层。*/69 YansWifiPhyHelper phy = YansWifiPhyHelper:Default (); /创建物理层模拟器70 phy.SetChannel (channel.Create (); /物理层创建默认的信道 /*下3行代码: 开始使用该WifiNetDevice*/71 WifiHelper wifi = WifiHelper:Default (); /创建WIFI72 wifi.SetRemoteStationManager (ns3:AarfWifiManager); /设置远程基站73 NqosWifiMacHelper mac = NqosWifiMacHelper:Default (); /创建一个MAC,配置MAC的信息/*创建好的WifiNetDevice包含了一个WifiRemoteStationManager,一个WifiMac,以及一个WifiPhy(它已经被我们在前面连接好到一个指定的WifiChannel了)*/74 Ssid ssid = Ssid (ns-3-ssid); /设置网络名75 mac.SetType (ns3:NqstaWifiMac, /这是mac层的配置76 Ssid, SsidValue (ssid); 77 ActiveProbing, BooleanValue (false); 78 NetDeviceContainer staDevices; /创建无线设备79 staDevices = wifi.Install (phy, mac, wifiStaNodes); /设置 phy,mac,NodeContainer 物理层,MAC层,节点 80 mac.SetType (ns3:NqapWifiMac,Ssid, SsidValue (ssid); 81 NetDeviceContainer apDevices; /创建一个无线接口设备82 apDevices = wifi.Install (phy, mac, wifiApNode); 83 MobilityHelper mobility; /用于设置位置和移动的模型84 /分配一个职位设置85 mobility.SetPositionAllocator (ns3:GridPositionAllocator, 86 MinX, DoubleValue (0.0), 87 MinY, DoubleValue (0.0), 88 DeltaX, DoubleValue (5.0), 89 DeltaY, DoubleValue (10.0), 90 GridWidth, UintegerValue (3), 91 LayoutType, StringValue (RowFirst); 9293 /保持目前的位置和速度跟踪对象94 mobility.SetMobilityModel (ns3:RandomWalk2dMobilityModel, 95 Bounds, RectangleValue (Rectangle (-50, 50, -50, 50); 96 /安装结点,把结点导入移动模型97 mobility.Install (wifiStaNodes); 98 mobility.SetMobilityModel (ns3:ConstantPositionMobilityModel); 99 mobility.Install (wifiApNode); /类InternetStackHelper 是一个安装Helper 对象和网络设备的网络协议栈的拓扑生成器类100 InternetStackHelper stack; /为每一个节点容器中的节点安装一个网络协议栈101 stack.Install (csmaNodes); 102 stack.Install (wifiApNode); 103 stack.Install (wifiStaNodes); /为节点上的设备设置IP地址. Ipv4AddressHelper拓扑生成器来管理IP地址的分配104 Ipv4AddressHelper address; 105106 address.SetBase (10.1.1.0, 255.255.255.0); /分配P2P网段107 Ipv4InterfaceContainer p2pInterfaces; 108 p2pInterfaces = address.Assign (p2pDevices); 109110 address.SetBase (10.1.2.0, 255.255.255.0); /分配CSMA网段111 Ipv4InterfaceContainer csmaInterfaces; 112 csmaInterfaces = address.Assign (csmaDevices); 113114 address.SetBase (10.1.3.0, 255.255.255.0); /分配无线网段115 address.Assign (staDevices); 116 address.Assign (apDevices); 117118 /应用程序部分119120 /服务应用创建121 UdpEchoServerHelper echoServer (9); /创建一个应用帮助类,并指定端口号9122 / echoServer.Install将会在管理节点的NodeContainer容器索引号123 为1的机节点上安装一个UdpEchoServerApplication。安装会返回一个容器,这124 个容器中包含了指向所有被生成器创建的应用指针。125 ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma); /通俗的讲,这里就是为CSMA网段中的第4个结点安装一个服务器应用,返回到容器中,容器中包含所有应用指针126 /服务应用在1s时开始(生效)并在10s时停止(失效)127 serverApps.Start (Seconds (1.0); /开始时间128 serverApps.Stop (Seconds (10.0); /停止时间/客户应用创建/我们创建了一个生成器并告诉它设置客户端的远端地址为服务器节点的IP地址(137行代码,设置某结点为服务器)。我们同样告诉它准备发送第二个数据包到端口9。129 UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9); 130131 echoClient.SetAttribute (MaxPackets, UintegerValue (1); /发送最大数据包132 echoClient.SetAttribute (Interval, TimeValue (Seconds (1.); /2个数据包的等待时间133 echoClient.SetAttribute (PacketSize, UintegerValue (1024); /数据包应该承载多少数据,这里为1024字节134 ApplicationContainer clientApps = 135 echoClient.Install (wifiStaNodes.Get (nWifi - 1); /为某WIFI安装客户应用136 clientApps.Start (Seconds (2.0); /设置客户应用开始时间137 clientApps.Stop (Seconds (10.0); /设置客户应用关闭时间/应用部分结束/开启pcap跟踪138 Ipv4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司活动月策划方案
- 公司活动礼物策划方案
- 公司组织农家乐策划方案
- 公司端午节集体活动方案
- 公司聚会吃饭活动方案
- 公司撕名牌团建活动方案
- 公司职工团体活动方案
- 公司节日自助餐活动方案
- 公司组织养老院活动方案
- 公司日常乒乓球活动方案
- 《煤矿运输系统课件》课件
- 耗材物资管理制度
- 广东省省级政务信息化服务预算编制标准(运维服务分册)
- 2024-2025学年上海市嘉定区初三一模语文试卷(含答案)
- PMCAD(V31)用户手册标准版
- 中国雄激素性秃发诊疗指南(2023)解读
- GB/T 35601-2024绿色产品评价人造板和木质地板
- 2024年度交通安全宣传教育基地共建合作协议3篇
- 《宴请活动》课件
- 养殖场肉牛养殖基地建设项目可行性研究报告
- 重症肺炎课件
评论
0/150
提交评论