“网络技术(广东轻工学院)”实验报告

传输层:UDP协议

一、传输层协议

  • 网络层是为主机之间提供逻辑通信,传输层是为应用进程之间提供端到端的逻辑通信。
  • 逻辑通信:看起来数据似乎是沿着双向箭头在传输层水平传输的,但实际上是沿图中的虚线经多个协议层次而传输。
  • 例子:主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和 QQ 在同时运行),下图中,A 主机的 AP1 进程在与 B 主机的 AP3 进程通信,同时主机 A 的 AP2 进程也在与 B 主机的 AP4 进程通信。

图片描述

  • TCP/IP 协议栈传输层有两个重要协议——UDP 和 TCP,不同的应用进程在传输层使用 TCP 或 UDP 之一。

二、端口

  • IP 地址或 MAC 地址都只能把数据传到正确的主机,若要将数据传到具体的进程里面只能通过端口来辨认。

  • 传输层端口号分为两大类:

  • 服务器端使用的端口号:系统端口号,0~1023,在 www.iana.org查到。

  • 登记端口号:数值1024~49151,使用这类端口号必须在IANA按照规定的手续登记。

  • 客户端使用的端口号: 短暂端口号,49152~65535,是留给客户进程选择暂时使用的,使用结束后,这类端口号会被放开以供其它程序使用。

  • 常用的系统端口号

    • FTP:21
    • TELNET:23
    • SMTP:25
    • DNS:53
    • TFTP:69
    • HTTP:80
    • SNMP:161
  • 使用 netstat -luant 命令列出了监听中的端口,各选项代表的含义可以使用 netstat --help 查看。

三、UDP 概述

  • UDP(User Datagram Protocol)用户数据报协议,它在IP的基础上增加了复用分用以及差错检测的功能。UDP的特点有:

    • UDP是无连接的
    • UDP尽最大努力交付
    • UDP面向报文
    • UDP没有拥塞控制
    • UDP支持一对一、一对多、多对一、多对多的交互通信
    • UDP的首部开销小。只有8字节,比TCP20字节短
  • 从应用层到传输层,再到网络层的各层次封装:

图片描述

四、UDP 报文

  • UDP 数据报可分为两部分:UDP 报头和数据部分。其中数据部分是应用层交付下来的数据。UDP 报头总共 8 字节,而这 8 字节又分为 4 个字段:

图片描述

五、tcpdump 抓取 UDP 报文

分析:图片描述

  • 作业1:使用 tcpdump 抓取 UDP 数据报,解读报文,并截图。

    • 首先先使用一下命令安装gcc:

      • sudo apt-get update

      • sudo apt-get install gcc

        如果安装其间遇到无法获得锁这个问题,可以用命令移除它

      sudo rm /var/cache/apt/archieves/lock

      sudo rm /var/lib/dpkg/lock-frontend

    • 接着使用命令进入自己建好的目录中:

      • cd home
      • cd liujiaer
    • 进入指定的目录后,向指定 IP地址的指定端口发送一个指定内容的UDP数据报,这个程序已经编写好,依次输入以下命令,下载并编译:

    • 这个 C 程序会向 IP 地址192.168.1.17777端口发送一条 "hello" 消息。

    • 可以用编辑器修改程序,向不同的IP发送不同的内容。

    • 编译完成后先别运行,这时先用tcpdump这个抓包工具,输入命令:

      • sudo apt-get update
      • sudo apt-get install tcpdump
      • sudo tcpdump -vvv -X udp port 7777
    • 新开一个终端,输入以下命令运行刚才编译好的 C 程序 test:

      • 先到刚才进入的目录下:cd/home/liujiaer
      • ./test
    • test 程序运行结束,返回刚才运行 tcpdump 的终端查看抓包结果:

图片描述

分析如下:一个数字代表4位,一个字节通常为8位,所以两个数字为一个字节。

  • 4500 到 0101:IP报头20字节
  • cce3:源端口,2 字节,换成十进制也就是52451
  • 1e61:目的端口,2 字节,十进制为7777
  • 001c:包长度,长度值包括报头和数据部分,单位为字节,换为十进制可知包长度为 28 字节
  • 855a:校验和,2 字节,用于检验 UDP 数据报在传输过程中是否有出错,有错就丢弃
  • 6865 和 6c6c:hello的ASCII码

-作业2:修改 C 程序,向不同的 IP、不同的端口发送不同的内容,截图抓包结果。

  • 更改的目的端口号为7222,IP地址为192.168.2.3,传输内容是hello,world

图片描述

最新评论
暂无评论~