TCP英文叫Transmission Control Protocol,中文叫传输控制协议,它其实就是一种网络传输协议。
汽车在公路上行驶,需要遵守交通规则,同样数据在网络上传输也要遵守一套规则,这个规则就叫协议。
而TCP是一种面向连接的协议,也就是说,在收发数据前,必须和对方确认已经建立了可靠的连接。
建立连接的方式又称为三次握手:
这三次对话的目的是使数据包的发送和接收同步,TCP协议是一定要经过这三次对话之后,主机A才可以向主机B正式发送数据。
TCP建立连接需要进行三次握手,但是断开连接却要进行四次挥手:
TCP协议的这种复杂的建立连接和断开连接的规则,其实是为了使网络数据的传输更加安全可靠,使发送数据端和接收数据端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础。
同时在数据的传输过程中TCP还具有流量控制,差错控制等功能,比如发送端发送的数据速度过快,而接收端的接收速度却很慢,就很难保证数据不丢失,所以需要进行流量控制。
而TCP是使用滑动窗口的方式来进行流量控制的,可以把这个滑动窗口理解成一个缓冲区,接收端利用滑动窗口的值来告诉发送端对它所发送的数据能提供多大的缓冲区,以此来协调控制两边的传送节奏和速率。
UDP英文叫User Datagram Protocol,中文叫用户数据报协议,它也是一种网络传输协议,但是它和TCP有很大的不同。
UDP主要有以下几个特点:
在发送端,UDP传送数据的速度仅受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
我们经常使用ping命令来测试两台主机之间的TCP/IP通信是否正常。
其实ping命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包到达的消息及时反馈回来,那么网络就是通的,并且可以通过返回的数据包计算响应时间。
总结一下就是,TCP安全、可靠、面向连接,但是传输速度慢。UDP不安全、不可靠、面向非连接,但是传输速度快。