TCP协议和UDP协议的区别
1.TCP为面向连接,UDP为无连接 即发送数据不需要建立连接
2.TCP提供可靠服务通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。UDP协议传输“尽力而为”
3.TCP可以进行流控,分段。UDP不行
4.TCP传输速度较慢,占用资源较大;UDP传输速度较快,占用资源小
5.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低。
1、紧急URG,当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据(即当URG=1时,,优先处理数据)
2、确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1
3、推送PSH,当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1
4、复位RST,当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;
5、同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1
6、终止FIN,用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放
三次握手
SYN 同步序列号请求
Ctl标志位
序列号—记录发送的次数—不同的厂商序列号不一样
Ack 确认
Ack=seq+1
1.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
2.第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3.第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据.
四次挥手
第一次挥手:主动关闭方发送一个FIN并进入FIN_WAIT1状态
第二次挥手:被动关闭方接收到主动关闭方发送的FIN并发送ACK,此时被动关闭方进入CLOSE_WAIT状态;主动关闭方收到被动关闭方的ACK后,进入FIN_WAIT2状态
第三次挥手:被动关闭方发送一个FIN并进入LAST_ACK状态
第四次挥手:主动关闭方收到被动关闭方发送的FIN并发送ACK,此时主动关闭方进入TIME_WAIT状态,经过2MSL时间后关闭连接;被动关闭方收到主动关闭方的ACK后,关闭连接