TCP 和UDP的区别
TCP是面向连接的;
所谓连接就是 打开的时候要握手,收发数据的时候要确认(传说中的窗口协议保持滑动过去的窗口都已成功发送,接收方已经成功接收)。
UDP是无连接的。
【网络|UDP/TCP通信小记】所谓无连接就是打开连接无需握手, 收发数据无需确认, 发送方只管发,接收方只管收。
具体到编程过程中,无论是有连接还是无连接 这些都是操作系统帮我们实现的协议细节,
我们编程的时候只需要 打开一个TCP/UDP的缓冲区,然后从这个缓冲区发送和接受数据。
TCP/UDP打开, 发送, 接受 这几个过程 在具体编程中又有了相应区别
TCP打开必须要三次握手,也就是确实和对方取得了联系, 这个scoket缓冲区才是建立起来了,然后你才可以收发数据, 发送的时候其实就是把内容放到缓冲区,操作系统替你发送出去, 如果发送失败, TCP协议有他自己的滑动窗口, 保证你提交的数据都成功发送。
另外TCP服务端有些特殊, 服务器端监听的端口监听到有通信请求,需要再创建一个专门通信的TCP端口进行通信,这就是有时候服务器端连接数会爆掉的原因。
UDP就不一样了, 因为是无连接的,不需要握手, 因此直接打开就行了,有可能对方都没有监听对应的端口,这个socket也是可以成功建立的,发送信息也不会报错。
关于数据库长连接、短连接
长连接或者短连接 其实是刻意认为制定的, 不管TCP还是UDP都是一次打开,通信,关闭的过程, 没有长短这一说, 一般短连接就是 打开,通信一次,关闭长连接就是打开多次通信 甚至只要不出事故就一直通信然后关闭的状态。值得提醒的是长连接会 粘包 拆包 , 因为你可能某一次发送的数据特别大,被放置到下一个缓存区了, 由于长连接没有close 所以 服务器端没有办法通过feof来判断数据是否结束, 所以必须引入协议头来解决包与包之间的分界。
转载于:https://www.cnblogs.com/sailrancho/p/4128957.html
推荐阅读
- 网络|大并发下TCP内存消耗优化小记(86万并发业务正常服务)
- java|Spring如何解决循环依赖(从基础到源码讲解)
- redis|小米面试题(讲一下Redis分布式锁)
- 创建Iceberg表的步骤——《DEEPNOVA开发者社区》
- 分布式原理|分布式数据库理论知识之CAP理论、ACID原则及分布式事务一致性算法
- 服务器|EsgynDB Troubleshooting - 网卡MTU导致跨网段访问数据库失败
- 面试|程序员面试宝典(第4版)
- TcaplusDB|腾讯数据库TcaplusDB-中秋花好月又圆
- 缓冲|@Cacheable注解