【网络】——UDP复习笔记

目录

1.UDP报文结构

2.UDP缓冲区

3.UDP特点

4.课后题


1.UDP报文结构

2.UDP缓冲区

  • UDP没有真正意义上的发送缓冲区,应用层调用sendto()函数直接将数据应用层的数据拷贝给传输层,传输层再构建UDP报头,然后再交付给网络层执行发送数据的动作。
  • UDP具有接收缓冲区,但是这个缓冲区不能保证收到的UDP数据与发送的UDP数据顺序是一致的,例如:如果发送端发送“123”给接收端,接收端收到的数据可能是"132",并且如果这个缓冲区满了以后,再到达的数据就丢弃掉。

3.UDP特点

  • 1.无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。UDP中的发件人会在没有提前联系对方的情况下,单方面地发送数据。这种通信叫做无连接
  • 2.不可靠:没有确认机制和重传机制,主机A给主机B发送的数据因为在网络中丢包了,主机A和主机B是都不知道的,而且UDP不能收到的数据与发送的数据是一致的。

  • 3.面向数据报:不能灵活的控制读写数据的次数和数量。应用层交给UDP多长的数据,UDP原样发送,既不会拆分,也不会合并。例如:
如果发送端调用一次 sendto, 发送 100 个字节 , 那么接收端也必须调用对应的一次 recvfrom, 接收 100 个 字节; 而不能循环调用 10 recvfrom, 每次接收 10 个字节 ;
  •  4.UDP是全双工通信,它既能读也能写
  •  5.UDP可以给多个接收端发送数据。

4.课后题

问题一:UDP怎样将报头和和有效载荷分离?

UDP的报头固定是8个字节,UDP报文的前8个字是UDP报头,剩下的字节是就有效载荷,如果一个UDP报文是20个字节,那么它的有效载荷是12个字节。

问题二:UDP怎样把数据传递到应用层的协议呢?

通过报头中的目的端口号就可以直接将数据交给上层应用。

问题三: UDP协议属于内核协议栈(c语言),用c语言如何表示报头?

 

问题四:UDP不保证可靠性?为什么会有UDP协议的存在?
UDP不保证可靠性,是一个中性词。TCP保证可靠性,那么它就会做更多的工作,付出的时间成本和空间成本就越高,效率不高。TCP协议和UDP协议是互补的,不存在TCP协议比UDP协议好,只是TCP和UDP的应用场景不一样的。

猜你喜欢

转载自blog.csdn.net/sjp11/article/details/123619036