传统pc网站,云南省网站建设,个体可以做企业网站吗,模板下载ppt回顾
应用层#xff1a;应用程序#xff0c;数据具体如何使用
传输层#xff1a;关注起点和终点
网络层#xff1a;关注路径规划
数据链路层#xff1a;关注相邻节点的转发
物理层#xff1a;硬件设备
应用层
应用程序
在应用层#xff0c;很多时候#xff0c;…回顾
应用层应用程序数据具体如何使用
传输层关注起点和终点
网络层关注路径规划
数据链路层关注相邻节点的转发
物理层硬件设备
应用层
应用程序
在应用层很多时候都是程序员“自定义”应用层协议的当然有一些现成的协议
1. 根据需求明确要传输的信息
2. 约定好信息按照什么格式来组织
常见的文件组织格式
1. xml
早期的数据组织格式现在很少使用
通过标签来组织数据 request userId1000/userId position100,30/position /request 让数据的可读性变得更好了但书写起来非常繁琐传输时也占用更多网络带宽 HTML 也是这种标签式的数据属于 xml 的变种 xml 是一个通用的数据格式包含什么标签标签的名字标签的含义都是自定义的 HTML是一个专属的数据格式上述的属性都有一个标准委员会规定好的 2. json
键值对结构
{} 把所有的键值对给包裹起来
键值对之间使用 “,” 分割
键和值之间使用 “:” 分割
键固定就是String类型
值可以是数字字符串json数组...
由于json的key固定就是字符串类型可以把key的引号省略掉 { userId:1000, position:100,30 } json的可读性比较好比xml简洁
在网络传输过程中会额外消耗网络带宽key也需要传输
3. protobuffer
protobuffer pb使用二进制组织数据可以保证带宽占用最低相当于是把要传输的信息按照二进制形式压缩了
占用带宽最低传输效率最高适合对性能要求较高的场景
可读性不好影响开发效率
传输层 UDP无连接不可靠面向数据包全双工 TCP有连接可靠传输面向字节流全双工 端口号
写一个服务器必须手动指定一个端口号通过当前的端口号来区分当前主机上的不同的应用程序
写一个客户端客户端在通信的时候也会有一个端口号代码中感受不到系统自动分配
端口号固定就是占2个字节表示的范围是0—65535,。一般来说0是不用的
1—1023 知名端口号
1024—65535 普通端口号
UDP协议 源端口号目的端口号UDP报文长度UDP校验和 UDP载荷数据部分 ———————— UDP报头 ———————
报头分为四部分每部分2字节
报头和载荷之间可以认为认为是“字符串拼接”当然这里是二进制的数据
UDP载荷payload数据部分——完整的应用层数据报
1源IP目的IP在网络层IP协议里
2报文长度
2个字节16位表示的数据表示的范围是0—6553564kb
UDP数据报最长就是64kb
3校验和checksum
本质上是一个字符串体积比原先的数据要小通过原先的数据生成
原始数据相同得到的校验和一定相同
反之得到的校验和相同原数据大概路相同理论上存在概率极低 1. 发送方把要发送的数据整理好data1通过一定的算法得到校验和checksum1 2. 发送方把data1和checksum1一起通过网络发送出去 3. 接收方收到数据收到的数据为data2数据checksum1 4. 接收方根据data2重新计算校验和得到checksum2 5. 对比checksum1和checksum2 计算校验和的方法有很多此处UDP使用的是CRC算法循环冗余算法
把当前计算校验和的数据每个字节进行累加把结果保存到这两个字节的变量中累加过程中溢出也没有问题
此外还有md5/sha1 算法
此处只介绍 md5
这里有一系列的公式来完成 md5 计算
1. 定长无论原始数据多长得到的md5都是固定长度
2. 分散给定两个原始数据哪怕原始数据绝大部分形同只要其中一个字节不同得到的md5值就相差很大
3不可逆
计算md5很容易还原出原始的数据所需的算力超过极限
基于UDP的应用层协议
NFS网络文件系统
TFTP简单文件传输协议
DHCP动态主机配置协议
BOOTH启动协议用于无盘设备启动
DNS域名解析协议
有些应用层协议基于UDP实现的并不算多相比于UDPTCP更占据优势优先使用
TCP协议 数据报 首部报头header 载荷
116位源端口号16位目的端口号和UDP相同
2头部长度
TCP 报头的长度是不固定的变长最短是20字节没有选项最长是60字节选项最长是40字节
4 bit 此处的单位是字节选项是四个字节一个单位的
3保留
线子线不适用占个位置留下了扩展的余地
4选项option可选的
516位校验和 和UDP一样