TCP+UDP区别&&TCP三次握手理解
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
UDP 与 TCP 的主要区别:
UDP 不一定提供可靠的数据传输。
事实上,该协议不能保证数据准确无误地到达目的地。
UDP 在许多方面非常有效。
当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用 UDP。
ICQ 短消息使用 UDP 协议发送消息。
TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。记住,较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。
TCP与UDP的选择
ps:在TCP建立连接的时候,要经过3次握手方案,为什么不是两次?
answer:因为网络是不可靠的,因此多少次握手都不一定是可靠连接。
三次是最少的握手次数,因为2次握手,响应端不知道发起端是否收到了响应报文,也就不能确信连接是否已经建立。只有收到发送端的响应后,双方才能确认连接已经建立。
TCP的三次握手协议:
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
完成三次握手,客户端与服务器开始传送数据.