2019 iOS面试题-----网络相关之UDP的特点、UDP的报文结构及差错检测

2019 iOS面试题大全---全方面剖析面试
2019 iOS面试题-----网络相关之HTTP协议
2019 iOS面试题-----网络相关之HTTPS、对称加密、非对称加密
2019 iOS面试-----一个基于UDP的简单的聊天Demo(用C语言、python、GCDAsyncUdpSocket来实现UDP通信)
2019 iOS面试题-----网络相关之UDP的特点、UDP的报文结构及差错检测
2019 iOS面试题-----网络相关之TCP、三次握手、四次挥手、代码实现
2019 iOS面试题-----网络相关之TCP进阶:可靠数据传输、流量控制(滑动窗口)、拥塞控制
2019 iOS面试题-----网络相关之DNS
2019 iOS面试题-----网络相关之Cookie和Session
2019 iOS面试题-----网络相关之IP协议、IP数据报分片、IPv4编址、网络地址转换(NAT)
2019 iOS面试题-----网络相关之IPv6、从IPv4到IPv6的迁移
TCP(Transmission Control Protocol 传输控制协议)和UDP(User Datagram Protocol 用户数据报协议)同属传输层协议

一、UDP的特点

UDP是是面向非连接的协议,传送数据不需要和服务器连接,只需要知道ip和监听端口,不需要链接没有目的的socket,只是将数据报投递出去,不管接收方是否成功接收到,是一种不可靠的传输。
既然UDP是不可靠数据传输协议,那为什么那么多应用去选择UDP呢?

1、关于何时、发送什么数据的应用层控制更加精细
  • 只要应用将数据传递给UDP,UDP就会将此数据打包进UDP报文段并立刻将其传递给网络层。
  • 而TCP则是有个拥塞控制机制,以确保数据能够安全传输,而不管可靠传输成功需要用多少时间。
  • 所以有些实时应用,比如微信视频、语音都是更希望数据能够及时发送,为此可以容忍一部分数据丢失,比较适合用UDP
2、无需连接建立
  • 众所周知,TCP在数据传输前需要经过三次握手,UDP却不需要做任何的准备即可进行数据传输,因此UDP不会引入建立连接的时延。
  • 这也是DNS运行在UDP而不是TCP上的主要原因。
  • 而HTTP协议之所以使用TCP,是因为对于HTTP协议来说,可靠性是至关重要的。
3、无连接状态
  • TCP需要维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数以及序号与确认号的参数。(后面如果有时间,会详细说下TCP的拥塞控制方案,对该方案来说,这些状态信息都是必要的)
  • 而UDP不需要维护连接状态,也不用跟踪这些参数
4、分组首部开销小

每个TCP报文段都有20字节的首部开销,而UDP仅有8字节的开销

所以,如非必要,比如电子邮件,远程终端服务,web,以及文件传输,需要可靠地数据传输,会去采用TCP。其余的尤其是对实时性要求高的应用,比如实时视频会议,网络电话,一般都会选用UDP

二、UDP的报文结构

UDP报文段结构

应用层数据占用UDP报文段的数据字段。UDP首部只有4个字段,每个字段由2个字节组成,即UDP首部仅有8字节。

  • 端口号:可以使目的主机将应用数据交给运行在目的端系统中端相应进程,执行分用功能。


  • 长度:该字段指示了在UDP报文段中的字节数(首部+数据)

  • 检验和:接收方使用检验和来检查在该报文段中是否出现了差错,即差错检测。

三、UDP差错检测

UDP检验和提供了差错检测功能。
检验和相当于用于确定当UDP报文段从源到达目的地移动时,其中的比特是否发生了改变(比如,由于链路中的噪声干扰或存储在路由器中时的引入问题)。
发送方的UDP对报文段中的所有16比特字对和进行反码运算,求和时遇到的任何溢出都被回卷。得到的结果被放在UDP报文段中的检验和字段。

比如,假定有下面三个16比特的字:

0110011001100000
0101010101010101
1000111100001100

这些16比特字的前两个之和是:

1011101110110101

再将该和与第三个16比特字相加,得出:

10100101011000001

发现溢出了,该和就要被回卷,即把首位的1加到最后一位去,得出:

0100101011000010

然后对其进行反码运算,所谓反码运算,即是将所有的1换成0,0换成1

1011010100111101

这就是得出的检验和。而在接收方,全部的4个16比特字(包括检验和)加在一起。如果分组中没有引入差错,显然在接收处该和将是1111111111111111。而如果这些比特之一是0,那我们就知道该分组中出现了差错。
UDP在端到端基础上在运输层提供差错检测,这就是在系统设计中被称颂的端到端原则

而UDP虽然提供差错检测,但它对差错恢复无能为力。这就需要用到可靠数据传输--TCP了

2019 iOS面试-----一个基于UDP的简单的聊天Demo(用C语言、python、GCDAsyncUdpSocket来实现UDP通信)

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

推荐阅读更多精彩内容