关于TCP和UDP的通俗理解
TCP和UDP是网络基础,很多公司面试也都会问到,今天我在这里,根据大神们的讲解,自己总结借鉴一下。
首先,先提一个问题:英雄联盟是TCP还是UDP?
这个问题对于游戏玩家,可能大多数人都没有想过。一般游戏中TCP和UDP会同时用的,如果对于数据传输速度要求非常高的场景,比如FPS,MOBA等游戏过程中,用户对战时候的数据肯定是要用UDP来传输的,并且在程序层面保证传输的可靠性,包括自己做校验等;但其它模块,比如大厅里啊,买东西啊,创建房间啊等等,都是可以TCP实现的。魔兽世界用TCP是因为他对数据的即时要求并没有那么高,而且有很多的校验啊,技能读条等等,在副本中晚跑个一秒或者放技能多读一秒,影响并没有那么大,但如果是LOL,那可能团战都要输了。
总结来说就是,大型游戏一般都是TCP和UDP都会用,比如在LOL中的团战中,每个人的操作、技能释放、走位都有很强的实时性,这个时候如果用TCP,发生丢包之后,会重传,堵塞数据传输,这样就会,你卡了一下,等你缓过来,游戏没准已经结束了。但是在商店买装备,排位等待,邀请队友这种对实时性要求不高,几秒的延迟并不会影响太多的时候,可以用TCP实现。
(1)TCP和UDP的区别是什么?
详细的原理我这里就不讲了,我这里简单的总结描述一下。首先,TCP是面向连接,可靠性好,基于字节流。UDP不面向连接,不可靠,基于数据报。
这里的连接不是真实存在的,TCP的面向连接只不过三次握手在客户端和服务端之间初始化好了序列号。只要满足TCP的四元组+序列号,那客户端和服务端之间发送的消息就有效,可以正常接收。虽然说TCP可靠,但是可靠的背后却是无尽的复杂和痛苦,滑动窗口,拥塞避免,四个超时定时器,还有什么慢启动啊,快恢复,快重传啊,所以可靠性的实现也让TCP变的复杂,在网络的状况很差的时候,TCP的优势会变成劣势。
对于可靠不可靠而言,没有绝对的说法,TCP可靠仅仅是在传输层实现了可靠,我也可以让UDP可靠啊,那么就要向上封装,在应用层实现可靠性。因此很多公司都不是直接用TCP和UDP,都是经过封装,满足业务的需要而已。
(2)那什么时候用TCP,什么时候用UDP
不管用TCP和UDP,应用只要看需求,对于TCP更加注重的是可靠性,而不是实时性,如果我发送的数据很重要一点也不能出错,有延迟无所谓的话,那就TCP啊。UDP更加注重是速度快,也就是实时性,对于可靠性要求不那么高,所以像斗鱼,熊猫这些在线直播网站应该在UDP基础是封装了其他协议,比如视频实时传输协议。而且UDP的支持多播,那就很符合这些直播网站了,有时候看直播视频卡顿,人飘了那可能就是丢包了,但是你也只能往下看。
关于TCP和UDP的通俗理解的更多相关文章
- TCP/UDP协议、理解三次握手四次挥手、Socket
一.什么是socket? 中文名叫套接字,是对底层的 TCP IP UDP 等网络协议进行封装,使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议. 在程序员的言论,他就是一个封装好的模块,要 ...
- TCP/IP网络协议的通俗理解,SOCKET,HTTP,SOAP
TCP/IP,HTTP,SOAP等协议之区别 术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想 ...
- 一些重要的计算机网络协议(IP、TCP、UDP、HTTP)
一.计算机网络的发展历程 1.计算机网络发展 与其说计算机改变了世界,倒不如说是计算机网络改变了世界.彼时彼刻,你我都因网络而有了交集,岂非一种缘分? 计算机与网络发展大致经历如下过程:
- OSI七层模式简单通俗理解
OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住.今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记.本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人.总体来说,OS ...
- osi(open system interconnection)模型的通俗理解
OSI模型的理解: 以你和你女朋友以书信的方式进行通信为例. 1.物理层:运输工具,比如火车.汽车. 2.数据链路层:相当于货物核对单,表明里面有些什么东西,接受的时候确认一下是否正确(CRC检验). ...
- 初入网络系列笔记(2)TCP和UDP
一.借鉴说明,本博文借鉴以下博文 1.BlueTzar,TCP/IP四层模型, http://www.cnblogs.com/BlueTzar/articles/811160.html 2.叶剑峰,漫 ...
- http、tcp、udp、OAUTH2.0网络协议区别
一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RAR ...
- 基于socket的TCP和UDP编程
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
- (转)基于socket的TCP和UDP编程
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
随机推荐
- ObjectMapper将josn字符串转化为List
一.利用ObjectMapper将json字符串转为List Student.java package objectmapper; import java.io.Serializable; publi ...
- 阿里面试常问的redis数据结构,建议收藏
关于Redis redis是一个开源的使用C语言编写的一个kv存储系统,是一个速度非常快的非关系远程内存数据库.它支持包括String.List.Set.Zset.hash五种数据结构.除此之外,通过 ...
- 命名秘籍周获近五千星——GitHub 热点速览 v.21.04
作者:HelloGitHub-小鱼干 命名一直是编程界的难点,这次 naming-cheatsheet 就能帮上你的忙.按照它的 SID(Short..Intuitive.Descriptive)原则 ...
- 电脑微信电脑PC 多开/防撤回 补丁
简介 经常使用微信电脑版的用户都会发现一个蛋疼的事情,那就是微信PC版不支持多开,也就是不能同时登陆多个账号,这对于需要在电脑上登陆多个微信账号的朋友来说肯定是极其的不方便.另外有的时候别人撤回了一些 ...
- 把Win10变成Mac OS:比任何美化主题都好用的工具
摘要:把Win10变成Mac OS:比任何美化主题都好用的工具 - 这是一款真正意义上的把Windows变成MacOS的软件,不用更换主题,不用修改Dll,直接是程序接管了Explorer,比任何美化 ...
- java虚拟机——轻松搞懂jvm
一.JVM体系结构概述 JVM位置 JVM体系结构 1.1 类加载器 ClassLoader 类加载器(ClassLoader)负责加载class文件,class文件在文件开头有特定的文件标示,并 ...
- MonkeyScript
MonkeyScript的简单使用 一. 什么是MonkeyScript MS 是官方提供的,除了像猴子一样随机乱点之外,还可以通过编写脚本的形式,完成一系列固定的操作.MS 提供一整套完善的 API ...
- Redis分布式锁升级版RedLock及SpringBoot实现
分布式锁概览 在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式.但是现在 ...
- Web漏洞扫描-AppScan
Web漏洞扫描-AppScan 一.AppScan简述 二.功能及特点 一.AppScan简述 IBM Security AppScan是一个适合安全专家的Web应用程序和Web服务渗透测试解决方案. ...
- Java——方法
Java 方法 Systom.out.println():其中,println()是一个方法(Method),而System是系统类(Class),out是标准输出对象(Object).这句话的意思是 ...