TCP与UDP的区别,以及TCP的三次握手和TCP的四次挥手

一、 TCP与UDP的区别

1. 相同点
 都是属于传输层的协议
2. 不同点
TCPUDP
1基于连接,可靠性强基于无连接,可靠性较低
2需要三次握手、重新确认等过程,实时性很差,同时过程复杂,易于被攻击无连接,因而实时性很强,稍微安全点
3在传输相同大小的数据时,报头20字节,而且tcp无丢包,开销很大在传输相同大小的数据时,udp首部开销只有8个字节,而且udp经常丢包,开销很小
4每条tcp连接只能是点到点的udp支持一对一、一对多、多对一、多对多的交互通信
5名叫传输控制协议,传输效率低,可靠性强名叫用户数据报协议,适用于传输可靠性要求不高,数据量小的数据

二、 TCP的三次握手

TCP有些名词需要解释一下,以便理解
1. 名词解释
SYN: 同步序列号,用来发起一个连接,SYN=1的报文不能携带数据,但是消耗掉一个序列
ACK: 确认标识,当ACK=1时确认字段才有效
seq: 序列号,即数据包本身的序列号,为连接以后传输数据使用
ack: 对收到数据包的确认,值是等待接受的数据包的序列号(就是期望对方继续发送的那个数据包的序列号)
2. 握手过程
  第一次: 客户端C向服务端S发送连接请求报文,该报文首部中的SYN = 1,ACK = 0,随机选取一个序列号seq = i 作为初始序列号,
  		  此时客户端进入SYN_SEDN同步已发送状态。
  		  
  第二次: 服务端收到客户端的连接请求报文,如果同意建立连接,则发送确认报文,确认报文首部中的SYN = 1 , ACK = 1 ,
   ack = i + 1 ,seq = j (服务端的初始序列号),此时,服务器进入SYN_RCVD同步收到状态。
   
  第三次: 客户端收到服务端的确认报文后,会向服务器发送确认报文,告诉服务器收到它的确认报文并准备建立连接,确认报文首部中SYN = 0、
   ACK = 1、ack = j + 1、 seq = i + 1。服务端收到客户端确认报文,此时,服务端进入ESTABLISHED已建立连接状态。
3. TCP为什么采用三次握手,而不是两次或四次握手
TCP三次握手的目的是同步连接双方的序列号和确认号,并交换TCP窗口大小信息

为什么采用三次握手: 为了防止失效的请求报文段被服务端接受,从而产生错误。

来源:TCP为什么采用三次握手,而不是两次握手或四次握手

三、 TCP的四次挥手(释放)


一方主动关闭,另一方被动关闭


第一次:客户端C发送一个FIN,用来关闭客户端C到服务端S的数据传送,客户端C进入FIN-WAIT-1状态

第二次:服务端S收到FIN后,发送一个ACK给客户端C,确认序列号为收到序列号+1,服务端S进入CLOSE-WAIT

第三次:服务端S发送一个FIN,用来关闭服务端S到客户端C的数据传送,服务端S进入LAST-ACK

第四次:客户端C收到FIN后,客户端C进入TIME-WAIT状态,接着发送一个ACK给服务端S,
       确认序列号为收到序列号+1,服务端S进入CLOSE状态,完成第四次挥手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值