1497.IP 数据包解析

通过数:94提交数:318学校:北京邮电大学考研机试真题 题目列表 标签
我们都学习过计算机网络,知道网络层 $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$,也不要输出任何不必要的空白字符。 输入样例 2 45 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 c8 45 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 以第一行为例(为 $16$ 进制数)一位 $16$ 进制数需要 $4$ 位 $2$ 进制数表示,$TCP$ 报文一行 $32$ 位 $ip$ 首部 $45$ $00$ $00$ $34$ //$0034$ 为总长度 $52$ $7a$ $67$ $40$ $00$ $40$ $06$ $63$ $5a$ $0a$ $cd$ $0a$ $f4$ //源地址 $10.205.10.244$ $7d$ $38$ $ca$ $09$ //目的地址 $125.56.202.9$ $tcp$ 首部 $cd$ $f6$ $00$ $50$ //源端口 $cdf6$ 即 $52726$ 目的端口 $0050$ 即 $80$ $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$ $c8$ 输出样例 Case #1 Total length = 52 bytes Source = 10.205.10.244 Destination = 125.56.202.9 Source Port = 52726 Destination Port = 80 Case #2 Total length = 198 bytes Source = 203.208.46.1 Destination = 10.205.10.244 Source Port = 80 Destination Port = 52833
C
补全
点击调试按钮即可调试代码。

点击提交按钮即可提交代码。