二.UDP协议
1.用户数据报协议UDP概述
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
1.1特点
- UDP是无连接的,减少开销和发送数据之前的时延。
- UDP使用最大努力交付,即不保证可靠交付。
- UDP是面向报文的,适合一次性传输少量数据的网络应用。
- UDP无拥塞控制,适合很多实时应用。
- UDP首部开销小,8B,TCP20B。
应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文。
2.UDP首部格式
3.UDP校验
伪首部只有在计算检验和时才出现,不向下传送也不向上递交。
17:封装UDP报文的IP数据报首部协议字段是17。
UDP长度:UDP首部8B+数据部分长度(不包括伪首部)。
在发送端:1.填上伪首部2.全0填充检验和字段3.全0填充数据部分(UDP数据报要看成许多4B的字串接起来)4.伪首部+首部+数据部分采用二进制反码求和5.把和求反码填入检验和字段.去掉伪首部,发送
在接收端:1.填上伪首部2.伪首部+首部+数据部分采用二进制反码求和3.结果全为1则无差错,否则丢弃数据报/交给应用层附上出差错的警告。
习题:
选择
1.使用UDP的网络应用,其数据传输的可靠性由(B)负贵。A.传输层B.应用层C.数据链路层D.网络层
UDP本身是无法保证传输的可靠性的,并且UDP是基于网络层的IP的,IP的特点是尽最大努力交付,因此无法在网络层及数据链路层提供可靠传输。因此,只能通过应用层协议来实现可靠传输。
2.以下关于UDP协议的主要特点的描述中,错误的是(B).A.UDP报头主要包括端口号、长度、校验和等字段B.UDP长度字段是UDP数据报的长度,包括伪首部的长度C.UDP校验和对伪首部、UDP报文头及应用层数据进行校验D.伪首部包括IP分组报头的一部分
伪首部只是在计算校验和时临时添加的,不计入UDP的长度。对于D选项,伪首部包括源IP和目的IP,这是IP分组报头的一部分。
3.UDP数据报首部不包含(D)。A.UDP源端口号B.UDP校验和C.UDP目的端口号D.UDP数据报首部长度
UDP数据报的格式包括UDP源端口号、UDP目的端口号、UDP报文长度和校验和,但不包括UDP数据报首部长度。因为UDP数据报首部长度是固定的8B,所以没有必要再设置首部长度字段。
4.UDP数据报中的长度字段(D)。A.不记录数据的长度B.只记录首部的长度C.只记录数据部分的长度D.包括首部和数据部分的长度
长度字段记录UDP数据报的长度(包括首部和数据部分),以字节为单位。
5.UDP数据报比P数据报多提供了(C)服务。A.流量控制B.拥塞控制C.端口功能D.路由转发
虽然UDP协议和IP协议都是数据报协议,但是它们之间还是存在差别。其中,最大的差别是P数据报只能找到目的主机而无法找到目的进程,UDP提供端口功能及复用和分用功能,可以将数据报投递给对应的进程。
6.下列关于UDP的描述,正确的是(D)。A,给出数据的按序投递B.不允许多路复用C.拥有流量控制机制D.是无连接的
UDP是不可靠的,所以没有数据的按序投递,排除A;UDP只在IP的数据报服务上增加了很少的一点功能,即复用和分用功能及差错检测功能,排除B:显然UDP没有流量控制,排除C:UDP是传输层的无连接协议,答案为D。
7.接收端收到有差错的UDP用户数据时的处理方式是(A).A.丢弃B.请求重传C.差错校正D.忽略差错
接收端通过校验发现数据有差错,就直接丢弃该数据报,仅此而已。
8.以下关于UDP校验和的说法中,错误的是(B)。A.UDP的校验和功能不是必需的,可以不使用B.如果UDP校验和计算结果为0,那么在校验和字段填充0C.UDP校验和字段的计算包括一个伪首部、UDP首部和携带的用户数据D.UDP校验和的计算方法是二进制反码运算求和再取反
UDP的校验和不是必需的,如果不使用校验和,那么将校验和字段设置为0,而如果校验和的计算结果恰好为0,那么将校验和置为全1。
9.下列关于UDP校验的描述中,(B)是错误的。A.UDP校验和段的使用是可选的,如果源主机不想计算校验和,那么该校验和段应为全0B.在计算校验和的过程中,需要生成一个伪首部,源主机需要把该伪首部发送给目的主机C.如果数据报在传输过程中被破坏,那么就把它丢弃D.UDP数据报的伪首部包含了P地址信息
UDP数据报的伪首部包含了IP地址信息,目的是通过数据校验保证UDP数据报正确地到达目的主机。该伪首部由源和目的主机仅在校验和计算期间建立,并不发送。
10.下列网络应用中,(D)不适合使用UDP协议.A.客户机/服务器领域B.远程调用C.实时多媒体应用D.远程登录
UDP的特点是开销小,时间性能好且易于实现。在客户服务器中,它们之间的请求都很短,使用UDP不仅编码简单,而且只需要很少的消息;远程调用使用UDP的理由和客户服务器模型一样:对于实时多媒体应用,需要保证数据及时传送,而比例不大的错误是可以容忍的,所以使用UDP也是合适的,而且使用UDP协议可以实现多播,给多个客户端服务;而远程登录需要依靠一个客户端到服务器的可靠连接,使用UDP是不合适的。
11.【2014统考真题】下列关于UDP协议的叙述中,正确的是().Ⅰ.提供无连接服务Ⅱ.提供复用/分用服务Ⅲ.通过差错校验,保障可靠数据传输A.仅ⅠB.仅Ⅰ、ⅡC.仅Ⅱ、IⅢD.Ⅰ、Ⅱ、Ⅲ
传输层分用的定义是,接收方的传输层剥去报文首部后,能把这些数据正确交付到目的进程。C和D选项显然不符。端口号是传输层服务访问点(TSAP),用来标识主机中的应用进程。对于A和B选项,源端口号在需要对方回信时选用,不需要时可用全0。目的端口号在终点交付报文时使用,符合题意,因此选B。
12.【2018统考真题】UDP协议实现分用时所依据的头部字段是()。A.源端口号B.目的端口号C.长度D.校验和
传输层分用的定义是,接收方的传输层剥去报文首部后,能把这些数据正确交付到目的进程。C和D选项显然不符。端口号是传输层服务访问点(T$AP),用来标识主机中的应用进程。对于A和B选项,源端口号在需要对方回信时选用,不需要时可用全0。目的端口号在终点交付报文时使用,符合题意,因此选B。
简答
1.为什么要使用UDP?让用户进程直接发送原始的IP分组不就足够了吗?
仅仅使用IP分组还不够。IP分组包含亚地址,该地址指定一个目的机器。一旦这样的分组到达目的机器,网络控制程序如何知道把它交给哪个进程呢?UDP分组包含一个目的端口,这一信息是必器的,因为有了它,分组才能被投递给正确的进程。此外,UDP可以对数据报做包括数据段在内的差错检测,而P只对其首部做差错检测。
2.使用TCP对实时语音数据的传输有没有问题?使用UDP在传送数据文件时会有什么问题?
如果语音数据不实时播放,那么可以使用TCP,因为TCP有重传机制,传输可靠。接收端用TCP将语音数据接收完毕后,可以在以后的任何时间进行播放。若假定是实时传输,不宜重传,则必须使用UDP。UDP不保证可靠递交,没有重传机制,因此在传输数据时可能会丢失数据,但UDP比TCP的开销要小很多,实时性好。
3.一个应用程序用UDP,到了IP层将数据报再划分为4个数据报片发送出去。结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP层仍然划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成为完整的数据报?假定目的站第一次收到的后两个数据片仍然保存在目的站的缓存中。
不行。重传时,IP数据报的标识字段会有另一个标识符。仅当标识符相同的IP数据报片才能组装成一个IP数据报。前两个IP数据报片的标识符与后两个IP数据报片的标识符不同,因此不能组装成一个IP数据报。
三.TCP协议
1.TCP协议的特点
2.TCP报文段首部格式
序号:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号。确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。数据偏移(首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B。
6个控制位
紧急位URG:URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。
确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
推送位PSH:PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。
复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。
终止位FN:FN=1时,表明此报文段发送方数据已发完,要求释放连接。
窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
检验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6。
紧急指针:URG=1时才有意义,指出本报文段中紧急数据的字节数。
选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认