1. 首页
  2. 文档大全

计算机网络课程论文

上传者:2****5 2022-06-13 11:03:58上传 DOC文件 215.01KB
计算机网络课程论文_第1页 计算机网络课程论文_第2页 计算机网络课程论文_第3页

《计算机网络课程论文》由会员分享,可在线阅读,更多相关《计算机网络课程论文(18页珍藏版)》请在文档大全上搜索。

1、青 岛 农 业 大 学理学与信息科学学院计算机网络综合设计报告论 文 题 目 IP数据报解析 学生专业班级 * * 学生姓名(学号) 指 导 教 师 王燕 完 成 时 间 2012年12月20日 实 习(设计)地点 信息楼机房 2012 年 12 月 20 日一、实习题目编写计算机程序,从IP数据报中解析源地址和目的地址,判断其地址是否合法,如果合法将它们以点分十进制表示输出并给出其子网号及数据报中的协议名称。二、原理概述IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个

2、字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。将IP地址分成了网络号和主机号两部分,设计者就必须决定每部分包含多少位。网络号的位数直接决定了可以分配的网络数(计算方法2网络号位数);主机号的位数则决定了网络中最大的主机数(计算方法2主机号位数-2)。IP地址的长度为32位,用点分十进制表示,格式为x.x.x.x,每个x表示8位,每个x的值为0255。根据不同

3、的取值范围,IP地址可以分为五类,IP地址中的前五位用于标识IP地址的类别,具体的分类规则如下:一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。A类IP地址 地址范围1.0.0.1-126.255.255.254。 一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码,。如果用二进制表示IP

4、地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,每个网络所能容纳的计算机数为6万多台。B类IP地址地址范围128.1.0.1-191.254.255.254。一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较

5、多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。C类IP地址范围192.0.1.1-223.255.254.254。D类地址(前4位是1110)用于多播(一对多通信)。E类地址(前4位是1111)保留为以后用。五类IP地址的结构如下所示:0网络号(7位)主机号(24位)10网络号(14位)主机号(16位)110网络号(21位)主机号(8位)1110组播地址(28)11110保留用于课程设计和将来使用子网划分定义:Internet组织机构定义了五种IP地址,有A、B、C三类地址。A类网络有126个,每个A类网络可能有16777214台主机,它们处于同一广播域。而在同一广播域中有这

6、么多结点是不可能的,网络会因为广播通信而饱和,结果造成16777214个地址大部分没有分配出去。可以把基于类的IP网络进一步分成更小的网络,每个子网由路由器界定并分配一个新的子网网络地址,子网地址是借用基于类的网络地址的主机部分创建的。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。划分子网的方法是从网络的主机号借用若干位作为子网号subnet-id,当然主机号也就相应减少了同样的位数。IP地址=<网络号>,<子网号>,<主机号>凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单

7、位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,IP数据报交付给目的主机。三、设计方案要求捕获网络中的IP数据包,并解析,要求先进行IP数据包的捕获,先捕获再分析,这就要求用到套接字。套接字编程要求先创建原始套接字,创建原始套接字后,IP头就会包含在接收的数据中,然后对IP头进行操作,接着获取主机名和获取IP地址,并SOCKADDR_IN的结构内容进行填充,再绑定socket到本地网卡上,这就完成了IP数据包得捕获。捕获后,接收数据包,并进行分析,最后得到结果。验证ip地址合法性流程图:YN开始结束用正则表达式判断是否合法输入的Ip地址验证子网掩码合法性流程

8、图YN开始结束用条件和循环表达式判断是否合法输入子网掩码得出子网号的流程主体设计流程本程序主要由三部分构成:初始化原始套接字,捕获数据包和解析数据包。下面就结合核心代码对程序的具体实现进行讲解,同时使程序流程更加清晰,去掉了错误检查等保护性代码。1. 使用原始套接字套接字分为三种,即流套接字(Stream Socket)、数据报套接字(Datagram Socket)和原始套接字(Raw Socket)。要进行IP数据包的接受与发送,应使用原始套接字。创建原始套接字的代码如下:SOCKET sock;Sock=WSASoccet(AF_INET,SOCK_RAW,IPPROTO_IP,NULL

9、,0,WSA_FLAG_OVERRLAPPED);在WSASoccet函数中,第一个参数指定通信发生的区字段,AF_INET是针对Internet的,允许在远程主机之间通信。第二个参数是套接字的类型,AF_INET地址族下,有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW三种套接字类型。在这里,我们设置为SOCK_RAW,表示我们声明的是一个原始套接字类型。第三个参数依赖于第二个参数,用于指定套接字所用的特定协议,这里使用IP协议。第四个参数为WSAPROTOCOL_INFO位,该位可以置空,永远置0。第六个参数是标志位,WSA_FLAG_OVERRLAPPED表明可以使用发送

10、接收超时设置,本课程设计也可以把这个标志位设置为NULL,因为本设计不用考虑超时情况。创建原始套接字后,IP头就会包含在接收的数据中。然后,我们可以设置IP头操作选项,调用sotscockpot函数。其中flag设置为TRUE,并设定IP_HDRINCL选项,表明用户可以亲自对IP头进行处理。BOOL flag=true;setsockopt (sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag);之后,使用如下代码完成对socket的初始化工作:获取主机名:char hostname128;gethostname(hostname,

11、 100);获取IP地址:hostent *pHostIP;pHostIP=gethostbyname(hostname);填充SOCKADDR_IN的结构内容:sockaddr_in addr_in;addr_in.sin_addr= *(in_addr*)pHostIP->h_addr_list0;addr_in.sin_family=AF_TNET;addr-in.sin_port=htons(6000);绑定socket: bind(sock, (POSCKADDR)&addr_in,sizeof(addr_in); 填写sockaddr_in的内容时,其地址值应填写为本


文档来源:https://www.renrendoc.com/paper/212623264.html

文档标签:

下载地址