文档详情

计算机网络计网实验.pdf

发布:2025-05-14约6千字共9页下载文档
文本预览下载声明

实验三IPv4收发分组实验

一、实验目的

Ipv4协议是互联网的协议,它保证了网络节点(包括网络设备和主机)

在网络层能够按照标准协议互相通信。IPv4地址唯一标识了网络节点和网络的

连接关系。在我们日常使用的计算机的主机协议栈中,IPv4协议必不可少,它

能够接收网络中传送给本机的分组,同时也能根据上层协议的要求将报文封装

为IPv4分组发送出去。

本实验通过设计实现主机协议栈中的IPv4协议,让学生深入了解网络层

协议的基本原理,学习IPv4协议基本的分组接收和发送流程。

另外,通过本实验,学生可以初步接触互联网协议栈的结构和计算机网络

实验系统,为后面进行更为深入复杂的实验奠定良好的基础。

二、实验内容

实现IPv4分组的基本接收处理功能

对于接收到的IPv4分组,检查目的地址是否为本地地址,并检查IPv4分组

头部中其它字段的。提交正确的分组给上层协议继续处理,丢弃错误的

分组并说明错误类型。

实现IPv4分组的封装发送

根据上层协议所提供的参数,封装IPv4分组,调用系统提供的发送接口

函数将分组发送出去。

三、实验过程及结果

发送流程图

接受流程图

IPV4头部数据结构

按照IPv4首页的顺序构造结构体,其中char是一个字节,即8Bits,short

是两个字节,即16bit,unsignedint是4个字节,即32Bits。

structIpv4

{

charversion_ihl;//版本号

chartype_of_service;.//协议类型

shorttotal_length;//总长度

shortidentification;//标志符

shortfragment_offset;//偏移量

chartime_to_live;//TTL

charprotocol;//协议

shortheader_checksum;//首部校验和

unsignedintsource_address;//源地址

unsignedintdestination_address;//目标地址

}

错误检测原理

1)版本号校验

版本号在第一个字节的前4位里面,version_ihl是结构体的第一个字节,

则它的前4位代表版本号,右移4位,和0xF进行逻辑与运算,如果结果依旧

是4,则代表版本号正确。

2)头部长度出错

头部长度在第一个字节的后4位里面,则version_ihl和0xF进行逻辑与

运算,因为头部长度最小为20个字节,如果结果为大于等于5,则代表头部长

度没有问题。

3)TTL出错

TTL存在于第9个字节里面,按照数据结构的定义(char+char+short+

short+short),存在于time_to_live里面,按照规定,如果ttl的值是0,

则代表生命周期结束,要抛弃这个包。

显示全部
相似文档