| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 网络编程十宗罪 -> 正文阅读 |
|
[网络协议]网络编程十宗罪 |
文章目录1、TCP没考虑粘包分包TCP是面向连接的可靠协议,TCP是流式协议,创建TCP套接字的类型为
很多同学面试时对书上的话背诵如流,在实际TCP编程中却没有处理粘包和分包的代码,以为TCP也和UDP一样,客户端每 解决方案: Tips: 2、UDP没考虑丢包在一些追求低延时的场景,为了避免TCP三次握手,我们会考虑使用UDP协议,但是却忽略了系统对丢包的容忍度,没考虑到某个关键包丢失带来的影响,没有重传重组机制。 解决方案: Tips: 3、长连接没考虑应用层心跳TCP连接不是指真的有一条物理的连接,而是通信双方靠状态来记录维持的,从客户端发起 解决方案: Tips: 4、大数据没考虑分片和流量控制见过有人直接将几十M、上百M甚至几G的文件直接读到内存进行发送,试问你家内存TB级别的吗,经的起这么消耗,另外不做发送速率控制和流量控制,可能会导致网络拥塞。 解决方案: Tips: 5、客户端没考虑断线重连网络哪没有个掉线的时候,如果没有断线重连机制,将会严重影响用户体验,试想你正在打游戏,突然掉线了,不给你自动重连,必须重新启动应用程序,是不是很影响心情。 Tips: 6、外网没考虑加密通信在外网环境不使用 解决方案: Tips: 7、没有处理SIGPIPE当向已经收到
8、大小端字节序问题计算机硬件有两种存储数据的方式:大端字节序和小端字节序。网络通信中我们一般使用大端字节序,如果我们不按照对应的字节序来编码解码,就会得到错误的值。 9、多线程发送乱序问题TCP虽然保证重传重组,但是我们自己要保证发送数据的有序性,特别是多线程发送时,即使加锁我们也无法保证哪个线程先发送,除非每个发送的包都是独立完整的一包,不分先后顺序,否则就可能引发乱序问题。 解决方案: Tips: 10、串包问题串包即将本将发送给A的数据发送给了B。通常发生在服务器用fd1接受A的请求,A掉线后,B再上线了,POSIX标准要求每次打开文件的时候必须是要当前最小可以的文件描述符,于是又将fd1分配给了B,如果你继续使用fd1给A发送数据就会发送到了B。 解决方案: Tips: |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:39:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |