博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1475.ip数据包解析
阅读量:4599 次
发布时间:2019-06-09

本文共 1813 字,大约阅读时间需要 6 分钟。

题目描述:

我们都学习过计算机网络,知道网络层IP协议数据包的头部格式如下:

  
  其中IHL表示IP头的长度,单位是4字节;总长表示整个数据包的长度,单位是1字节。
  传输层的TCP协议数据段的头部格式如下:
  
  头部长度单位为4字节。
  你的任务是,简要分析输入数据中的若干个TCP数据段的头部。 详细要求请见输入输出部分的说明。

输入:

第一行为一个整数T,代表测试数据的组数。

以下有T行,每行都是一个TCP数据包的头部分,字节用16进制表示,以空格隔开。数据保证字节之间仅有一个空格,且行首行尾没有多余的空白字符。
保证输入数据都是合法的。

输出:

对于每个TCP数据包,输出如下信息:

Case #x,x是当前测试数据的序号,从1开始。
Total length = L bytes,L是整个IP数据包的长度,单位是1字节。
Source = xxx.xxx.xxx.xxx,用点分十进制输出源IP地址。输入数据中不存在IPV6数据分组。
Destination = xxx.xxx.xxx.xxx,用点分十进制输出源IP地址。输入数据中不存在IPV6数据分组。
Source Port = sp,sp是源端口号。
Destination Port = dp,dp是目标端口号。
对于每个TCP数据包,最后输出一个多余的空白行。
具体格式参见样例。
请注意,输出的信息中,所有的空格、大小写、点符号、换行均要与样例格式保持一致,并且不要在任何数字前输出多余的前导0,也不要输出任何不必要的空白字符。

样例输入:
245 00 00 34 7a 67 40 00 40 06 63 5a 0a cd 0a f4 7d 38 ca 09 cd f6 00 50 b4 d7 ae 1c 9b cf f2 40 80 10 ff 3d fd d0 00 00 01 01 08 0a 32 53 7d fb 5e 49 4e c845 00 00 c6 56 5a 40 00 34 06 e0 45 cb d0 2e 01 0a cd 0a f4 00 50 ce 61 e1 e9 b9 ee 47 c7 37 34 80 18 00 b5 81 8f 00 00 01 01 08 0a 88 24 fa c6 32 63 cd 8d
样例输出:
Case #1Total length = 52 bytesSource = 10.205.10.244Destination = 125.56.202.9Source Port = 52726Destination Port = 80Case #2Total length = 198 bytesSource = 203.208.46.1Destination = 10.205.10.244Source Port = 80Destination Port = 52833
#include 
#include
#include
using namespace std; int num(char c){ if(c>='0'&&c<='9'){ return c-'0'; }else{ return c-'a'+10; }}int main(int argc, char *argv[]) { int n,c=1; while(cin>>n){ c=1; char str[1000]; gets(str); //为了冲掉回车!!! while(n--){ gets(str); //注意空格也是一个字符,数的时候也要算上!!! int offset=num(str[1])*4*3; cout<<"Case #"<
<

 

转载于:https://www.cnblogs.com/bernieloveslife/p/9735151.html

你可能感兴趣的文章
记录一些好用的工具
查看>>
超链接样式设置(去下划线)(转)
查看>>
restcontroller和controller区别
查看>>
2016012003+陈琦+散列函数的应用及其安全性
查看>>
Android 状态栏通知Notification、NotificationManager详解
查看>>
Sublime Text 3中使用正则表达式删除空行
查看>>
UIApplicationDelegate协议
查看>>
再谈iOS 7的手势滑动返回功能
查看>>
Jmeter测试dubbo接口填坑
查看>>
python小练——找出指定目录下小于指定字节的文件,输出到文本文件
查看>>
渐渐磨砺--16年11月封闭总结
查看>>
[zz]GDB调试精粹及使用实例
查看>>
数据库的创建和删除
查看>>
【消息队列MQ】各类MQ比较
查看>>
最简单的三层实例【插入据
查看>>
设计模式学习笔记——Prototype原型模式
查看>>
pom.xml里有红叉报错的解决办法
查看>>
Perl last和next的用法区别
查看>>
Selenium 管理 Cookies
查看>>
exceptionfunction[LeetCode]Permutations
查看>>