TCP

TCP如何保证传输的可靠性的

1.连接管理: 确保连接成功和释放成功

2.校验和: 对数据进行运算, 服务端也进行同样运算

3.序列号和确认号: 每次请求都会对应一个ack确认回应, ack=seq+1

4.超时重传

5.拥塞控制: 如果一次发送太多请求会导致请求丢失且无法重传(因为不知道丢了哪个), 引入拥塞控制

 

TCP流量控制

服务端维护一个滑动窗口, 每次响应返回滑动窗口的剩余容量(win), 如果下一次发送的数据大于这个容量则等待并定时发送试探报文

 

TCP滑动窗口

发送窗口:已经被ack的,已经发送未ack(窗口内),可以发送(窗口内),未发送(窗口外)

接收窗口:已经接收,未收到可以接收(窗口内),不可接收

 

TCP拥塞控制

四种算法:慢启动、拥塞避免、超时重传、快恢复

慢启动:每收到一个ACK,cwnd+1,指数增加,超过阈值进入拥塞避免

拥塞避免:cwnd线性增长,发生拥塞后进入重传阶段

超时重传:阈值变为1/2,cwnd变为1,重新慢启动(容易卡顿)

快速重传:连续收到3个相同的ACK(不需要客户端等待)、客户端立马重传数据,阈值减半,cwnd=阈值+3,重新进入拥塞避免

 

TCP粘包和拆包

粘包:将多个数据包合并为一个,导致接受方不知道包的边界

拆包:将一个数据包拆成多个,接收方需要重新组装

解决:分隔符、字段长度

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇