您的位置:首页 > 其它

3.用户数据报(UDP):进程到进程的通信

2016-04-11 18:54 99 查看
UDP首部(8个字节的固定首部):

源端口号:2个字节。如果是源主机是客户端,那么大多数情况下,该端口为短暂端口号,它由该主机上的UDP软件进行选择。如果源主机为服务器端,那么大多数情况下,该端口为熟知端口号。

目的端口号:2个字节。如果是源主机是客户端,那么大多数情况下,该端口为短暂端口号,它由该主机上的UDP软件进行选择。如果源主机为服务器端,那么大多数情况下,该端口为熟知端口号。

长度:2个字节。定义了UDP的整个长度,首部加上数据。数据的长度可以从0到65 507(65 535-8-20)字节(20字节的IP首部和8字节的UDP首部)。因为IP软件将UDP数据报交付给UDP层时已经去掉IP首部,所以这个变量是必须的。虽然IP首部里有整个IP数据报的长度和IP数据报的首部长度,根据这两个可以计算出UDP数据报的长度。

检验和:2个字节。检验整个UDP(首部+数据)出现的差错。

**无连接服务:**UDP每发出的一个用户数据报都是独立的,它们不进行编号。每个用户数据报可以走不同的路径。使用UDP的进程不能向UDP发送数据流。UDP不会将数据流分为许多相关联的用户数据报。数据必须足够小,使其能装入到用户数据报中,只有那些发送短报文的进程才使用UDP。

差错控制和流控制:检验和

封装和拆装:

(1)封装:进程将数据,数据的长度和插口地址传给UDP—>UDP给数据加上UDP首部,然后将UDP数据报和插口地址传给IP—>IP给UDP数据报加上IP首部,IP首部协议字段设为17,将IP数据报传给链路层,链路层给IP数据报加上帧首部和尾部,成为帧。

(2)拆装:链路层对每一帧进行检验,如果没错,去掉首部和尾部,将IP数据报传给IP层—>IP软件对其进行检查,如果没错,去掉IP首部,将UDP数据报传给UDP—>UDP使用检验和对其进行检验,如果没错,去掉UDP首部,将数据和发送端端口传给接收进程。

队列:进程申请端口号成功时,该端口会创建入队列和出队列与该进程绑定,有时只创建入队列。用户数据报到时,如果该数据报的目的端口号没有入队列或入队列发生溢出,则通过ICMP协议向服务器发送不可达报文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: