TCP 三次握手梳理

TCP/IP协议

  • IP 用于网络寻址
  • TCP 协议 绑定端口号 应用间通信
    在OSI 7层模型bai中的TCP协议工作在传输层(第4层);在TCP/IP协议栈中,其工作在传输dao层(第3层)

三次握手过程

  1. client端发发起连接请求, 设置报文头标志位SYN=1,并发送一个数据包seq,seq值为一个随机数值J ,发送之后client状态变成SYN_SEND(等待server端确认收到请求及数据)
  2. server端收到来自client端的连接请求后设置标志位ACK=1,并发送一个数据包给client端,数据包包括ack=接受到的seq值+1J+1),设置seq值为随机数K,服务端进入SYN_REVD状态(收到连接请求)
  3. client 收到server端发送的报文,状态变成 ESTABLISHED,发送报文给server 端,设置标志位ACK=1,发送数据包ack = K+1,server端收到报文 ,验证ack数据正确性,可以开始传输数据了, 状态变成 ESTABLISHED
    在这里插入图片描述
    个人理解:
  • 关于协议,无非是两个端建立一套共同的规则
  • 第一次握手,客户端通知服务端,“我要发请求了”,带一个数据包过去,服务端可以利用这个数据包确认自己收到数据了
  • 第二次握手,服务端通知客户端,“我收到你的请求了”,将客户端带过来的参数(seq)+1返回给他,并额外生成一个随机参数(ack)给客户端
    客户端可以根据这个seq+1的值确认服务端接收到的数据没错,ack参数肯定是为了后续自己验证 自己给客户端发送的数据正确性(完整性)
  • 第三层握手,客户端收到服务端应答后验证数据正确性 ,然后给服务端发送确认 “我给你发的数据(J)是对的 ,这是你给我发的数据(K)你看对不对“,服务端收到后验证K+1,“对对对,可以开始数据传输了”,服务端开始允许接受数据了

相关概念

  • ACK、SYN 为TCP报文头标志位
  • seq、ack 为发送的数据包

TCP 报文6个标志位:

  • URG:紧急标志。紧急标志为"1"表明该位有效。
  • ACK:确认标志。表明确认编号栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。
  • PSH:推标志。该标志置位时,接收端不将该数据进行队列处理,而是尽可能快地将数据转由应用处理。在处理Telnet或rlogin等交互模式的连接时,该标志总是置位的。
  • RST:复位标志。用于复位相应的TCP连接。
  • SYN:同步标志。表明同步序列编号栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。
  • FIN:结束标志。

关于四次挥手

以为服务端要给客户端发送数据 服务端接受到关闭连接请求后,会发送一次请求给客户端“好的我知道了,等我传完数据就关”,待数据传完,服务端发送关闭请求给客户端,服务端关闭

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值