(1)TCP是基于连接的,UDP是基于无连接的.

(2)TCP的数据是可靠的,UDP的数据是不可靠的.

(3)TCP的数据是有序的,UDP的数据是无序的.

(4)TCP不保存用户边界,UDP保存用户边界.

(5)TCP速度较慢,UDP速度较快.

(6)TCP是重量级的开销,UDP是轻量级的.

(7)TCP比UDP的头大.

(8)TCP可以进行流控,UDP不能.

(9)TCP和UDP编程模式不同.

总结:

TCP是面向连接的,可靠的,缓慢的,可靠交付以及保证消息顺序的协议。

UDP是无连接的,不可靠的,没有序列保证,但是一个快速传输的协议。

1.连接比较

TCP的连接流程:

UDP无连接

2.可靠性比较

TCP提供交付保证,这意味着一个使用TCP协议发送的消息是保证交付给客户端的。如果消息在传输过程中丢失,那么它将重发,这是由TCP协议本身控制的。UDP是不可靠的,它不提供任何交付的保证。一个数据报包在运输途中可能会丢失。这就是为什么UDP是不适合保证交付的项目.

3.有序性

除了提供交付保证,为TCP也保证了消息的有序性。该消息将以从服务器端发出的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的。TCP协议将会为你排好序。UDP不提供任何有序性或序列性的保证。数据包将以任何可能的顺序到达。这就是为什么TCP是适合需要顺序交付方式的应用,尽管有基于UDP的协议通过使用序列号和重传来提供有序和可靠性的应用,如TIBCO Rendezvous,他实际上就是一个基于UDP的应用。

4.数据边界

TCP不保存数据的边界,而UDP保证。在传输控制协议,数据以字节流的形式发送,并没有明显的标志表明传输信号消息(段)的边界。在UDP中,数据包单独发送的,只有当他们到达时,才会再次集成。包有明确的界限来哪些包已经收到,这意味着在消息发送后,在接收器接口将会有一个读操作,来生成一个完整的消息。虽然TCP也将在收集所有字节之后生成一个完整的消息,但是这些信息在传给传输给接受端之前将储存在TCP缓冲区,以确保更好的使用网络带宽.

5.传输速度

TCP速度比较慢,而UDP速度比较快,因为TCP必须创建连接,以保证消息的可靠交付和有序性,他需要做比UDP多的多的事。这就是为什么UDP更适用于对速度比较敏感的应用,例如:在线视频媒体,电视广播和多人在线游戏。

6.重量级&轻量级

TCP被认为是重量级的协议,而与之相比,UDP协议则是一个轻量级的协议。因为UDP传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。这也反映在用于承载元数据的头的大小。

7.报文头

TCP具有比UDP更大的头。一个TCP数据包报头的大小是20字节,UDP数据报报头是8个字节。TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。而UDP报头只包含长度,源端口号,目的端口,和校验和。

8.流量控制

TCP有流量控制。在任何用户数据可以被发送之前,TCP需要三数据包来设置一个套接字连接。TCP处理的可靠性和拥塞控制。另一方面,UDP不能进行流量控制。

9.编程模式

需要C/C++ Linux服务器开发学习资料私信“资料”(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享

tcp udp区别优缺点_Linux网络编程面试题--tcp和udp的区别相关推荐

  1. java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)

    文章目录 前言 一.网络编程概述 二.网络通信要素概述 1.如何实现网络中的主机互相通信 2.网络通信协议 3.IP和端口号 4.InetAddress类 5.网络协议 6.TCP/IP协议簇 7.T ...

  2. 【面试】TCP、UDP、Socket、HTTP网络编程面试题

    文章目录 什么是网络编程 网络编程中两个主要的问题 网络协议是什么 为什么要对网络协议分层 计算机网络体系结构 1 TCP / UDP 1.1 什么是TCP/IP和UDP 1.2 TCP与UDP区别: ...

  3. TCP、UDP网络编程面试题

    TCP.UDP.Socket.HTTP网络编程面试题 什么是网络编程 网络编程的本质是多台计算机之间的数据交换.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给其他设备,然后接受另外一个设备 ...

  4. 【Linux】网络编程三:TCP通信和UDP通信介绍及代码编写

    参考连接:https://www.nowcoder.com/study/live/504/2/16. [Linux]网络编程一:网络结构模式.MAC/IP/端口.网络模型.协议及网络通信过程简单介绍 ...

  5. TCP/IP网络编程之基于TCP的服务端/客户端(一)

    TCP/IP网络编程之基于TCP的服务端/客户端(一) 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于 ...

  6. socket通信需要网线连接吗_从socket到TCP协议,透彻理解网络编程

    进行程序开发的同学,无论Web前端开发.Web后端开发,还是搜索引擎和大数据,几乎所有的开发领域都会涉及到网络编程.比如我们进行Web服务端开发,除了Web协议本身依赖网络外,通常还需要连接数据库,而 ...

  7. TCP原理,Socket与网络编程入门

    TCP原理,Socket与网络编程入门 开篇 从互联网的诞生以来,网络程序逐渐普及.计算机网络将各个计算机连接到一起使它们可以通信.在现代,网络已成为我们十分重要的一部分.这次不搞些费脑子的东西,就让 ...

  8. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅 1 TCP的开销 a  连接 ...

  9. java网络编程,通过TCP,Socket实现多对一的局域网聊天室

    java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...

最新文章

  1. 51CTO独家调查:谁是十年最具影响力厂商
  2. Linux 下 GitLab 安装教程
  3. 工作401-普通编译模式
  4. BUPT复试专题—统计字母(2008)
  5. 计算机病毒教学评课,计算机病毒评课稿.docx
  6. 删除上传文件中可能包含的空行
  7. microsoft edge怎么截长图_实用技能 | Fireshot 网页截长图工具
  8. 手机自动签到简易应用
  9. 低功耗计算机视觉技术前沿,四大方向,追求更小、更快、更高效
  10. 学习cairo的心得及资料
  11. c语言 统计已初始化的二维数组a[3][4]中非零元素的个数(用指针实现)
  12. libnativehelper 加载库失败
  13. Python|简易银行ATM程序制作
  14. Vue项目加载过慢优化研究
  15. 微信微博聊天记录可作为证据 如何防止聊天记录被恶意利用?可以使用BTchat链语阅后即焚功能
  16. Cocos2d-x 3.0final手机游戏开发视频教程2014 - 自学编程 -(陆续更新中)
  17. 编写轮播图Viewpager
  18. 智哪儿观察:谁在建博会拿奖拿到手软?凯迪仕
  19. App Store Connect 更改已上架App主语言
  20. 新能源充电枪充电桩源代码+PCB+BOM+高压绝缘检测+原理图

热门文章

  1. libuv 中文编程指南
  2. bash shell 学习记录
  3. 安卓mysql导出excel_Android开发实现的导出数据库到Excel表格功能【附源码下载】...
  4. linux 下 select 函数的用法
  5. UBOOT手动设置环境变量
  6. 关于SpringCloud配置中心,ConfigClient需要注意的问题
  7. 生态聚伙伴 方案联价值 华为首次发布企业业务解决方案伙伴计划
  8. 如何给按钮加上链接功能
  9. 基于数据挖掘的旅游推荐APP(四):“我的”模块
  10. 我司用了 6 年的 Redis 分布式限流器,很牛逼了!