TCP协议是面向连接的可靠的网络传输层协议。无论是哪一方向另一方发送消息之前都会通过3次握手,建立连接后才能够发送消息。而且消息发送方能够确认消息最终是否准确送达。tcp提供了可靠的字节流服务,通过字节码传输数据。
我们可以通过客户端和服务端的方式,通俗的理解三次握手,客户端需要向服务端发送消息,首先客户端和服务端进行三次握手,三次握手要保证无论是服务端还是客户端都要知道自己和对方的读写功能都是正常的,在这个基础上才能够进行数据传输。
1.客户端向服务端发送SYN,(客户端告诉服务端:‘我想和你发消息’),在此时如果服务端收到此消息说明客户端的write已经通了。
2.服务端向客户端发送SYN+ACK,(服务端告诉客户端:‘我收到了你的消息,你的write功能正常了,我向你发送了消息,看我的write功能正常了没’),如果此时客户端收到消息,说明客户端的write,read功能正常,而且服务端的write功能正常了,但是服务端的read功能还没有得到验证。
3.客户端向服务端发送ACK,(客户端告诉服务端:‘你的write功能正常了’),此时服务端收到消息,说明服务端的read功能也正常了,此时无论是客户端还是服务端的read,wirte功能都正常了,服务端此时同意建立连接,双方都开辟出资源,可以发送消息。
三次握手
TCP协议的四次挥手其实就是双方释放资源,而且释放资源必须双方都同意才行,只有一方同意释放资源是无效的。
1.客户端向服务端发送FIN,告诉服务端:'我想和你分手'。
2.服务端向客户端发送FIN+ACK,告诉客户端:'好的,我知道了'。
3.服务端发现确实没有数据要传输了,向客户端发送FIN,告诉客户端:‘我也想和你分手’。
4.基于可靠性传输,客户端想服务端发送ACK,告诉服务端:‘双方确定分手’。
四次挥手
UDP协议的无连接的,只要知道ip和端口号就能够发送消息,不需要通过握手,建立连接。而且UDP协议没有确认机制,客户端不知道发送服务端的消息是否发送成功。但是UDP在发送报文中会整个报文发送,既不会拆分,也不会合并。UDP协议发送简单高效,但是相比较而言不是十分可靠。
1.TCP基于连接,UDP无连接。
2.TCP对系统资源要求多,UDP对资源要求少。
3.TCP协议是流式协议,UDP是数据报模式。
4.TCP可靠,保证数据传输,UDP可能出现丢包情况。
5.TCP协议保证数据顺序,UDP不保证数据的顺序。