TCP
TCP是面向连接的,可靠的流协议
TCP提供可靠性传输,实行“顺序控制”或者“重发控制”,此外还具备“流控制(流量控制)”、“拥塞控制”,提高网络利用率等众多功能。
TCP三次握手
为什么需要三次握手?
为了防止已经失效的请求报文突然又传到服务器引起错误,如果没有客户端第三次发送的第二次ACK确认报文,服务端会认为又建立了一个新的连接,但是客户端并不知道这个连接的存在,造成状态不一致。因此需要需要服务端收到ACK包才算建立连接。所以三次握手就是为了解决网络信道不可靠的问题。为了在不可靠的信道上建立可靠的连接
四次挥手
UDP
UDP是不具备可靠性的数据报协议。细微的处理会交给上层的应用去处理。UDP虽然能确定发送消息的大小,但是不能保证消息一定会到达,因此,应用有时会根据自己的需要进行重发处理。
TCP与UDP对比
可能有人会认为,鉴于TCP是可靠的传输协议,那么它一定优于UDP。
其实不然,TCP与UDP的优缺点无法简单地、绝对地去做比较。那么,对这两种协议
应该如何加以区分使用呢?下面,我就对此问题做一简单说明。
TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输;
而在一方面,UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。我们举一个通过IP电话进行通话的例子。如果使用TCP,数据在传送途中如果丢失会被重发,但这样无法流畅地传输通话人的声音,会导致无法进行正常交流。而采用UDP,它不会进行重发处理。从而也就不会有声音大幅度延迟到达的问题。即使有部分数据丢失,也只是会影响某一小部分的通话。
此外,在多播与广播通信中也使用UDP而不是TCP.RIP、DHCP等基于广播的协议也要依赖于UDP。
因此,TCP和UDP应该根据应用的目的按需使用。
参考资料:
【1】计算机网络Andrew S.TanenBaum David J. WetheraH
【2】www.bilibili.com/video/BV1kV…
本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
本文转载自: 掘金