目录
网络分层
一. 应用层
应用程序
现成的应用层协议有超文本协议http(不仅仅有文本).
http协议
http://t.csdnimg.cn/e0e8k
http://t.csdnimg.cn/e0e8k
自定义应用层协议,包含需要传输的信息以及格式,将信息转为字符串放入TCP或者UDP的socket中。常见传输格式xml,最流行的是json,但json仍然有网络带宽的消耗,protobuffer是将信息压缩为二进制,带宽消耗较小。
DNS介绍在最下面
二. 传输层
1. 介绍
关注起点和终点
主要有TCP和UDP :
TCP:有连接,可靠传输,面向字节流,全双工。适用于需要确保数据完整性和顺序的场景。eg:文件传输,状态更新。
UDP:无连接,不可靠传输,面向数据报,全双工,接收缓冲区。适用于高速传输和对实时性要求较高的应用。
传输层一个重要概念:端口号
固定占2个字节,
表示范围0~65535(2^16-1),
0一般不用,1~1023是知名端口号,如80是http的端口号22是ssh的端口号(登录远程主机)
2.UDP协议
(1)组成
UDP的首部长度固定为8个字节(64位)64k。它由源端口号、目标端口号、长度和校验和组成。每个字段都占用2个字节。
- 源端口号(Source Port):占用2个字节,表示发送方使用的端口号。
- 目标端口号(Destination Port):占用2个字节,表示接收方使用的端口号。
- 长度(Length):占用2个字节,表示UDP首部和数据的总长度,包括8字节的UDP首部和数据部分的长度。
- 校验和(Checksum):占用2个字节,用于检测UDP首部和数据在传输过程中是否发生错误。
UDP的简洁首部长度是其相对于TCP更轻量级的一个特点,但也意味着它没有TCP那样的可靠性保证和流量控制机制。因此,在使用UDP时需要注意数据的可靠性和完整性问题,并根据具体应用场景决定是否需要额外的机制来处理这些问题。
(2)细节
✅1.当udp数据报携带信息过大,导致服务器与客户端交互的数据量接近64kb,超过上限会导致数据阶段,数据出错,解决办法:
1.将数据拆分为多个包,使用多个UDP传输(✕)如何去拆包组包,开发测试成本大。
2.使用TCP,无包大小的限制(✓)
3.升级UDP,比较麻烦。(✕)UDP是在操作系统内核实现的.
✅2.网络传输中数据是有可能出错的,如何基于校验和来完成数据校验呢?
1.发送方,把要发送的数据整理好(称为 data1),通过一定的算法, 计算出校验和 checksum1发送方把 data1 和 checksum1 -起通过网络发送出去.
2.接收方收到数据,收到的数据称为 data2 (数据可能和 data1 就不一样了),收到数据 ch