与应用程序相关 --- 不同的应用程序有不同应用层协议
自定义应用层协议:
考虑在客/服之间传什么信息 [需求]
考虑信息/数据什么格式组织 [需求]
但是这种自定义太过于灵活,所以有一些特定的数据传输格式,基于这些传输数据
介绍 | 结束标签 | |
HTTP | 是一个标签化的语言,类似XML xml的标签是自定义 html的标签是约定好的 | 分隔符和长度 |
XML | 典型,古老 格式很有特点-通过“标签”形式组织键值对数据 | ; 分隔符 |
JSON | 相当于XML的替代品 与语言无关的数据组织格式 | } 分隔符 |
protobuffer | 上面两个都带宽高,效率下降, 高效组织数据-(谷歌)(数据格式&库)(操作这种格式的数据) 但是为二进制的,不方便看 | 通过声明长度来确定边界 |
这个表的内容不做过多的介绍,只是在这里列出一个纲,详细展开来说,有点long
端与端之间的传输 -- 重点关注起点和终点
核心协议有两个:UDP,TCP
UDP | 无连接 | 不可靠连接 | 面向数据报 | 全双工 |
TCP | 有连接 | 可靠连接 | 面向字节流 | 全双工 |
UDP协议详细介绍:
先给你们看一个UDP协议的报文格式:
在详细一点:
源端口 | 2个字节 | 发件人 |
目的端口 | 2个字节 | 收件人 |
UDP长度 | 2个字节 | 0~65535 |
校验和 | 2个字节 | 检查数据是否出错了 (2) |
UDP载荷 | 一个完整的应用层的数据报 |
1)
2)