Description: this article is talking about what is Tcp 3-way handshake
UDP
基于非连接的
TCP
基于连接的。
tcp 是一种面向连接的单播协议,在发送数据之前,通信双方必须在彼此间建立一条连接。所谓的“连接”,就是客户端和服务器的内存里保存的一份关于对方的信息,如ip地址、端口号等。
tcp可以看成是一种字节流,他会处理ip层霍一下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数、这些参数可以放在TCP头部。
tcp提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用4次挥手来关闭一个连接。
TCP 头部
序列号
在建立连接时由计算机生成的随机数作为初始值,通过SYN包传给接收端主机,每发送一次数据,就累加一次该数据字节数的大小。用来解决网络报乱序问题。
确认应答号
指下一次期望收到的数据的序列号,发送端收到这个确认应答以后可以认为这个序列号以前的数据都已经被正常接收。用来解决不丢包问题。
控制位
ACK: 该位为1时,确认应答的字段变为有效,tcp规定除了最初建立连接时SYN包之外该位必须设置为1
RST: 该位为1时,表示tcp链接中出现异常必须强制断开连接
SYN:该位为1时,表示希望建立链接,并在其系列好的西段进行序列号初始值的设定
FIN:该位为1时,表示今后不会再有数据发送,希望断开连接。当通信结束断开连接时,通信双方的主机之间就可以相互交换FIN 为1的tcp段。
三次握手
目的
客户端和服务端通信前需要进行连接。三次握手的作用就是双方都能明确自己和对方的收、发能力是正常的。解决网络新到不可靠的问题。
第一次握手:
客户端发送网络包,服务端收到了。这样**服务端**就能得出结论:客户端的发送能力、服务端的接受能力是正常的。
第二次握手:
服务端发包,客户端收到了。这样**客户端**就能得出结论:服务端的接受和发送能力,客户端的接受和发送能力是正常的。
第三次握手:
客户端发包,服务端接收到了,这样的**服务端**就能得出结论:客户端的接受和发送能力,服务端的发送和接受能力是正常的。
四次挥手
TCP链接是双向传输的对等的模式。就是说双方都可以同时向对方发送或接受数据。当有一方要关闭连接时,会发送指令告知对方,我要关闭链接。这时候对方会回一个ACK,此时一个方向的链接关闭。但是另一个方向仍然可以继续传送数据,等到发送完了所有的数据后,会发送一个FIN段来关闭此方向上的链接。接收方发送ACK确认关闭连接。