1
d5 2019-07-24 16:55:08 +08:00 1
udp 是尽力而为的传输,tcp 要先握手,就算不记得专业词汇,也总能说上点什么吧。
|
2
wysnylc 2019-07-24 16:58:09 +08:00
百度的已经够详细了
|
3
SilencerL 2019-07-24 16:58:58 +08:00 27
TCP:
你想听一个关于 TCP 的笑话吗 你想听一个关于 TCP 的笑话吗 你想听一个关于 TCP 的笑话吗 UDP: 你想一个于 UP 笑吗 // ?可能举的例子不太严谨 |
4
frozenway 2019-07-24 16:59:05 +08:00
一个是打电话,一个是发短信
|
5
Chenamy2017 2019-07-24 17:00:38 +08:00
你都写代码了,应该清楚他们的区别。
|
8
CallMeReznov 2019-07-24 17:04:03 +08:00
TCP 是制导导弹,UDP 是射后不管
|
9
FelixLiu 2019-07-24 17:05:58 +08:00 2
代码写的不多吧,写多了就能发现很多不同
1.UDP 适合多点传输,因为不需要连接,适合服务器转发给多个主机 2.实时视频流传输 UDP,你懂的 3.UDP 怎么处理包乱序,毕竟 TCP 不需要 4.UDP 包要多大才合适?你知道 UDP 分片丢一个,整个 UDP 包就作废,so。。。。 5.TCP 大多时候是比 UDP 高效的,so。。。 |
10
laojiaqing 2019-07-24 17:06:24 +08:00
建议你多看看书
|
11
wweir 2019-07-24 17:06:26 +08:00 via Android 1
udp 这例子不太好吧,udp 是丢包,又不是没有校验。
单包内部的正确性,还是值得信任的。 还有,TCP 不是无故重传,是没收到 ack 或者包出问题才重传 |
12
Buges 2019-07-24 17:10:00 +08:00 via Android 1
虽然协议分层让你可以不关心下层具体内容,但你总不能真就一无所知就上岗吧…
|
13
xnode 2019-07-24 17:13:25 +08:00
tcp 是彬彬有礼的表白
udp 是直接脱裤子就上 |
14
jasonyang9 2019-07-24 17:34:47 +08:00
@wweir 假设每个字一是个包
|
15
q397064399 2019-07-24 17:38:16 +08:00
一个是可靠性传输
一个是不可靠性传输, 有根本性的区别吧,平时写代码不考虑 udp 的丢包情况? |
16
caola 2019-07-24 17:43:48 +08:00
草案中的 HTTP3 就是基于 UDP,草案一但通过,应该用不久就会代替 TCP 成为主流
|
17
mattx 2019-07-24 17:47:51 +08:00
没写过 udp 代码吧? 写 udp 连接代码要在逻辑层考虑可靠(会丢包和乱序等)
udp 比 tcp 好的地方是, tcp 拥塞控制(重传, 丢包策略等)非常复杂, 在一些情况下表现不好, 而且比较公平 封装的 udp 可以用更不公平的策略等, 可以去看看 kcp github 官网介绍. |
18
twoyuan 2019-07-24 17:48:35 +08:00 9
|
19
hansenwang 2019-07-24 17:58:12 +08:00 via iPhone
@twoyuan 666
|
20
Yyyye 2019-07-24 18:03:14 +08:00 via Android
tcpip 那本书里面有的
|
21
zibber 2019-07-24 18:09:57 +08:00
怪兽的设备就是 tcp 检查设备心跳 upd 发送业务数据
|
22
CEBBCAT 2019-07-24 18:20:05 +08:00
这个帖到底是想说什么啊,实现细节 Google 一大吧,吐槽这个节点也不太对吧
|
23
gliyechen 2019-07-24 18:31:47 +08:00
tcp 会保证数据包被收到,需要对方反馈。
udp 无所谓对方收不收到,反正我发出去了。 |
24
taogen 2019-07-24 18:33:52 +08:00 via Android
1. TCP 是面向连接(三次握手),UDP 是无连接的。
2. TCP 提供可靠数据传输服务,UDP 提供不可靠传输。 3. TCP 有拥塞控制(传输速度根据丢包情况调整),UDP 最大速度传输。 |
25
taogen 2019-07-24 18:46:25 +08:00 via Android
4. TCP 报文头 20 字节,UDP 报文头 8 字节
|
26
oneisall8955 2019-07-24 18:52:18 +08:00 via Android
人才楼上都是人才笑死我了
|
27
yuanbo6 2019-07-24 18:53:03 +08:00
TCP:
你女朋友发给你短信:你手机开机了吗? 你没回消息 你女朋友继续发短信:你手机开机了吗? 你回了:我手机开机了 你女朋友打电话:今晚我们去吃什么啊?工作好忙我好烦…… balaba ……再见 UDP: 你女朋友发给你短信:你手机开机了吗? 你没回消息 你女朋友继续发短信:你手机开机了吗? 你没回消息 你女朋友发给你短信:你手机开机了吗? 你没回消息 …… 你女朋友发给你短信:我们分手吧 你开机了:卧槽? |
28
Mutoo 2019-07-24 18:55:42 +08:00 1
自己实现一个 TCP over UDP 你就知道区别了。
|
29
stephenyin 2019-07-24 19:08:25 +08:00
@SilencerL #3 这样更直观:
TCP: 你 想听 一个 关于 T CP 的笑话 吗 你想 听一个关 于 TCP 的笑 话 吗 你想 听一个关于 TC P 的 笑话吗 UDP: 你想一个于 UP 笑吗 |
30
polebug 2019-07-24 19:12:47 +08:00
以互喷为例
TCP 是两个人先打声招呼:A: hi 可以开始喷了吗? B: 可以了 然后开始回合制对喷:A: 你傻逼 B: 不,是你傻逼 如果 A 没收到 B 的回复,会把刚刚那句再骂一遍 注意 TCP 只能两个人对喷,别人不能加入 UDP 是想喷就喷 A: blablablabla 也不管 B 听没听见 A 自己喷舒服就行 而且 A 可以喷 B 也可以同时喷 C : 你,还有你你你,你们都傻逼 :) |
31
jamesliu96 2019-07-24 20:15:31 +08:00 via Android
1. 连接 2. 可靠性 3. 拥塞控制
|
32
wweir 2019-07-24 20:15:51 +08:00 via Android
@Mutoo 这有啥,直接把 udp 当 IP 用呗,反正两个特性基本一致。
丢包的事,直接丢给内层的 TCP 重传好了 |
33
wweir 2019-07-24 20:21:39 +08:00 via Android
TCP 本质上是全双工的流。
而 udp 则是完全是数据包,拆包、序列化、丢包都要考虑。 作为纯粹的包,可以使用很多 IP 层的特性,如广播、多拨。而 TCP 带来便利的同时,也屏蔽了很多可能性。 从业务人员的角度看,大概可以理解为:一个是重型框架,一个是轻量封装库 |
34
dgjungle 2019-07-24 20:38:11 +08:00
udp 是我给你传过来了哦 tcp 是在么?你是某某么?我要给你东西咯?拿好你的东西。大概是这么个意思吧
|
35
opengps 2019-07-24 20:41:22 +08:00
tcp 是拨通电话对话
udp 是隔空喊话 |
37
alw 2019-07-24 21:48:01 +08:00
你想知道的知识在《 TCP/IP 协议详解 卷一》,英文版更佳。
|
38
sinxccc 2019-07-24 22:44:32 +08:00
概念几句话就能讲明白的东西,各种 xjb 类比…
|
39
koebehshian 2019-07-24 23:38:52 +08:00
TCP 内建收到确认功能,UDP 就是就是裸的 IP 加了个端口号
|
40
2kCS5c0b0ITXE5k2 2019-07-25 00:19:55 +08:00
TCP: JD 快递
UDP: 3 通 |
41
fghjghf 2019-07-25 08:43:00 +08:00
我没有 JB 类比。
tcp 三次握手 4 次挥手这个不用说了吧,关键是 tcp 每次发包,都会有 ack 验证,检测数据包是否完整。所以性能比 udp 是低了点。 写 socket 的时候都一样的,ip+端口号 写 webapp 的时候你肯定体会不到,框架都封装好一切了。面试瞎几把问而已 |