【网络原理】——TCP八大特性(前四种)

TCP八大特性(前四种)

ACK 消息确认应答

在这里插入图片描述
一般情况下:客户端会发送信息给服务器端,后服务器端会给出相应的回复(ACK)。
在这里插入图片描述
消息头发送信息:
在这里插入图片描述
ACK消息:
在这里插入图片描述
意外情况:客户端信息发送失败
在这里插入图片描述

超时重传

在这里插入图片描述
在这里插入图片描述
超时时间应该设置多少?
超时时间是根据不同操作系统是不一样的,不同的操作系统有不同的时长。
Linux默认超时时间是:500ms。
发送的频率和发送的次数?
发送的时长是动态改变的,每次成倍的改变。
第一次:500ms
第二次:1000ms
第三次:2000ms
超时一定重试次数之后,就会认为服务器端下线,端口连接。

连接管理机制

建立连接(三次握手)

在这里插入图片描述
简单的来叙述的话(连接过程):
客户端:第一次发送的消息之后(我要连接你了)
服务器端:好的,你练吧
客户端:那我就连接了。

此后就正式交互

三次通讯:
第一次通讯:验证了服务器端的接受能力,客户端的发送能力。
第二次通讯:验证了客户端的发送能力。
第三次通讯:验证了服务器端的发送能力。
补充:
TCP 能不能进行2次握手?
不能
TCP能不能进行4次握手?
可以,但没必要。

断开连接(四次挥手)

在这里插入图片描述
四次挥手:
第一次挥手:客户端发送断开连接的请求。
第二次挥手:服务器端接收到请求,并进行相应的处理之后就会进行断开连接。(内核实现的)
第三次挥手:服务器端把相应的处理完成了,断开连接吧。(应用层的任务)
第四次挥手:客户端接收到信息,并进行断开连接。
四次挥手存在的问题之一:CLOSE_WAIT
在这里插入图片描述
在这里插入图片描述
没有主动调用close(),导致后面的挥手没有触发。
问题二:第四次挥手,能不能直接将客户端的TIME_WAIT变成CLOSE?
答案:不行
在这里插入图片描述
TIME_WAIT转换成CLOSED最大的等待时间是多少?
1000ms

滑动窗口

加快消息的传输
在这里插入图片描述
1、窗口大小指的是无需等待确认应答而可以继续发送数据的最大值. 上图的窗口大小就是4000个字节(四个段).
2、发送前四个段的时候, 不需要等待任何ACK, 直接发送;
3、收到第一个ACK后, 滑动窗口向后移动, 继续发送第五个段的数据; 依次类推;
4、操作系统内核为了维护这个滑动窗口, 需要开辟 发送缓冲区 来记录当前还有哪些数据没有应答; 只有确认应答过的数据, 才能从缓冲区删掉;
5、窗口越大, 则网络的吞吐率就越高;
存在的情况下如下:
情况一: 数据包已经抵达, ACK被丢了
在这里插入图片描述
这种情况下, 部分ACK丢了并不要紧, 因为可以通过后续的ACK进行确认;
情况二: 数据包就直接丢了.
在这里插入图片描述
1、当某一段报文段丢失之后, 发送端会一直收到 1001 这样的ACK, 就像是在提醒发送端 “我想要的是 1001”
一样;
2、如果发送端主机连续三次收到了同样一个 “1001” 这样的应答, 就会将对应的数据 1001 - 2000 重新发送;
3、这个时候接收端收到了 1001 之后, 再次返回的ACK就是7001了(因为2001 - 7000)接收端其实之前就已经收到了, 被放到了接收端操作系统内核的接收缓冲区中;
(下篇后四大特性)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值