![]() | 1 d5 2019-07-24 16:55:08 +08:00 ![]() udp 是尽力而为的传输,tcp 要先握手,就算不记得专业词汇,也总能说上点什么吧。 |
![]() | 2 wysnylc 2019-07-24 16:58:09 +08:00 百度的已经够详细了 |
![]() | 3 SilencerL 2019-07-24 16:58:58 +08:00 ![]() 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 ![]() 代码写的不多吧,写多了就能发现很多不同 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 ![]() udp 这例子不太好吧,udp 是丢包,又不是没有校验。 单包内部的正确性,还是值得信任的。 还有,TCP 不是无故重传,是没收到 ack 或者包出问题才重传 |
![]() | 12 Buges 2019-07-24 17:10:00 +08:00 via Android ![]() 虽然协议分层让你可以不关心下层具体内容,但你总不能真就一无所知就上岗吧… |
![]() | 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 ![]() |
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 itechify PRO 人才楼上都是人才笑死我了 |
27 yuanbo6 2019-07-24 18:53:03 +08:00 TCP: 你女朋友发给你短信:你手机开机了吗? 你没回消息 你女朋友继续发短信:你手机开机了吗? 你回了:我手机开机了 你女朋友打电话:今晚我们去吃什么啊?工作好忙我好烦…… balaba ……再见 UDP: 你女朋友发给你短信:你手机开机了吗? 你没回消息 你女朋友继续发短信:你手机开机了吗? 你没回消息 你女朋友发给你短信:你手机开机了吗? 你没回消息 …… 你女朋友发给你短信:我们分手吧 你开机了:卧槽? |
![]() | 28 Mutoo 2019-07-24 18:55:42 +08:00 ![]() 自己实现一个 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 的时候你肯定体会不到,框架都封装好一切了。面试瞎几把问而已 |