TCP和UDP
TCP
一、TCP流量控制
1.1 什么是流量控制有什么用?
如果数据发送的过快,则就接收方可能来不及接收,造成数据的丢失
所谓流量控制就是让发送方的发送速率不要太快,让接收方来得及接收。
1.2 滑动窗口实例
1.3 0窗口探测报文(携带1字节)
当接收方告知发送方法接收窗口为0的时候开始启动持续计时器,等待接收方缓存有了新的存储空间
这个过程没过一个持续计时器都会发送零窗口探测报文
TCP协议规定无论接收方的接收窗口为多大都需要接收0窗口探测报文
发送0窗口探测报文也会有一个超时重传的机制
宏观来讲:客户端的发送窗口由服务端的接收窗口决定,进而达到服务端对客户端的流量控制。当服务端的接收窗口为0时,客户端会开始启动持续计时器,每过一个持续计时器都会向服务端发送0窗口探测报文,目的是为了防止服务端有了新的存储空间向客户端重新发送接收窗口时却丢失造成死锁的情况。
二、拥塞控制
2.1 什么是拥塞控制
- ssthresh: 慢开始门限值
- cwnd: 拥塞窗口值
2.2 快恢复
2.3 TCP超时重传的选择
超时时间的选择
三、TCP可靠传输的实现
3.1 如何描述发送窗口的状态
3.2 TCP传输过程中的特性
四、TCP的运输连接管理
4.1 TCP的连接建立
4.1.1 连接建立的三个前提
4.1.2 连接建立的具体过程
TCP的标准规定: SYN=1的报文段不能携带数据,但要消耗一个序号.
普通报文段不携带数据,则不需要消耗序号
- SYN:同步序列编号
- seq:序列编号
- ack:确认编号
- ACK:确认值,为1表示确认
TCP建立过程中,客户机首先发送一个SYN消息和一个seq,服务器使用SYN+ACK应答表示接收,最后客户机再以ACK消息响应。
如果只有两次报文握手的情况
两次报文握手不行:
因为在网络情况下,可能第一个TCP连接请求报文段滞留在网络环境中,TCP连接请求发送重传,服务器和客户端成功建立连接之后释放连接,滞留在网络中的第一个TCP报文段送到了服务器,会导致服务器一致保持在连接建立的状态下,浪费服务器主机的进程资源.
第三次报文的作用: 防止已经失效的tcp请求报文又突然传到了服务器,因而导致错误.
五、TCP连接的释放(四报文挥手)
FIN:Finish结束标识
MSL为最长报文段寿命
保活计时器
二者区别
TCP | UDP | |
---|---|---|
是否面向连接 | 是 | 否 |
是否可靠 | 是 | 否 |
是否有状态 | 是 | 否 |
传输效率 | 较慢 | 较快 |
传输形式 | 字节流 | 数据报文段 |
首部开销 | 20 ~ 60 bytes | 8 bytes |
是否提供广播或多播服务 | 否 | 是 |
TCP和UDP
https://huajframe.github.io/2021/01/17/计算机基础/计算机网络/TCP和UDP/