传输层重要协议:进程到进程
一、UDP
用户报文协议,和TCP对比,UDP不可靠、无连接、面向报文。
1、网络的基本情况就是不可靠的。
A主机->B主机,期间可能要经过很多的路由器来中转的。
①没有谁能保证数据一定是可以发生到对方的,可能丢失(丢包)。
②即使数据发送给对方了,也不能保证数据就是无差错的(不考虑有人故意修改数据的情况)。
③依次发送多个数据后,不能保证接收方按照发送顺序接收到数据(乱序)。
2、UDP作为一种最简单的传输层协议,基本上没有做什么的操作来帮助用户处理复杂的网络环境,所以UDP保留下来这种不可靠的特性。
3、UDP报文的头信息(header)
4、checksum的作用&简单的工作机制
①判断收到的报文(数据)是否出现差错的;
②利用hash函数的原理:通过设计一种hash函数,达到冲突率很低的一种情况;
发送端:checksum(payload)=>校验和1 把校验和1填写到UDP的header中
接收端:checksum(payload)=>校验和2 比较校验和2 和 header中的校验和1
如果不等:payload在传输过程中一定出现差错了
如果相等:大概率payload没有出现差错
③针对校验和可以对上的情况,正常接收数据。
针对校验和对不上的情况,直接丢弃包:UDP不是特别可靠。
UDP协议的最适用场景:对实时性要求较高,对可靠性要求较低的场景——实施聊天(语言、视频聊天);UDP支持广播。如果有广播需求,也可以考虑用UDP。
二、TCP协议
传输控制协议。
目标:以进程为单位传输数据;追求可靠性。
1、什么是可靠性
TCP只能保证尽自己最大的可能,把数据有序地发送给对方,但不能保证一定能发送给对方。
①尽可能去发送给对方;
②即使发送不过去,也有反馈;
③保证对方接收是有序的;
④保证对方不会收到有差错数据;
⑤TCP会设计一些机制,来尽可能的优化网络,提高对方收到的可能性。
连接对象:平时理解,双方通信的代表。对于TCP协议栈,维护信道相关的一组数据。