TPC笔记

本文深入解析TCP协议的可靠性机制,包括数据分割、确认机制、排序、去重及流量控制。详细阐述了TCP三次握手过程,解释为何采用三次而非二次握手,避免失效连接请求引起的资源浪费。同时介绍了关键状态标志SYN、FIN、ACK的作用,序列号与确认号在数据传输中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP的可靠性

  1. 数据被分割成Tcp认为合适大小的数据块
  2. Tcp的发送方发送一个数据块之后,要确认Tcp的接受方已经接受,否则会进行重试
  3. Tcp的接收方接受到数据之后,需要告诉发送给方已经确认
  4. Tcp接收方会对接收到的数据进行排序
  5. Tcp接收方会对数据去重
  6. 流量控制
  7. 校验和保证数据安全:https://www.cnblogs.com/zxiner/p/7203192.html

TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。

(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。

(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

(3)采用两次握手不行,原因就是上面说的实效的连接请求的特殊情况。

关键字

  1. SYN:代表请求创建连接,所以在三次握手中前两次要SYN=1,表示这两次用于建立连接
  2. FIN:表示请求关闭连接,在四次分手时,我们发现FIN发了两遍。这是因为TCP的连接是双向的,所以一次FIN只能关闭一个方向。
  3. ACK:代表确认接受,从上面可以发现,不管是三次握手还是四次分手,在回应的时候都会加上ACK=1,表示消息接收到了,并且在建立连接以后的发送数据时,都需加上ACK=1,来表示数据接收成功。
  4. seq: 序列号,什么意思呢?当发送一个数据时,数据是被拆成多个数据包来发送,序列号就是对每个数据包进行编号,这样接受方才能对数据包进行再次拼接。
  5. 初始序列号是随机生成的,这样不一样的数据拆包解包就不会连接错了。(例如:两个数据都被拆成1,2,3和一个数据是1,2,3一个是101,102,103,很明显后者不会连接错误)
    ack:这个代表下一个数据包的编号,这也就是为什么第二请求时,ack是seq+1,

  1. 3次握手
    在这里插入图片描述
  2. 4次挥手
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值