TCP和 UDP
TCP协议:
1、使用TCP协议前,须先建立TCP连接,形成传输数据通道;
2、传输前,采用“三次握手”方式,点对点通信,是可靠的;
3、TCP协议进行通信的两个应用进程:客户端、服务端;
4、在连接中可进行大数据量的传输;
5、传输完毕,需释放已建立的连接,效率低;
UDP协议:
1、将数据、源、目的封装成数据包,不需要建立连接;
2、每个数据报的大小限制在64K内;
3、发送不管对方是否准备好,接收方收到也不确认,故是不可靠的;
4、可以广播发送;
5、发送数据结束时无需释放资源,开销小,速度快;
TCP三次握手执行过程:
第一次握手:客户端将标志位SYN置为1,随机产生一个值序列号seq=x,并将该数据包发送给服务端,客户端 进入syn_sent状态,等待服务端确认。
第二次握手:服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志位SYN和 ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给客户端以确认连接请求,服务端进入syn_rcvd状态。
第三次握手:客户端收到确认后检查,如果正确则将标志位ACK为1,ack=y+1,并将该数据包发送给服务端,服务端进行检查如果正确则连接建立成功,客户端和服务端进入established状态,完成三次握手,随后客户端和服务端之间可以开始传输数据了。
TCP四次挥手:
四次挥手也是客户端发起的,客户端会发送一个报文,报文 FIN = 1 。
当服务端收到这个报文之后,就知道了客户端想要和我断开连接,但是此时服务端不一定做好准备,因为当客户端发起断开连接的报文的时候,服务端有可能还有未发送完的报文消息需要继续发送,所以此时服务端只能告诉客户端我知道你要和我断开连接了,但是我这里可能还没做好准备,需要等我一下,等会我会告诉你,于是,发完这个消息确认报之后。
稍过片刻之后服务端继续发送一个断开连接的报文,FIN = 1 ,表明服务端已经做好断开连接的准备,那么,当这个消息发给客户端的时候。客户端同样需要继续发送一个消息确认的报文,那么通过这四次的相互沟通和连接,我就知道了,不管是客户端还是服务端,都已经做好了断开的准备。