王家伟 L6 2020-03-31 19:49:53 传输层:UDP协议
434 0

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

传输层:UDP协议

一 传输层协议

  • 从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此严格地讲,通信双方不是主机,而是 主机中的进程。

  • 两个主机的传输层之间有一个灰色双向箭头,写着“传输层提供应用进程间的逻辑通信”。

  • 逻辑通信:看起来数据似乎是沿着双向箭头在传输层水平传输的,但实际上是沿图中的虚线经多个协议层次而传输。

  • 主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和 QQ 在同时运行),下图中,A 主机的 AP1 进程在与 B 主机的 AP3 进程通信,同时主机 A 的 AP2 进程也在与 B 主机的 AP4 进程通信。

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

二 端口

  • 编号 0~1023 为 系统端口号 ,这些端口号可以在网址 www.iana.org 查询到,它们被指派给了 TCP/IP 最重要的一些应用程序。

  • 编号 1024~49151 为 登记端口号 ,为没有系统端口号的应用程序使用,使用这类端口号必须在 IANA 按规定手续登记,以防止重复。

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

    三 UDP概述

  • UDP 是无连接的,发送数据之前不需要建立连接(而 TCP 需要),减少了开销和时延。

  • UDP尽最大努力交付,不保证交付可靠性。

  • UDP 是面向报文的,对于从应用层交付下来的 IP 数据报,只做很简单的封装(8 字节 UDP 报头),首部开销小。

  • UDP 没有拥塞控制,出现网络拥塞时发送方也不会降低发送速率。这种特性对某些实时应用是很重要的,比如 IP 电话,视频会议等,它们允许拥塞时丢失一些数据,因为如果不抛弃这些数据,极可能造成时延的累积。

  • UDP 支持一对一、一对多、多对一和多对多的交互通信。

    四 UDP报文

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

  • 源端口:2 字节,在对方需要回信时可用,不需要时可以全 0;

  • 目的端口:2 字节,必须,也是最重要的字段;

  • 长度:2 字节,长度值包括报头和数据部分;

  • 校验和:2 字节,用于检验 UDP 数据报在传输过程中是否有出错,有错就丢弃。

    五tcpdump 抓取 UDP 报文

  • C 程序会向 IP 地址 192.168.1.1 的 7777 端口 发送一条 "hello" 消息

  • cd /home/shiyanlou wget http://labfile.oss.aliyuncs.com/courses/98/test.c gcc -o test test.c

  • 知名的抓包工具 tcpdump ,依次输入以下命令安装,并运行 tcpdump

  • sudo apt-get update sudo apt-get install tcpdump sudo tcpdump -vvv -X udp port 7777

  • 新开一个终端,输入以下命令运行刚才编译好的 C 程序 test

  • cd /home/shiyanlou ./test

作业

1.使用 tcpdump 抓取 UDP 数据报,解读报文,并截图。 图片描述

  • 8cb4:源端口,2 字节,换成十进制也就是 36020
  • 1e61:目的端口,2 字节,十进制为 7777
  • 001c:包长度,单位为字节,换为十进制可知包长度为 28 字节
  • 82ef:校验和

2.修改 C 程序,向不同的 IP、不同的端口发送不同的内容,截图抓包结果。
图片描述

最新评论
暂无评论~