网站大量收购独家精品文档,联系QQ:2885784924

编写计算机程序,从IP数据报头中抽出源和目的地址,将它们一点分十进制表示输出.doc

编写计算机程序,从IP数据报头中抽出源和目的地址,将它们一点分十进制表示输出.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编写计算机程序,从IP数据报头中抽出源和目的地址,将它们一点分十进制表示输出

计算机网络与通信实习报告 设 计 题 目 学生专业班级 通信工程2007级2班 学生姓名(学号) 指 导 教 师 成 时 间 实 习(设计)地点 信息学院机房 2010 年5月20日 实习题目: 编写一个计算机程序,从IP数据报包头中抽出源和目的IP地址,将它们以点分十进制的形式表示出 原理概述: IP协议特点IP协议位于网络层,是因特网的核心协议,除了ARP和RARP报文外,几乎所有的数据都要经过IP协议进行发送。由于IP协议在网络层中具有重要地位,人们又将TCP/IP协议的网络层称为IP层。 IP协议是不可靠的无连接数据报协议,提高尽力而为的传输服务,具有一下特点: 是点对点协议,虽然IP数据报携带源IP和目的IP地址,但进行数据传输时的对等实体一定相邻设备(同一网络中)的对等实体。 IP协议不保证传输的可靠性,不对数据进行差错校验和跟踪,可靠性有IP的上层TCP协议加以保证。 IP协议提供无连接数据报服务,各个数据报独立传输,可能沿着不同路径到达目的地,也可能不按序到达目的地。 正因为IP协议采用尽力传输的思想,所以IP协议的效率非常高,实现也简单。IP层向下要面对各种不同的物理网络,向上却提供一个同一的数据传输服务。通过IP数据报实现了物理数据帧的同一,IP层达到了向上屏蔽底层差异的目的。 IP数据报 IP协议所处理的数据单元称为IP数据报。其格式如下: IP数据报由首部和数据两部分组成,首部又分为定长部分和变长部分。 版本(VER):4位,表示数据报的IP协议版本,当前的IP协议版本号为4,即IPv4;下一代网络协议IPv6,版本号为6. 首部长度(HLEN):4位,表示以字长(4字节)为单位的数据报首部长度。 服务类型(SERVICE TYPE): 8位,规定本数据报的处理方式。前三位是优先级,0-7,0表示最低,7最高(最重要),但目前的IPv4没有使用优先级。后4位是TOS,表示本数据报在传输过程中所希望得到的服务,D--最小延迟(minimize delay);T--最大吞吐率(maximize throughout);R--最高可靠性(maximize reliability);C--最低成本(minimize cost)。 值得注意的有2点: 服务类型代表用户的希望,并不具有强制性,目前许多设备TCP/IP中不支持服务类型特性。 在D、T、R、C这4个参数中只能设置其中一个。 数据报总长度: 在IP数据报封装到以太网帧中进行传输时很有用. 标识(IDENTIFICATION):16位每个IP数据报都有一个本地唯一的标识符,它由信源机赋予IP数据报。每次自动加1. 标志(FLAGS):3位,表示该IP数据报是否允许分片以及是否最后一片。 片偏移(FRAGMENTATION OFFSET):表示本片数据在他所属原始数据报数据区的偏移量。 生存时间(time to live,TTL): 8位, 协议(PROTOCOL):8位,指明被IP数据报封装的协议:ICMP=1,IGMP=2,TCP=6,EGP=8,UDP=17,OSPF=89. 首部校验和(HEADER CHECKSUM):16位,保证首部数据完整性。 源IP地址(SOURCE ADDRESS):32位(IPv4中),发送方源地址。 目的地址(DESTINATION ADDRESS): 32位(IPv4中),最总接收方IP地址。 IP选项(IP OPTIONS):变长字段,传输数据报时的附加功能。 编程原理: 用C语言里的随机数生成指令生成32位的二进制数,作为源操作数,再生成32位二进制数作为目的操作数,用编程实现将二进制数转化成十进制数,以点分的形式输出在屏幕上 流程图: 编程程序: #includestdio.h #includemath.h #includetime.h #includestdlib.h void getid(int ad[32]) { int p=0,q=0,r=0,t=0; int i; for(i=0;i8;i++) {p+=pow(2,7-i%8)*ad[i];} ;将低八位二进制数转化为十进制数 printf(%d.,p); for(i=8;i16;i++) {q+=pow(2,7-i%8)*ad[i];} printf

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档