为何说UDP面向报文,而TCP面向字节流

UDP:

发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对由应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。也就是说,无论应用层交给UDP的报文有多长,UDP都会照样发送,即一次发送一个报文。

在接收方的UDP,对IP层交上来的UDP用户数据报,在去除首部后就原封不动的交付给上层的应用进程。也就是说,UDP一次交付一个完整的报文。因此,应用程序必须选择合适大小的报文。若报文过长,UDP把它交付给IP层后,IP层在传送时可能要进行分片处理,这会降低IP层的效率。反之,若报文过短,UDP把它交付给IP层后,会使IP数据报首部的相对长度太大,同样也会降低IP层的效率。

TCP:

不论应用层发送的报文长度如何,到了传输层后,TCP总是把收到的报文看作一串字节流,并且把每一个字节都进行编号。TCP会根据当前网络的拥塞程度和对方接收缓存的大小,决定现在应当发送多长的报文段。TCP关心的是:必须保证每一个字节都正确无误的传输给对方,并不关心传输了多少个报文段,和每个报文段有多少个字节。这就表明了TCP是面向字节流的。

你可能感兴趣的:(网络基础,udp,tcp/ip,网络,网络协议,安全)