介绍TCP/IP协议中每一层里面的核心内容~
传输层主要负责端到端之间的传输,重点关注的是起点和终点
核心的协议有两个:
所谓的学习协议,很大工作就是在理解协议的报文格式~~ |
UDP报头格式非常简单,里面只有4个字段~
为什么能使用的端口是 0-65535
?
在传输层协议中,表示端口号,长度就是 2 个 字节~
但是64kb
太小了,如果需要使用UDP
传输一个比较大的数据,就需要考虑进行拆包!!
💙拆包:
把一个大的数据报,拆成多个小的~ |
🌰举个例子:
随着业务的发展,网页上的广告越来越多,广告的样式也越来越复杂,这就导致,商搜服务器和入口服务器之间传输的数据量越来越大~ 直到单个数据报长度已经接近64
kb了~
但是在应用层代码这里,针对广告数据拆包,拆成多个UDP
数据报,分别传输,开发起来会比较复杂,测试起来也比较复杂,风险较高~
真正的解决问题方案:
直接使用 TCP !
TCP 是字节流的,没有对包的长度做出限制~
🎠校验和: 检查数据是否出错了~
网络传输过程中,受到一些干扰,是容易导致传输的数据出错的~
毕竟光信号和电信号,在一些特殊环境中可能受到影响~
比如 强电场,强磁场等
因此就需要保证接收方收到数据之后,能知道这个数据是否正确
校验和 :
UDP
的校验和使用一个比较常见的CRC
算法(循环冗余校验)
把UDP
报文中的每个字节,都进行累加,加和也放到一个两个字节 的数字中
加的过程中如果溢出了,不需要处理~~
最终得到的结果,就是校验和
发送方发送的时候,就先计算一个校验和~
接收方接收的时候按照同样的规则,再算一遍校验和,检查自己算的校验和和发送方算的校验和是不是一样,如果是,说明数据没问题,如果不是,说明数据出错了
校验和例子:
飞雪连天射白鹿,笑书神侠倚碧鸳