tcp udp区别优缺点_Linux网络编程面试题--tcp和udp的区别
(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的区别相关推荐
- java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)
文章目录 前言 一.网络编程概述 二.网络通信要素概述 1.如何实现网络中的主机互相通信 2.网络通信协议 3.IP和端口号 4.InetAddress类 5.网络协议 6.TCP/IP协议簇 7.T ...
- 【面试】TCP、UDP、Socket、HTTP网络编程面试题
文章目录 什么是网络编程 网络编程中两个主要的问题 网络协议是什么 为什么要对网络协议分层 计算机网络体系结构 1 TCP / UDP 1.1 什么是TCP/IP和UDP 1.2 TCP与UDP区别: ...
- TCP、UDP网络编程面试题
TCP.UDP.Socket.HTTP网络编程面试题 什么是网络编程 网络编程的本质是多台计算机之间的数据交换.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给其他设备,然后接受另外一个设备 ...
- 【Linux】网络编程三:TCP通信和UDP通信介绍及代码编写
参考连接:https://www.nowcoder.com/study/live/504/2/16. [Linux]网络编程一:网络结构模式.MAC/IP/端口.网络模型.协议及网络通信过程简单介绍 ...
- TCP/IP网络编程之基于TCP的服务端/客户端(一)
TCP/IP网络编程之基于TCP的服务端/客户端(一) 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于 ...
- socket通信需要网线连接吗_从socket到TCP协议,透彻理解网络编程
进行程序开发的同学,无论Web前端开发.Web后端开发,还是搜索引擎和大数据,几乎所有的开发领域都会涉及到网络编程.比如我们进行Web服务端开发,除了Web协议本身依赖网络外,通常还需要连接数据库,而 ...
- TCP原理,Socket与网络编程入门
TCP原理,Socket与网络编程入门 开篇 从互联网的诞生以来,网络程序逐渐普及.计算机网络将各个计算机连接到一起使它们可以通信.在现代,网络已成为我们十分重要的一部分.这次不搞些费脑子的东西,就让 ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a 连接 ...
- java网络编程,通过TCP,Socket实现多对一的局域网聊天室
java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...
最新文章
- 51CTO独家调查:谁是十年最具影响力厂商
- Linux 下 GitLab 安装教程
- 工作401-普通编译模式
- BUPT复试专题—统计字母(2008)
- 计算机病毒教学评课,计算机病毒评课稿.docx
- 删除上传文件中可能包含的空行
- microsoft edge怎么截长图_实用技能 | Fireshot 网页截长图工具
- 手机自动签到简易应用
- 低功耗计算机视觉技术前沿,四大方向,追求更小、更快、更高效
- 学习cairo的心得及资料
- c语言 统计已初始化的二维数组a[3][4]中非零元素的个数(用指针实现)
- libnativehelper 加载库失败
- Python|简易银行ATM程序制作
- Vue项目加载过慢优化研究
- 微信微博聊天记录可作为证据 如何防止聊天记录被恶意利用?可以使用BTchat链语阅后即焚功能
- Cocos2d-x 3.0final手机游戏开发视频教程2014 - 自学编程 -(陆续更新中)
- 编写轮播图Viewpager
- 智哪儿观察:谁在建博会拿奖拿到手软?凯迪仕
- App Store Connect 更改已上架App主语言
- 新能源充电枪充电桩源代码+PCB+BOM+高压绝缘检测+原理图
热门文章
- libuv 中文编程指南
- bash shell 学习记录
- 安卓mysql导出excel_Android开发实现的导出数据库到Excel表格功能【附源码下载】...
- linux 下 select 函数的用法
- UBOOT手动设置环境变量
- 关于SpringCloud配置中心,ConfigClient需要注意的问题
- 生态聚伙伴 方案联价值 华为首次发布企业业务解决方案伙伴计划
- 如何给按钮加上链接功能
- 基于数据挖掘的旅游推荐APP(四):“我的”模块
- 我司用了 6 年的 Redis 分布式限流器,很牛逼了!