1)TCP的三次握手过程?
TCP是TCP/IP协议栈中运输层的协议,TCP为应用程序提供端到端的可靠的传输,可靠传输的其中一个表现就是在数据发送之前,双方必须要通过三次握手建立连接。
三次握手的具体过程是:
第一次握手:发送方向接受方发送一个连接建立的请求,并通告一些性能参数,比如可以接受的最大报文段长度,缓存窗口大小等等。
第二次握手:如果接收方接受了发送方的连接请求,接收方会返回一个数据报,表明连接请求已接收,并说明本端的性能参数比如最大报文段长度,缓存窗口大小等等。
第三握手:发送方对接收方报文的确认。
至此,双方就通过三次握手建立了TCP连接。双方就可以通信了。
2)TCP是如何提供可靠传输?
一 双方在进行通信前,需要通过三次握手建立连接,而这个建立连接的过程中双方会协商彼此数据传输的参数。
二 TCP的首部字段中有检验和字段,这是一个端到端的检验和,目的是检验数据在传输过程中的变化。如果接受方的数据段检验和有差错,TCP会丢弃这个段不发送确认以希望发送方能超时并重发。
三 TCP发送一个数据报后,会启动一个定时器,等待目的端确认这个数据段,如果在定时器到期前,还没有收到确认,那TCP将重发数据报。
四 TCP使用IP提供的服务,而IP提供的是不可靠的传输,即IP数据报的到达可能会失序,TCP会将数据报排序后交付给应用程序。
五 TCP 会提供流量控制。TCP连接的每一端都有固定大小的缓冲区,TCP的接收端只允许发送端发送接收端缓冲区所能接纳的数据。这样可防止较快的主机使较慢的主机缓冲区溢出。
3) TCP和UDP的比较?
TCP和UDP都是TCP/IP协议栈中运输层的协议,为应用程序提供端到端的通信。这两者之间有以下区别:
UDP提供的是不可靠的,无连接的数据报服务,UDP不能保证数据可以准确到达目的地,数据报的可靠性由应用程序提供。而TCP提供的是可靠的,面向连接的字节流服务。在发送数据前,需通过三次握手建立连接。并且在发送数据后,要求目标计算机必须发送确认。TCP在收到的数据发送丢失,重复时,负责数据的恢复。
总体来说,TCP和UDP之间的区别就是TCP提供可靠传输,而UDP提供的是不可靠传输。
4) 既然UDP提供的是不可靠的传输,为什么需要有UDP协议?
UDP提供不可靠的传输,在传输数据前不需要建立连接,数据传输的过程中没有确认机制。UDP只是尽最大可能的发送数据,所以用UDP传输数据的实时性较好。所以在一些实时性要求较高的场合,比如视频传输就可以采用UDP协议实现。因为在这种应用中,丢失少量的数据并不会影响视频的观看。应用程序也可同时采用TCP和UDP,用TCP连接传输一些重要的数据比如密码,控制信息,用UDP传输主要数据。所以UDP协议有其存在的必要性。