一.tcp协议
全双工(类似多线程)所以需要两个初始序列号(不同操作系统生成算法不同)
seq:发送的数据包序列号 (最新收到的数据包的ack))
ack:希望收到的下一个数据包的序列号(最新收到数据包大小+最新收到数据包的seq)
SYN(大写都是标准位):置为1请求连接
FIN:置为1请求断开
ACK:确认号是否有效,一般置为1。
二.为什么不能两次握手?
1.全双工(类似多线程)所以需要两个初始序列号,保证可靠,需要确认
2.客户端能知道服务端有接收消息和发送消息的能力,服务端只知道客户端具有发送消息能力,不可靠
3.网络延迟高,前面发送的连接请求都阻塞住了,然后后面都成功建立连接又不发消息,浪费资源。
三.为什么需要四次挥手?
1.全双工,服务端消息还没发完,先回应收到断开连接请求,发完消息后再请求断开另一个方向连接。
https://blog.csdn.net/qq_38950316/article/details/81087809
https://blog.csdn.net/tianyue168/article/details/5822042
http://dy.163.com/v2/article/detail/ECQ04CUU05315U6Q.html
https://blog.csdn.net/lengxiao1993/article/details/82771768
四.REST与RPC区别
REST是一种架构风格,可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。适合对外暴露
RPC远程方法调用,就是像调用本地方法一样调用远程方法。tcp 效率高
https://baijiahao.baidu.com/s?id=1617168792520937104&wfr=spider&for=pc