IP首部校验实验报告
计算机ip实验报告

计算机ip实验报告计算机IP实验报告引言:计算机网络是现代社会中不可或缺的一部分,而IP(Internet Protocol)则是构成互联网的基础协议之一。
通过IP协议,我们能够实现计算机之间的通信和数据传输。
本实验旨在探索和了解计算机IP的工作原理和应用。
一、IP的基本概念IP是一种网络协议,用于在互联网上定位和寻址计算机。
它是一种面向数据报的协议,将数据分割成小的数据包进行传输。
每个计算机在网络中都有一个唯一的IP地址,类似于我们现实生活中的门牌号码,用于标识和定位计算机。
二、IP地址的分类和格式IP地址由32位二进制数表示,通常以四个十进制数表示,每个数之间用点分隔。
例如,192.168.0.1就是一个IP地址。
根据IP地址的范围,可以将其分为A类、B类、C类等不同的分类。
不同的分类决定了IP地址的可用范围和网络规模。
三、IP地址的分配和管理IP地址的分配和管理是由ICANN(Internet Corporation for Assigned Namesand Numbers)负责的。
ICANN负责分配全球唯一的IP地址,以确保互联网上的每个计算机都有一个独特的标识。
此外,还有一些机构负责管理特定地区或国家的IP地址分配。
四、IP地址的应用场景1. 网络通信:IP地址是计算机之间进行通信的基础。
通过IP地址,我们可以实现电子邮件、网页浏览、文件传输等功能。
2. 网络安全:IP地址在网络安全中扮演重要角色。
通过IP地址,网络管理员可以追踪和监控网络活动,防止恶意攻击和非法访问。
3. 地理定位:有些应用程序可以通过IP地址确定用户的地理位置。
例如,当我们使用手机上的地图应用时,它可以根据我们的IP地址显示我们的位置。
五、IP地址的动态分配和静态分配IP地址可以通过动态分配和静态分配两种方式获得。
动态分配是指通过DHCP (Dynamic Host Configuration Protocol)服务器自动分配IP地址,适用于大规模的网络环境。
IP地址合法性判断及子网检测_实验报告

一. 实验目的1.加深对IP地址及subnet的认识;2.了解IP地址的划分;3. 了解subnet的作用和产生因素,subnet的划分;4. 实际操作编写规则,匹配IP和subnet,加深理解二. 实验环境(软件、硬件及条件)1.软件操作系统:Windows 7(Windows NT以上版本皆可)编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使用VC6.0等)编程语言:C++测试环境: MS-DOS2.硬件现阶段常见PC三. 实验方法Part 1实验原理我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在Internet上这个庞大的网间网中,每个网络也有自己的标识符。
我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。
同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。
另一方面,只有在一个网络号下的计算机之间才能"直接"互通,不同网络号的计算机要通过网关(Gateway)才能互通。
但这样的划分在某些情况下显得并十分不灵活。
为此IP网络还允许划分成更小的网络,称为子网(Subnet),这样就产生了子网掩码1. IP的寻址规则(1).网络寻址规则A、网络地址必须唯一。
B、网络标识不能以数字127开头。
在A类地址中,数字127保留给内部回送函数。
C、网络标识的第一个字节不能为255。
数字255作为广播地址。
D、网络标识的第一个字节不能为“0”,“0”表示该地址是本地主机,不能传送。
2.主机寻址规则A、主机标识在同一网络内必须是唯一的。
IP地址合法性判断及子网检测_实验报告

IP地址合法性判断及子网检测_实验报告实验报告-IP地址合法性判断及子网检测一、实验目的1.了解IP地址的基本知识和表示方法;2.掌握判断IP地址合法性的方法;3.掌握网络子网的划分方法;4.通过实验掌握子网掩码的设置方法。
二、实验器材1.一台安装有操作系统的计算机;2.网络连接线。
三、实验原理1.IP地址的基本知识IP地址是互联网协议指定的32位二进制数字,一般采用四个十进制数(0~255)表示,每个数之间使用“.”分隔。
例如:192.168.1.1、IP地址可以分为两部分,网络地址和主机地址。
网络地址用于标识网络,主机地址用于标识网络中的主机。
2.IP地址合法性判断方法IP地址的每个数必须在0~255的范围内,且IP地址的格式必须满足“N1.N2.N3.N4”的形式,N1、N2、N3和N4分别表示IP地址的四个数字段。
在判断IP地址的合法性时,需要判断每个数字段的值是否在0~255之间。
同时,IP地址的每个数字段之间需要用“.”分隔,且不能有其他的字符。
3.子网划分方法子网划分是将一个大的IP地址段划分成多个小的IP地址段的过程。
子网划分的目的是将一个大的网络划分成若干个小的网络,增加网络的可管理性和安全性。
子网掩码是用于划分子网的重要参数,用于将IP地址划分为网络地址和主机地址。
子网掩码是一个32位的二进制数字,一般采用四个十进制数表示,例如:255.255.255.0。
子网掩码规定了IP地址前面的网络地址的长度。
四、实验内容1.判断一个给定的IP地址是否合法;2.给定一个IP地址和子网掩码,判断该IP地址是否属于指定的子网。
五、实验步骤1.判断IP地址的合法性。
编写程序,输入一个IP地址,判断该IP地址是否合法。
(1)将IP地址按照“.”进行分割,得到四个数字段;(2)判断每个数字段的值是否在0~255之间;(3)判断数字段之间是否使用“.”进行分隔。
2.判断IP地址是否属于指定子网。
编写程序,输入一个IP地址和子网掩码,判断该IP地址是否属于指定的子网。
TCP IP实验报告

TCP/IP协议实验指导书汪彩梅编合肥学院计算机科学与技术系二零零九年元月目录实验一网际协议IP (1)实验二网络攻防-1:ARP地址欺骗 (4)实验三路由协议-1:路由信息协议RIP (7)实验四网络攻防-4:路由欺骗 (11)实验五用户数据报协议UDP (13)实验六传输控制协议TCP (16)实验七域名服务协议DNS (21)实验八应用层协议-4 邮件协议 (25)实验一网际协议IP一. 实验目的:1、掌握IP数据报的报文格式2、掌握IP校验和计算方法3、理解特殊IP地址的含义4、理解IP分片过程二. 实验环境:该实验采用网络结构二三. 实验原理:1、IP报文格式IP数据报是由IP首部加数据组成的。
IP首部的最大长度不超过60字节。
IP数据报文格式如下图所示:2、IP分片链路层具有最大传输单元(MTU)这个特性,它限制了数据帧的最大长度。
不同的网络类型都有一个上限值。
以太网通常是1500字节。
如果IP层有数据包要传输,而数据包的长度超过了MTU,那么IP层就要对数据包进行分片操作。
使每一片长度都小于MTU。
IP首部中“16位标识”、“3位标志”和“13位片偏移”包含了分片和重组所需的信息。
另外,当数据被分片后,每个片的“16位总长度” 值要改为该片的长度值。
四. 实验步骤:练习一:编辑并发送IP数据报1、主机A启动仿真编辑器,编辑一个IP数据报,其中:MAC层:目的MAC地址:主机B的MAC地址(对应于172.16.1.1接口的MAC)。
源MAC地址:主机A的MAC地址。
协议类型或数据长度:0800。
IP层:总长度:IP层长度。
生存时间:128。
源IP地址:主机A的IP地址(172.16.1.2)。
目的IP地址:主机E的IP地址(172.16.0.2)。
校验和:在其他所有字段填充完毕后计算并填充。
IP在计算校验和时包括那些内容?【说明】先使用仿真编辑器的“手动计算”校验和,再使用仿真编辑器的“自动计算”校验和,将两次计算结果相比较,若结果不一致,则重新计算。
计算机ip实验报告

计算机ip实验报告计算机IP实验报告引言:计算机网络是当今社会中不可或缺的一部分,而IP(Internet Protocol)作为网络通信的基础协议之一,起到了重要的作用。
本篇实验报告将介绍IP协议的基本概念、实验目的、实验过程和实验结果,并对实验结果进行分析和总结。
一、IP协议的基本概念IP协议是互联网中最为重要的协议之一,它负责将数据包从源主机发送到目标主机。
IP协议通过为每个主机分配一个独特的IP地址,实现了数据在网络中的唯一寻址和路由功能。
IP地址由32位二进制数表示,通常以点分十进制的形式呈现。
二、实验目的本次实验的目的是深入了解IP协议的工作原理,并通过实际操作来加深对IP地址的理解。
通过该实验,我们将学习如何配置和管理IP地址,以及如何解决IP冲突和子网划分的问题。
三、实验过程1. IP地址配置在实验开始前,我们首先需要配置主机的IP地址。
打开计算机的网络设置界面,根据实验要求,选择合适的IP地址和子网掩码进行配置。
确保每个主机都有唯一的IP地址,以避免冲突。
2. IP地址冲突解决在实验过程中,我们可能会遇到IP地址冲突的问题。
当两台主机拥有相同的IP地址时,会导致网络通信故障。
为了解决这个问题,我们可以使用网络工具来扫描局域网中的IP地址,并检测是否存在冲突。
一旦发现冲突,我们需要手动更改其中一台主机的IP地址,以确保网络正常运行。
3. 子网划分在实验中,我们还需要学习如何进行子网划分。
子网划分可以将一个大型网络划分为多个较小的子网络,提高网络的性能和安全性。
通过设置子网掩码,我们可以确定网络中的主机数量和子网数量,并进行合理的划分。
四、实验结果通过实验,我们成功完成了IP地址的配置和管理,解决了IP地址冲突的问题,并学习了子网划分的方法。
实验结果显示,网络通信正常,各个主机之间能够稳定地进行数据传输。
五、实验分析和总结通过本次实验,我们深入了解了IP协议的工作原理和基本概念。
我们学会了如何配置和管理IP地址,解决IP冲突的问题,并掌握了子网划分的方法。
IP数据报首部校验和算法详细非代码

IP数据报⾸部校验和算法详细⾮代码当⽤google搜索IP数据报⾸部校验和算法的时候,总是看到的是代码,没有看到其过程,于是就有了此⽂,如有错误请指正。
⽂章省略⼀点,呵呵IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下:在发送数据时,为了计算数IP据报的校验和。
应该按如下步骤:(1)把IP数据报的⾸部都置为0,包括校验和字段。
(2)把⾸部看成以16位为单位的数字组成,依次进⾏⼆进制反码求和。
(3)把得到的结果存⼊校验和字段中。
在接收数据时,计算数据报的校验和相对简单,按如下步骤:(1)当接收IP包时,需要对报头进⾏确认,检查IP头是否有误,算法同上2、3步,然后判断取反的结果是否为0,是则正确,否则有错。
1、发送⽅ i)将校验和字段置为0,然后将IP包头按16⽐特分成多个单元,如包头长度不是16⽐特的倍数,则⽤0⽐特填充到16⽐特的倍数; ii)对各个单元采⽤反码加法运算(即⾼位溢出位会加到低位,通常的补码运算是直接丢掉溢出的⾼位),将得到的和的反码填⼊校验和字段; iii)发送数据包。
2、接收⽅ i)将IP包头按16⽐特分成多个单元,如包头长度不是16⽐特的倍数,则⽤0⽐特填充到16⽐特的倍数; ii)对各个单元采⽤反码加法运算,检查得到的和是否符合是全1(有的实现可能对得到的和会取反码,然后判断最终值是不是全0);iii)如果是全1则进⾏下步处理,否则意味着包已变化从⽽丢弃之。
需要强调的是反码和是采⽤⾼位溢出加到低位的,如3⽐特的反码和运算:100b+101b=010b(因为100b+101b=1001b,⾼位溢出1,其应该加到低位,即001b+1b(⾼位溢出位)=010b)。
1.实例请看我⽤ominipeek的抓包I.将校验和字段置为0,然后将IP包头按16⽐特分成多个校验和Header Checksum:0x618D将其重置为0X0000将IP包头分段: 1. 0x4500 2. 0x0029 3. 0x44F1 4. 0x4000 5. 0x8006 6. 0x0000 ------->这个为Header Checksum的值,我们前⾯将其重置为0了 7. 0xC0A8 8. 0x01AE 9. 0x4A7D+ 10. 0x477D-------------------------------------------------------将1⾄10相加求出来的和为:0x29E70II.对各个单元采⽤反码加法运算(即⾼位溢出位会加到低位,通常的补码运算是直接丢掉溢出的⾼位),将得到的和的反码填⼊校验和字段0x0002+0x9E70=0x9E720x9E72⼆进制为:1001 1110 0111 0010反码为:0110 0001 1000 11010110 0001 1000 1101的16进制为:0x618D看看这个是否与IP包头中的Checksum相同==========================================================当接收到IP对其进⾏检测III.对各个单元采⽤反码加法运算,检查得到的和是否符合是全1(有的实现可能对得到的和会取反码,然后判断最终值是不是全0)当收到IP数据局包的时候,要验证IP头是否正确,则可以这样进⾏ 1. 0x4500 2. 0x0029 3. 0x44F1 4. 0x4000 5. 0x8006 6. 0x618D ------->这个为Header Checksum的值 7. 0xC0A8 8. 0x01AE 9. 0x4A7D+ 10. 0x477D-------------------------------------------------------将1⾄10相加求出来的和为:0x2FFD对各个单元采⽤反码加法运算(即⾼位溢出位会加到低位,通常的补码运算是直接丢掉溢出的⾼位),将得到的和的反码填⼊校验和字段:0x0002+0x0FFD=0xFFFF0xFFFF⼆进制为:1111 1111 1111 11111111 1111 1111 1111反码为:0====================================================关于这⼀部的补充说明,将IP包头分段: 1. 0x4500 2. 0x0029 3. 0x44F1 4. 0x4000 5. 0x8006 6. 0x0000 ------->这个为Header Checksum的值,我们前⾯将其重置为0了 7. 0xC0A8 8. 0x01AE 9. 0x4A7D+ 10. 0x477D----------------------------------------------------------------------------------------------------------。
IP首部检验和算法

IP⾸部检验和算法原创博⽂,转载请注明。
在学习TCP/IP 详解的过程中遇到了不⽌⼀次的关于检验和的概念,在吸取了他⼈理解的前提下,我决定⽤Wireshark 进⾏抓包分析。
⾸先我们得知道IP数据包格式⾸先把检验和字段置为 0 。
然后,对⾸部中每个 16 bit 进⾏⼆进制反码求和(整个⾸部看成是由⼀串 16 bit的字组成),结果存在检验和字段中。
当收到⼀份I P数据报后,同样对⾸部中每个 16 bit进⾏⼆进制反码的求和。
由于接收⽅在计算过程中包含了发送⽅存在⾸部中的检验和,因此,如果⾸部在传输过程中没有发⽣任何差错,那么接收⽅计算的结果应该为全 1。
如果结果不是全1 (即检验和错误),那么I P就丢弃收到的数据报。
但是不⽣成差错报⽂,由上层去发现丢失的数据报并进⾏重传。
再来看看Wireshark抓取结果观察此图,我们可以看到这是⼀个源地址为123.151.152.231 ⽬的地址为10.22.66.206即为本机地址的IP数字报传送。
注意图中标深蓝颜⾊的数字,每当我们点击分类信息时,下⽅的数字就会跟随着发⽣变化,因此我们就可以得到IP数据报的内容。
、解释如下:(本内容部分取⾃)版本号4,占了4位,表⽰ipv4.接下来是包头长度,⼜占了4位,指明ipv4协议包头长度的字节数包含多少个32位。
由于IPv4的包头可能包含可变数量的可选项,所以这个字段可以⽤来确定IPv4数据报中数据部分的偏移位置。
IPv4包头的最⼩长度是20个字节,因此IHL这个字段的最⼩值⽤⼗六进制表⽰就是5(5x4(4个字节32位) = 20字节)。
就是说,它表⽰的是包头的总字节数是4字节的倍数。
图中即为header length为20表⽰是20个字节,所以经过计算此处⽤⼗六进制表⽰为5,⼆进制表⽰为1001。
再往下是服务类型为0x00。
服务类型此处⼀共占了8位,涵义如下:过程字段: 3位,设置了数据包的重要性,取值越⼤数据越重要,取值范围为:0(正常)~ 7(⽹络控制)延迟字段: 1位,取值:0(正常)、1(期特低的延迟)流量字段: 1位,取值:0(正常)、1(期特⾼的流量)可靠性字段: 1位,取值:0(正常)、1(期特⾼的可靠性)成本字段: 1位,取值:0(正常)、1(期特最⼩成本)未使⽤: 1位接着是总长度total length:⼗六进制是0x0028标识字段:占16位。
ip网络实验报告

ip网络实验报告IP网络实验报告引言:IP网络是当今世界上最为普遍使用的网络协议之一,它是互联网的基础。
本次实验旨在通过对IP网络的实际操作和观察,深入了解其工作原理和应用。
一、实验目的本次实验的目的是通过搭建IP网络,了解IP协议的基本原理和功能,并通过实际操作,掌握IP地址的分配和路由的配置。
二、实验环境本次实验使用了一台路由器和多台计算机,通过交换机连接在一个局域网中。
每台计算机都有一个唯一的IP地址。
三、实验步骤1. IP地址的分配在开始实验之前,我们首先需要为每台计算机分配一个唯一的IP地址。
通过在路由器上配置DHCP服务器,我们可以实现IP地址的自动分配。
在实验中,我们将路由器的IP地址设置为192.168.1.1,子网掩码为255.255.255.0。
然后,我们在每台计算机上配置DHCP客户端,使其自动获取IP地址。
通过这样的设置,每台计算机都能够获得一个唯一的IP地址。
2. 路由器的配置路由器是连接不同网络的关键设备,它负责将数据包从源地址传输到目标地址。
在实验中,我们需要在路由器上配置路由表,以便正确地转发数据包。
通过在路由器上使用命令行界面,我们可以添加静态路由和动态路由。
静态路由是由管理员手动配置的,而动态路由是由路由器自动学习和更新的。
通过配置路由器,我们可以实现不同网络之间的通信。
3. 数据包的传输在实验中,我们可以通过在计算机之间发送数据包来测试IP网络的工作情况。
通过使用ping命令,我们可以向目标IP地址发送数据包,并观察是否能够成功收到回复。
这样的测试可以帮助我们判断网络连接是否正常,并找出潜在的问题。
四、实验结果与分析通过实验,我们成功地搭建了一个IP网络,并进行了数据包的传输测试。
在测试过程中,我们发现有些计算机之间无法互相通信。
经过排查,我们发现是由于路由器的路由表配置不正确导致的。
通过添加正确的路由规则,我们解决了这个问题,并实现了所有计算机之间的正常通信。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络实验报告
实验名称:ip首部校验报告人:
学号:成绩:
【实验要求】:
根据wireshark在网上抓包,计算IP首部(16进制),输出数据是否在传输中出错。
【实验原理】:
将IP数据报文的首部部分的L个16比特构成的16进制数转换成2进制相加,将求得的和模(1621 ),将高于第15比特的各位取出,往后移16位,并把它们加回到和中。
将所得和取补码并判断是否为0,若为0则数据没有出错;若不为0,则数据传输出错。
【程序交流】:
将L个16比特构成的16进制数文件读入,直接将这些数进行16进制加法,将超出4位的16进制数取出。
向后移4位,加到和中。
若最后的和为ffff,则数据没有出错;否则数据传输出错。
源代码在附录中。
【测试结果】:
输入“input.txt”
45 00 00 30 80 4c 40 00 80 06 b5 2e d3 43 11 7b cb 51 15 3d
输出:
将b5 2e 改为c5 2e 则输出:
附录:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
char a[21][4];
string s;
int change(char ch)
{
int b;
if(ch>='0'&&ch<='9')
b=ch-'0';
else
b=ch-'a'+10;
return b;
}
int main()
{
int i=0,j=0,k=0,len,num,sum[6]= {0},temp=0;
char ch;
ifstream fin;
fin.open("input.txt");
getline(fin,s);
while(s[i]!='\0')
i++;
len=i;
i=0;
while(i<=len)
{
if(k!=4)
{
if(s[i]==' ')i++;
else
{
a[j][k]=s[i];
k++;
i++;
}
}
if(4==k)
{
i++;
j++;
k=0;
}
}
k=0;
for(i=3; i>=0; i--)
{
for(j=0; j<10; j++)
{
ch=a[j][i];
num=change(ch);
sum[k]+=num;
}
k++;
}
for(i=0; i<5; i++)
{
sum[i]+=temp;
if(sum[i]>15)
{
temp=sum[i]/16;
sum[i]=sum[i]%16;
}
else
temp=0;
}
sum[0]+=sum[4];
k=0;
for(i=0;i<4;i++)
{
if(sum[i]!=15){k=1;break;} }
if(k==1)cout<<"wrong"<<endl;
else cout<<"correct"<<endl;
return 0;
}。