• 传输层协议:TCP UDP

TCP和UDP有什么区别?

  1. TCP是面向连接的 UDP是面向无连接。在互通之前,面向连接的协议会先建立连接,如TCP会三次握手。所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。
  2. TCP提供可靠传输,而UDP继承了IP包的特性,不保证不丢失,不保证按顺序到达
  3. TCP是面向字节流,而UDP继承了IP的特性,基于数据包的,一个一个的发,一个一个的收
  4. TCP是可以有拥塞控制,如果包丢失或者网络环境不好会调整行为。UDP则不会。

UDP包头是怎么样的?

UDP包到达服务端,发现MAC地址匹配会取下来,将剩下的包传给处理ip层的代码,把ip头取下来,发现ip地址匹配。ip头里面有个8位协议会存放是UDP/TCP。然后再将数据包传给端口号

UDP的三大特点

  1. 沟通简单(不需要大量的数据结构、处理逻辑、包头字段)
  2. 容易欺骗(可以给任何人传数据。任何人都可以传数据给他,还可以同时传给多个)
  3. 不懂改变(不会根据网络的具体情况进行拥塞控制,也不会理会丢包现象)

UDP的三大使用场景

  1. 需要资源少,在网络情况比价好的内网,或者对于丢包不敏感的应用。(DHCP就是基于UDP协议)
  2. 不需要1对1沟通,建立连接,而是可以广播的应用(DHCP就是一种广播的形式)
  3. 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候

基于UDP的五个使用例子

  1. 网页或者APP的访问。

    QUIC(quick UDP Internet connections 快速UDP互联网连接)

  2. 流媒体协议。

    直播协议RTMP是基于TCP的,但是由于TCP的严格顺序传输,会导致掉帧。

  3. 实时游戏

    自定义可靠UDP协议,自定义重传策略。能够把丢包产生的时延降到最低,尽量减少网络问题对游戏性造成的影响

  4. loT物联网

    物联网通信协议Thread就是基于UDP协议的

  5. 移动通信领域。

    4G网络里,移动流量上网的数据面对的协议GTP-U是基于UDP的。

  • 以上应用针对的是TCP协议传输过程中造成的卡顿时延掉帧现象,而且维护TCP协议代价太大(维护TCP连接需要在内核维护一些数据结构),而改用UDP协议

8.UDP协议的更多相关文章

  1. TODO:Golang语言TCP/UDP协议重用地址端口

    TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题. go net包(据我所知)不允许设置套接字选项. 这在尝试进行TCP NAT时尤其成问题,其需要在同一 ...

  2. 闲来无事,写个基于UDP协议的Socket通讯Demo

    项目一期已经做完,二期需求还没定稿,所以最近比较闲. 上一篇写的是TCP协议,今天写一下UDP协议.TCP是有连接协议,所以发送和接收消息前客户端和服务端需要建立连接:UDP是无连接协议,所以发送消息 ...

  3. UDP协议开发

    UDP是用户数据报协议(User Datagram Protocol,UDP)的简称,其主要作用是将网络数据流量压缩成数据报形式,提供面向事务的简单信息传送服务.与TCP协议不同,UDP协议直接利用I ...

  4. 基于UDP协议模拟的一个TCP协议传输系统

    TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术.详细介绍如下: 1. TCP协议将需要发送的数据分割成数据块.数据块大小是通过MSS(maximum segment siz ...

  5. TCP协议与UDP协议的区别

    TCP协议与UDP协议的区别(转) 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  6. 采用UDP协议的PIC32MZ ethernet bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 经过千辛万苦,今天终于 ...

  7. 采用UDP协议实现PIC18F97J60 ethernet bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). TCP/IP Stac ...

  8. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  9. Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7549340 更多请查看专栏,地 ...

  10. Linux内核--网络栈实现分析(五)--传输层之UDP协议(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7532512 更多请看专栏, ...

随机推荐

  1. PHP的openssl_encrypt方法的JAVA和JS的实现

    这次在JAVA项目中遇到了要使用PHP的openssl_encrypt这个方法来进行加密以下是内容分享: 在PHP中加密内容是: // openssl_encrypt($data, $method, ...

  2. Redraw Beautiful Drawings(hdu4888)网络流+最大流

    Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...

  3. Java GC机制详解

    垃圾收集 Garbage Collection 通常被称为“GC”,本文详细讲述Java垃圾回收机制. 导读: 1.什么是GC 2.GC常用算法 3.垃圾收集器 4.finalize()方法详解 5. ...

  4. C#将图片存放到SQL SERVER数据库中的方法

    本文实例讲述了C#将图片存放到SQL SERVER数据库中的方法.分享给大家供大家参考.具体如下: 第一步: ? 1 2 3 4 5 6 7 8 9 10 //获取当前选择的图片 this.pictu ...

  5. webstorm激活

    选择 License server http://idea.imsxm.com/ http://idea.iteblog.com/key.php (2016.11.16) http://v2mc.ne ...

  6. js-ES6学习笔记-数值的扩展

    1.ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 2.如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法. 3.ES6在Number对象 ...

  7. flex 总结

  8. 图片轮播(Jquery)

    昨天在博客园里面看到imwtr写的图片轮播(淡入淡出)的文章,觉得是否自己可以将该功能写成Jquery插件的形式,也方便之后如果需要的时候可以直接使用. 经过调整和整合,完成了第一版本的jquery. ...

  9. Nginx的rewrite(地址重定向)剖析

    1.rewrite语法: 指令语法:rewrite regex replacement[flag]; 默认值:none 应用位置:server.location.if rewrite是实现URL重定向 ...

  10. JSP内置对象——page对象

    观察可发现,这里面的方法,就是Object这个类下的一些方法,下面进行一个简单的演示,比如“toString()”方法: 运行结果: 这时候看到了一个“org.apache.jsp.page_jsp@ ...