怎么免费建立网站做推广,帮网站做推广赚钱吗,小企业网站建设的大品牌,网站建设相关新闻阿华代码#xff0c;不是逆风#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力#xff01;#xff01; 希望本文内容能够帮助到你#xff01;#xff01; 目录
一#xff1a;自定义协议
1#xff1a;自定义协议
#xff08;1#xff09;交互哪些信息
… 阿华代码不是逆风就是我疯 你们的点赞收藏是我前进最大的动力 希望本文内容能够帮助到你 目录
一自定义协议
1自定义协议
1交互哪些信息
2数据的具体格式
2反序列化
3业界方案
二xml方案
1优点
2缺点
三json方案
1结构
2优点
四protobuffer方案
五传输层
六UDP协议
1特点
七校验和/检验和
1比特翻转
2数据参与
3CRC算法
4md5算法特点 一自定义协议
程序员在调用操作系统提供的网络API写出来的代码都是属于应用层的回顾五个层级应用层传输层网络层数据链路层物理层应用层自身就有许多已经创建好的协议但多数情况下是需要程序员自定义协议的
1自定义协议
主要约定好两方面的内容
1交互哪些信息
解释服务器和客户端之间要交互哪些信息由产品经理规定需要传输哪些信息
2数据的具体格式
解释客户端按照约定构造、发送请求解析返回的响应 服务器按照约定解析请求构造、发送响应
2反序列化
Client和Server之间交互的是“结构化数据”网络传输的数据其实是“字符串”“二进制bit流”约定协议的过程就是把“结构化数据”转化为“二进制bit流”的过程
结构化数据———转化———字符串/二进制bit流 叫做“序列化”
字符串/二进制bit流———还原———结构化数据 叫做“反序列化”
3业界方案
为了让程序员更方便的约定这里的协议格式给出了几个可以直接套用的方案
二xml方案 1优点
1可读性好标签的名字能够对数据起到描述作用
2延展性好后续增加属性只需新增标签不影响原有代码
2缺点
整个数据冗余信息非常多标签占据的空间可能反而比数据本身更多了在网络传输中会消耗更多的网络带宽网络带宽这种硬件资源很贵
三json方案 1结构
键值对结构
键和值用 分开
键值之间用 , 分开
多个键值对用{}括起来构成一个json对象
多个json对象用 , 分开 整体用[]括起来形成一个json数组
2优点
1可读性好
key对数据起到解释说明
2占用空间更小
相比较于xml中需要开始和结束两个标签json只用了一个key更节省网络带宽这里的节省是相对的json中的key也会被多次创建
3延展性好
四protobuffer方案
开发阶段写代码定义出有哪些资源描述每个字段的含义真正运行的时候实际传输的数据是不包含这样的描述信息
优点程序的运行效率高
缺点不利于程序猿阅读
所以只有那些对性能要求非常高的场景才会使用protobuffer
五传输层
在数据传输过程中虽然传输层是操作系统内核中已经实现好的但是我们也需要重点关注我们使用的socket的API都是由传输层提供的
对于端口号它是一个2字节的整数02的16次方-1在使用端口号的时候[1,1024]都是属于系统保留的自用的端口号(知名端口号)
六UDP协议
1特点
回顾一下无连接不可靠传输面向数据报全双工
UDP数据报报头载荷 UDP报头中4个字段每个字段2个字节共8个字节
协议中报头用2个字节表示端口号能表示的范围为2^16-165535即[0,65535]
换算一下为64KB——即UDP数据报最大长度为64KB载荷部分应该是64KB-8
七校验和/检验和
1比特翻转
验证数据在传输过程中是否正确数据在网络传输中可能会坏掉网络传输本质是发送方的物理层把二进制数据转化为光电信号发送出去。再由另一端的物理层接收光电信号在转化为二进制数据在这个过程中很有可能由于外界信号的干扰发生“1-0”“0-1”这样的翻转情况导致我们的数据出现问题校验和的作用就是用来识别数据是否出现比特翻转的。
2数据参与
校验和是拿着原始信息的一部分内容参与计算的例如把这样一段字符串“张三今天想吃麻辣烫”传输在传输之前会把字符串通过某种运算转化成例如“AD343SCSCAF2321”这样的密码串校验的时候再运算一次在运算转化的过程中数据可能会超出范围不打紧通过比较两次运算的结果可以知道该次数据传输是否是一致的正确的
3CRC算法 4md5算法特点
1定长
无论原始数据有多长算出来的md5最终值都是固定长度
2分散
计算md5的过程中原始数据只要变化一点点最后得到的md5值就会差异很大
3不可逆
给定一个md5的值还原为原始的字符串理论来说不可行因为在字符串转化为md5的过程中已经有很多数据丢失了特点1有兴趣的友友可以在浏览器上搜一下有点像加密——密码学