什么是客户端与服务端的通信协议

无论使用Netty还是使用原始的Socket编程,基于TCP通信的数据包格式均为二进制,协议指的就是客户端与服务端事先商量好的,每一个二进制数据包中的每一段字节分别代表什么含义的规则。一个简单的登录指令如下图所示。

客户端是什么意思(4步看懂客户端与服务端的通信协议)

在这个数据包中,第一个字节为1表示这是一个登录指令,接下来是用户名和密码,这两个值以\0分割,客户端发送这段二进制数据包到服务端,服务端就能根据这个协议来取出用户名和密码,执行登录逻辑。在实际的通信协议设计中,我们会考虑更多细节,比这个协议稍微复杂一些。

那么,协议设计好之后,客户端与服务端的通信过程又是怎样的呢?

客户端与服务端的通信如下图所示。

客户端是什么意思(4步看懂客户端与服务端的通信协议)

1. 客户端把一个Java对象按照通信协议转换成二进制数据包。

2. 通过网络,把这段二进制数据包发送到服务端。在数据的传输过程中,由TCP/IP协议负责数据的传输,与应用层无关。

3. 服务端接收到数据之后,按照协议取出二进制数据包中的相应字段,包装成Java对象,交给应用逻辑处理。

4. 服务端处理完之后,如果需要生成响应给客户端,则按照相同的流程进行。

本文摘自《跟闪电侠学Netty》

客户端是什么意思(4步看懂客户端与服务端的通信协议)


本文由转载于互联网,如有侵权请联系删除!