UDP协议

什么是UDP协议?

User Datagram Protocal ,用户数据报协议,它跟TCP协议不同,TCP协议是基于流的,发送的数据跟IP数据报个数无关。而UDP数据则直接封装成IP数据报发送(当然,如果UDP数据过长,会导致IP数据报分片发送)。所以UDP是简单的基于IP数据报的传输,而IP数据报的传输是不保证可到达,不保证传输顺序,所以UDP不提供任何的可靠性。

首部格式

  • 「Source port」 源端口号,可选的,如果不用可全部置0.如果喜欢接收方能回复,则源端口号很重要,要不然别人也不知道回复哪个端口,我们知道,系统内核是通过端口号来映射应用程序的
  • 「Destination port」 和「 「Source port」 一样的语义,通过指定接收方的端口号来指定特定应用程序接收到此UDP数据报
  • 「Length」 指UDP数据报的长度,注意,包括「首部」 和 「数据报内容」 的总长度
  • 「Check sum」 检验和,和 「IP」 检验和一样,不同的是UDP的检验和针对首部和内容全部计算得出检验和。
    *「Data octets」 UDP数据报内容,可以为空


    UDP协议格式

IP分片

前面已经说过,UDP协议是基于IP协议的简单封装,而IP协议对应的链路层有MTU的概念 ,即物理链路传输数据时有最大传输单元限制,这样当IP数据包长送的时候,会将MTU和当前的数据包长度进行比较,如果必要,则要进行IP分片传输。我们知道,以太网链路层的MTU是1500,则每次传输的最大数据不能超过1500字节(byte),如果超过了就要进行分片传输。

IP分片

上图所描述的示例中,如果我们发送一个超过了MTU长度的UDP数据,比如1473字节,加上IP首部20字节和UDP首部8个字节,即1501字节,它比以太网链路层的MTU:1500多1个字节,所以要进行IP分片后传输。分片的第一个分组包含了UDP首部(8个字节)和UDP数据(1472)个字节。第二个分组只包含了UDP数据的最后一个字节内容。我们可以了解到,对于分片发送的UDP数据,只有第一个分组拥有UDP首部的信息,如果所有的分组中第一片分组丢失的话,则所有分组都要丢弃,因我们知道UDP首部中包含了重要的信息,如「Destination port」,如果不知道目的地端口号,则系统不知道将该数据交给哪个应用程序去处理。所以,利用UDP传输的应用程序,应该控制数据报的升序,尽量避免分片进行。

关于接收端在接收到一个IP数据报的分片数据时,如果进行重组,即把所有分片数据再次按顺序组合起来呢,这就要利用IP首部中一些字段标识,我们一起来复习下前面文章中的IP协议:

  • Identification(唯一标识): 每一个IP数据报都要有唯一的标识字段,这样在分片和重组时不至于混淆两个完全不同的分片数据。就是说,一个IP数据报分片后,每个分片的IP首部中,该字段相同,这样接收端就知道这些分片来自一个数据报
  • Flages(标志): 这个字段也是为IP数据报的分片和重组作用的。用于标识收到的分片后续是否还有分片待接收。1代表后续还有分处,0代表分片结束,所以最后一个分片该值为0
  • Fragment offset(分片偏移):指当前分片数据在整体IP数据报中所处的偏移量,以8字节(64比特)为单位。由此可见,「identification」,「Flages」,「Fragment offset」这三个字段是为IP数据报分片和重组功能作用的字段
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一...
    张芳涛阅读 2,803评论 1 6
  • 1 运输层协议概述 1.1 进程之间的通信 网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑...
    Mr希灵阅读 8,082评论 0 34
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,053评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,060评论 6 174
  • 计算机网络七层模型中,传输层有两个重要的协议:(1)用户数据报协议UDP (User Datagram Proto...
    Q南南南Q阅读 1,712评论 0 3