我大数据,表哥让我做硬件以及Java,说是解析什么电动车的机器终端,但是他是tcp协议的。没有搞过,程序员最强的是什么?不是编程,而是学习能力,所以我还是接了,那就产出了这篇文章。让我简单学习下tcp能达到这个解析终端的要求。
1.什么是tcp?
tcp是一种传输协议,类似于http(request,post请求这些),类似于前端的socket通信
他比较稳定
2.tcp的通信方式?
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
简单来说,就是
1、建立连接时,客户端发送SYN包(SYN=i)到服务器,并进入到SYN-SEND状态,等待服务器确认
2、服务器收到SYN包,必须确认客户的SYN(ack=i+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN-RECV状态
3、客户端收到服务器的SYN+ACK包,向服务器发送确认报ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据
3.字节学习
1字节等于8bit
1个英文字母占1个字节
1个汉字占2个字节
bit的值是0或者1
硬件文档阅读中,非常复杂....
最后确定技术架构用netty,以及轨迹数据,用clickhouse,采用按天分区的形式。
学习netty和clickhouse中。
我以前用过socket
JAVA-SpringBoot web-socket通信_我要用代码向我喜欢的女孩表白的博客-CSDN博客_socket通讯 springboot
参考文章