tcp传输

tcp传输特性:

面向链接,可靠性,面向字节流

链接管理:

tcp三次握手

第一次client向server发送SYN建立连接 //测试client向server通道是否连通

第二次server向client发送ACK确认应答同时发送SYN //client向server连通,测试server向client通 道是否连通

第三次client向server发送ACK确认应答(此时可以携带数据) //server向client连通

四次挥手

第一次client向server发送FIN关闭连接(此时client进入time_wait状态,此状态可以对ACK,FIN进行简单处理) // client向server发送通道请求

第二次server向client发送ACK确认应答 //server收到了client断开连接的请求

第三次server向client发送FIN关闭连接(此时server进入last_ack状态,此状态可以对ACK进行简单处理) //server向client发送通道关闭请求

第四次client向server发送确认应答 // server向client的通道彻底关闭;在进行2MSL(报文最大存活时间)等待,期间会对残留数据进行接受并丢弃,防止影响下一次连接,等待完成后client也彻底关闭

超时重传:

超过一个规定的时间就会重新发送数据

快重传:

收到3个重复的ACK就会重新发送数据

滑动窗口:

滑动窗口是发送队列维护的结构,使得窗口左边的是已经发送的数据,窗口是准备发送的数据,窗口外是未发送的数据

滑动窗口配合序列号一起使用,接受端收到数据会返回一个序列号保证在该序列号之前的数据全部都收到了,采用滑动窗口可以大大提高数据传输的效率

接收端未收到数据的情况下会怎么样?

接收端如果没有收到数据会一直等待,什么也不做;发送端在规定时间内没有收到接收端的ACK回应会触发超时重传

接收端收到数据,但是中间缺少一部分?

在接收端收到的数据不是下一个所期望的数据(比如发送端发送了1,2,3,4这些数据,接受端收到了1,3,4)时就会向发送端重复的ACK,当发送端连续收到3个重复的ACK时就会触发快重传,重新发送数据

滑动窗口大小由接收端允许接收的最大字节和拥塞窗口决定,取较小值

流量控制:

http协议中有一个字段是窗口大小,当接收端返回ACK是会告诉发送端自己当前接收缓冲区还剩多大,发送端会根据这个值来对发送端的窗口大小进行调整,如此就实现了流量控制

拥塞控制:

在我们传输数据时不只只就我们一台主机在进行网络传输,那么就会出现有时网络环境是空闲的,有时是繁忙的,在网络空闲时应该加大传输,在繁忙时应减少传输

由此引入了拥塞阈值和拥塞窗口,拥塞窗口遵循"慢启动,快增长"(为什么?在我们刚开使传输数据时并不知道网络环境是怎么样的,所以先发送少量数据进行试探,后面在快速提高发送量,直到发送失败)

拥塞阈值初始值为接受端窗口的大小,拥塞窗口为1,在拥塞窗口小于拥塞阈值时会指数增长,大于拥塞阈值会线性增长,在触发超时重传后拥塞阈值会变为原来的一半,拥塞窗口变为1。

捎带应答:

捎带应答就是将ACK应答在发送数据携带ACK

延迟应答;

延迟应答就是在收到数据后不立刻返回应答,而是在等待一段时间。为什么?因为在收到这个应答后可能在很短的时间内就将应答处理了,此时就可以返回一个更大的窗口,提高传输流量

延迟应答有以下两种:

时间限制:一般每隔200ms

数量限制:一般每隔两个包

字节流:

发送数据不需要是一个完整的数据,发送的字节太长会拆成多个tcp包发送,发送的字节太少会将多个数据合并成一个tcp包发送,所以用字节流传输数据需要设置格式。

相关推荐
原来是猿8 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
AOwhisky8 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术
rabbit_pro9 小时前
Docker compose部署Ollama使用模型
linux·运维·docker
Irissgwe12 小时前
六、Ext系列文件系统(2.核心原理与应用)
linux·分区··inode·软硬连接·路径缓存·ext系列文件
2301_7807896612 小时前
“数字珍珠港”再现:西北能源基地DNS篡改事件深度复盘与防护升级
运维·服务器·网络·tcp/ip·网络安全·智能路由器·能源
tkevinjd12 小时前
wsl2安装
linux·wsl·虚拟机·wsl2
故事还在继续吗12 小时前
Linux 内核模块开发实战
linux·linux内核
南境十里·墨染春水13 小时前
linux学习进展 守护进程
linux·服务器·学习
REDcker13 小时前
Android HWASan 详解:硬件标记原理、Clang 启用与排障实践
android·linux·debug·编译·clang·asan·hwasan
wangl_9214 小时前
Modbus RTU 与 Modbus TCP 深入指南-附录:快速参考表
网络·网络协议·tcp/ip·tcp·modbus·rtu