每日一问21——UDP

简介

用户数据报协议UDP(User Datagram Protocol)[RFC 793]

  • 无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
  • 不保证可靠交付,因此主机不需要为此复杂的连接状态表
  • 面向报文的,意思是 UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,在添加首部后向下交给 IP 层。
  • 没有阻塞控制,因此网络出现的拥塞不会使发送方的发送速率降低。
  • 支持一对一、一对多、多对一和多对多的交互通信,也即是提供广播和多播的功能。
  • 首部开销小,首部只有 8 个字节,分为四部分。
udp报文结构
6FCC9F4EDE80F784BD11ED9FA76FA375.png

源端口:源端口号,在需要对方回信时选用,不需要时可全 0.
目的端口:目的端口号,在终点交付报文时必须要使用到。
长度:UDP 用户数据报的长度,在只有首部的情况,其最小值是 8 。
检验和:检测 UDP 用户数据报在传输中是否有错,有错就丢弃。

UDP 如何进行校验和:

UDP 数据报首部中检验和的计算方法比较特殊。
在计算检验和时,要在数据报之前增加 12 个字节的伪首部,用来计算校验和。
伪首部并不是数据报真正的首部,是为了计算校验和而临时添加在数据报前面的,在真正传输的时候并不会把伪首部一并发送。

3D9C291187835C3571A111952201B4FF.png

第一字段,源 IP 地址
第二字段,目的 IP 地址
第三字段,字段全 0
第四字段,IP 首部中的协议字段的值,对于 UDP,此字段值为 17
第五字段,UDP 用户数据报的长度

UDP与TCP对比

D65D7EB6-22CB-48C1-AF5B-10BCBD244B01.png
TCP与UDP的连接方式
从程序实现的角度来看
1363304870_3150.jpg

tcp中需要客户端向服务器发起连接,服务器需要接受客户端的连接以后才可以收发数据。而udp中客户端不需要向服务器发起连接,只需要知道服务器绑定的端口就可以向服务器发送数据。由此可知,tcp是面向连接的,udp是非面向连接的。

UDP面向报文 ,TCP面向字节流
  • UDP是面向报文。
    发送方的UDP对应用程序交下来的报文在添加首部后就向下交付给IP层,对交下来的报文既不合并也不拆分。因此,应用进程必须选择合适大小的报文,若报文太长,UDP把它交付给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率;反之,若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,也降低了IP层的效率。

  • TCP面向字节流。
    虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成是一连串的务结构的字节流。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系(例如,发送方应用程序交给发送方TCP共有10个数据块,但接收方TCP可能只用了4个数据块就把收到的字节流交付给了上层应用程序)。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。(原理参考每日一问20——TCP中tcp滑动窗口的介绍)

UDP单播,广播,多播
  • 单播把数据报发送给单一主机
  • 广播把数据报发送给指定网络上的所有主机
  • 多播发送给指定的多个主机
广播
广播域

首先我们来了解一下广播域的概念。
广播域是网络中能接收任一台主机发出的广播帧的所有主机集合。也就是说,如果广播域内的其中一台主机发出一个广播帧,同一广播域内所有的其它主机都可以收到该广播帧。

广播域的计算

如何知道一台主机是属于哪一个广播域呢?其实计算很简单,只要用主机的IP地址与子网掩码进行与运算即可知道该主机属于哪一个广播域。例如:一台主机的IP地址为192.168.23.150,子网掩码为255.255.255.0,那么它所属的广播域就是192.168.23.150&255.255.255.0=192.168.23.0。那么其它的在广播域192.168.23.0内的所有主机就可以到该设备发送的广播包。如果把子网掩码改为255.255.0.0,那么它所属的广播域就是192.168.23.150&255.255.0.0=192.168.0.0。那么其它的在广播域192.168.0.0内的所有主机都可以收到该设备发送的广播包。

广播地址的计算

要想相同广播域内的其它主机能收到的广播帧,还需要在发送广播包的时候指定当前所属广播域内的广播地址。广播地址的计算方法为子网掩码取反再与广播域进行或运算。
例如:如果主机当前所属广播域为192.168.0.0,子网掩码为255.255.0.0,那么广播地址则为192.168.255.255。

使用UDP进行跨网段广播

要使主机A发送的广播包能够被另一网段的主机B收到,那么只需要更改主机A的子网掩码使得与主机B在同一个广播域内,再使用新的广播域的广播地址发送广播包即可。
例如:要使用192.168.23.150发送广播包让192.168.27.135收到,只需要设置192.168.23.150的子网掩码为255.255.0.0,然后再使用广播地址192.168.255.255即可。

广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址255.255.255.255,将消息发送到在同一广播网络上的每个主机。

多播

多播是一组主机的标示符,它已经加入到一个多播组中。在以太网中,多播地址是一个48位的标示符,命名了一组应该在这个网络中应用接收到一个分组的站点。在IPv4中,它历史上被叫做D类地址,一种类型的IP地址,它的范围从224.0.0.0到239.255.255.255。D类地址用于组播。

相关文章:

TCP/IP详解学习笔记(6)-UDP
多播(组播)原理分析
UDP广播原理简介
UDP 和 TCP 的不同

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,051评论 6 174
  • 11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一...
    张芳涛阅读 2,795评论 1 6
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,592评论 2 57
  • 春风送客猴去急, 春雨打春金鸡立; 大年初五包和合, 共圆美梦在一七。 家家户户迎财神, 财神进门有惊喜; 财神老...
    琢玉书生阅读 173评论 0 1