TCP协议和UDP协议的区别以及TCP协议的3次握手和4次挥手

在互联网上所有的信息交互,都离不开网络传输。

  其中网络传输主要分为以下7大层

物理层                       实现计算机系统与网络间的物理连接

数据链路层                   进行数据打包与解包,形成信息帧

网络层                        提供数据通过的路由

传输层                       提供传输顺序信息与响应

会话层                        建立和中止连接

表示层                       数据转换、确认数据格式

应用层                     提供用户程序接口

 

今天我们主要讨论传输层的协议,也就是大家熟悉的 TCPUDP传输协议

 

TCP(Transmission Control Protocol) 是传输控制协议,提供的是面向连接、可靠的数据流传输。当客户端和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能顺序地从一端传到另一端。

 

UDP(User Datagram Protocol)是用户数据报协议,提供的是非面向连接的、不可靠的数据流传输。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。UDP在传输数据前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,不保证数据按顺序传递,故而传输速度很快。

 

TCP一般用于文件传输(对数据准确性要求高,速度可以相对慢);UDP一般用于即时通信,网络游戏包的数据传输( 对数据准确性和丢包要求比较低,但速度必须快)

所以tcp连接需要断开需要以下过程:

 

三次握手:建立连接

TCP协议和UDP协议的区别以及TCP协议的3次握手和4次挥手_第1张图片

 

建立连接时,客户端发送syn包到到服务器,服务器收到syn包时,向客户端发送ACk 包,同时发送一个自己的syn包,客户端收到服务器的SYN+ACK包后向服务器发送ACK  这样就建立三次握手连接

 

四次挥手:断开连接

TCP协议和UDP协议的区别以及TCP协议的3次握手和4次挥手_第2张图片

断开连接可以是客户端发起,也可以是服务器端发起。假设客户端发起中断连接请求。客户端首先发送FIN报文给服务器端,表示客户端这边已完成发送数据的任务。服务器接到FIN报文后,如何此时服务器端还有数据没有发送完成,可以继续发送数据,所以服务器先发送ACK 包给客户端。 当服务气短确定数据已经发送完成,则向客户端发送FIN 报文,告诉客户端,服务器这边数据发送完了。 客户端接收到FIN报文后,就知道可以断开连接了。但是他还是不相信网络,所以发送ACK包给服务器进入TIME_WAIT状态,服务器端收到ACK后就断开连接了。 客户端在等待了一段时间后没有收到来自服务器的回复,则证明,服务器端已经正常关闭,最后客户端关闭连接        最终完成了4次挥手的断开连接

 

 

你可能感兴趣的:(Java)