TCP协议

TCP协议

TCP和UDP

TCP/IP协议中两个具有代表性的协议是,TCPUDP

  • TCP协议是面向连接的,可靠的流协议。
  • UDP协议是不可靠的数据报协议。UDP不能保证消息一定到达。
  • TCP用于需要保证可靠传输的情况下,UDP主要用于对高速传输和实时性有较高要求的通信和广播通信

TCP连接–三次握手

  • TCP提供面向有连接的通信传输。面向连接是指在数据通信开始前做好两端之间的连接工作。
  • 三次握手是指建立一个TCP连接时需要客户端和服务器端总共发送三个包以确认连接的建立。

三次握手的流程图:
三次握手

  • 第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器确认。
  • 第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志为SYN和ACK都置为1,ack=J+1,随机产生一个seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。
  • 第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确就将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端和服务器端之间可以开始传输数据了。

TCP断开连接–四次挥手

  • 四次挥手即终止TCP连接,断开一个TCP连接需要客户端和服务器端共发送四个包以确认连接断开。

  • 由于TCP连接是全双工的,因此,每个方向都必须单独进行关闭。当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动,即不会再收到数据了,但是这个TCP连接仍然能够发送数据,知道另一方向也发送FIN,连接才会断开。
    在这里插入图片描述

  • 第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说,客户端没有数据要发送了,如果服务器端还有数据没有发送完成,连接不关闭,可以继续发送。

  • 第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续等待消息。客户端进入FIN_WAIT_2状态,继续等待服务器端的FIN报文。

  • 第三次挥手:当服务器端确定数据发送完成,则向客户端发送FIN=N的报文,告诉客户端数据发送完成,可以关闭连接。服务器端进入LAST_ACK状态。

  • 第四次挥手:客户端收到FIN=N的报文后,就知道可以关闭连接了,向服务器端发送ACK=1,ack=N+1的报文。服务器收到报文后,正式断开连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值