运输层无连接运输—UDP
我们都知道UDP是一种无连接的不可靠运输服务,虽然说其他层可能提供了一些可靠服务,或者加了一些其他的机制来提供一种伪可靠服务,但是终究还是会有分组丢失等情况。
多路复用多路分解
首先要清楚什么是多路复用多路分解
如图所示
左边这一部分,是运输层收集应用层发送到不同套接字的数据,发送到某一个主机,这就是多路复用
右边那一部分,是运输层根据发过来的每个报文段,提取里面的信息,分解到对应的套接字,叫做多路分解
注意一个进程可能由很多个套接字,但是可以根据端口号区分。
面向无连接的多路复用多路分解
一个UDP的套接字由一个二元组标识,就是一个目的IP地址和一个目的端口号
不管源IP和源端口号怎么样,只要目的端口和IP一样,就定位到同一个套接字,从而定位到同一个进程了。
UDP就像一个广告推销一样,走过来就和你说,管你同不同意,一阵和你巴拉巴拉,传递完信息就走。
无连接运输UDP
1:udp它无需建立连接
它可以直接通过目的IP和端口即可传输数据,不想TCP一样还要三次握手,导致时延大大增加
况且,UDP所承载的报文段首部也比TCP要少
2:不用维护一个连接状态
TCP在传输过程中,为了保证可靠性,各种机制,比如确认好,序号这些,都总是要好几个来回,来保证数据传输正确。
但是UDP不一样了,UDP只管根据目的IP和目的端口发送,发送后就不管事了。不用维护一个连接状态
3:分组首部开销小
每个TCP的报文段首部都至少有20字节的开销,而UDP只有8字节
4:发送什么数据和什么时候发送控制更为精细
UDP只要应用层有数据过来,就立即打包传给网络层发送,而TCP因为有一些拥塞控制机制,导致速率和时间不能得到保证。
5:常见的UDP应用场合
DNS服务器:DNS因为有大量的IP和域名信息,如果使用TCP,一些连接手段和控制手段会加大DNS服务器的负载,而UDP只管直接请求信息即可,不需要与服务器有固定的连接
多媒体:在多媒体,比如视频,音乐图片,这些起始是可以允许有一定的延迟或者差错的,它并不会影响太多。
。。。。。。。。
UDP报文段结构
报文段首部由16位源端口号,16位目的端口号构成,还有16位首部长度,16位校验和
这个首部长度应该是首部+数据的长度!!!!!
这个校验和就是检测报文段是否出现了差错的。
UDP校验和
校验和就是将源端口号,目的端口号,首部长度进行二进制加法,然后做反码,这个反码结果就是校验和
二进制加法如果出现了溢出,就需要回卷(即溢出的数字加到最低为)
在接收端将源端口号,目的端口号,首部长度加起来后,然后将作为他们和的反码相加,如果全为1,那么就没有出差错
比如:
注意那个回卷过程
当在接收端将前面三项再加起来的时候,得到的回卷之后的值和检验和也就是图中的反码相加如果全是1说明没有错。
但是请注意,这样的差错检测是能检测没有互补的差错
什么意思呢?
就是如果你的数据有差错
相加的bit位比如:1001+0100=1000+0101=1101的结果是一样的。
这是需要注意的地方。!!!!!