一、tcp和udp区别?
三次握手安全:tcp建立连接(三次握手),安全可靠(有序,无差错、无丢失、无重复);
建立连接:udp通信前不需建立连接,不可靠传输(视频、音频通话);
分组开销:TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组;UDP是面向数据报的传输,没有分组开销。
控制:TCP提供拥塞控制和流量控制机制;UDP不提供;
总结:tcp安全、面向字节流传输有分组开销、有流量和拥塞控制机制;
二、post和get?
长度:post请求长度无限制,get有限制;
参数位置:post参数放在body,get请求参数放在url(参数暴露);
参数限制:GET请求参数只能是ASCII码(所以中文需要URL编码),而POST请求传参没有这个限制;
实质相同点:其实,GET和POST本质上两者没有任何区别。他们都是HTTP协议中的请求方法。底层实现都是基于TCP/IP协议。
三、线程和进程;
任务调度:线程是CPU任务调度的基本单位;
资源分配:进程是系统资源分配的基本单位,多个线程共有进程资源;
四、http与https
1、ca:https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、ssl(明文与加密):http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、端口80与443:http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、状态:http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
https://www.cnblogs.com/wqhwe/p/5407468.html
五、http与socket区别:分别是短连接,和长连接;
六、socket的拆包和分包
原因:发送端优化算法,或者接收端延迟接收;
方案:添加包头,通过包头数据长度信息读取数据;
(完整的数据包 = 服务号(id) + 数据包长度(length) + 数据)
https://www.jianshu.com/p/9ea0f0c84990
七、结构数据序列化工具:protocol buffer(协议缓冲区,独立的数据交换格式)对比json、xml
1 二进制流:序列化后,数据是二进制流而不是字符串:
2 协议文件:序列化需要事先定义数据格式
(.proto 协议文件
),反序列化(还原)需要预定义好的数据格式;
3 传输大量数据时,更小更快;使用维护更简单;且跨平台、跨语音;
备注:ios开发 : pod protobuf
https://blog.csdn.net/mzpmzk/article/details/80824839
八、大头(socket传输时,低字节在高地址)与小头(intel的cpu,低字节在低地址)