0
点赞
收藏
分享

微信扫一扫

计算机网络-传输层:TCP协议

前端王祖蓝 2022-12-03 阅读 188
tcp/ip网络

目录

一、协议格式

二、协议特性

1.面向连接

1.1三次握手建立连接

1.2四次挥手断开连接

为什么握手是三次,挥手是四次?

三次握手失败后,两端如何处理?

一台主机上出现了大量CLOSE_WAIT状态连接的原因?

TIME_WAIT状态的作用?为什么不直接关闭套接字?

一台主机上出现了大量TIME_WAIT状态,什么原因?怎么解决?

1.3TCP连接管理中的保活机制

2.可靠传输

2.1可靠传输的实现

2.2没必要的性能损失

2.3没必要的性能损失处理机制

2.4滑动窗口机制实现

2.5快速重传协议

2.6拥塞机制

2.7其他的一些提升性能的方式

3.提供字节流传输服务

3.1流式传输

3.2字节流传输

3.3编程影响——粘包问题

什么是TCP粘包?怎么产生的?怎么解决?

udp粘包怎么解决?

tcp和udp有什么区别?

tcp怎么实现可靠传输?

udp怎么实现可靠传输?


一、协议格式

16位源端端口&16位对端端口:

        描述通信两端。

32位序号:实现包序管理,完成数据有序交付

        告诉接收端,这条数据在整体数据中的排序;接收端根据序号进行排序,

32位确认序号:确认应答&快速重传

        向发送端进行回复确认,代表确认序号以前的数据都已经收到。

4位头部长度:

        以4字节为单位描述tcp报文头部长度(最大60字节,最小20字节)。

6位保留:

        暂未使用。

6位标志位:FIN, SYN, RST, PUSH, ACK, URG

16位窗口大小:用于实现滑动窗口机制,进行流量控制

16位校验和:二进制反码求和算法,校验数据一致性

16位紧急指针:指向紧急优先带外数据的结束位置

0~40字节选项数据(可无):通常是一些额外的协商信息

二、协议特性

1.面向连接

面向连接:通信前,需要先建立连接,以确保双方都是在线、具有数据收发能力。

连接管理&状态管理:三次握手建立连接,四次挥手断开连接

1.1三次握手建立连接

建立连接:通信前,先建立连接,确保双方具有数据收发能力。

连接管理:

状态管理:

1.2四次挥手断开连接

断开连接:通信结束,需要一个断开连接的过程,以避免发生意外。

注意:FIN请求,只能表示不再给对方发送数据,不代表不再接收数据。

连接管理:

状态管理:

为什么握手是三次,挥手是四次?

(1)为什么是三次握手?

因为两次不安全,四次没必要:

(2)为什么是四次挥手?

三次握手失败后,两端如何处理?

一台主机上出现了大量CLOSE_WAIT状态连接的原因?

TIME_WAIT状态的作用?为什么不直接关闭套接字?

一台主机上出现了大量TIME_WAIT状态,什么原因?怎么解决?

1.3TCP连接管理中的保活机制

问题引入:

保活机制:

连接断开在程序上层的体现:

2.可靠传输

可靠传输:确保数据安全有序的到达对端

TCP可靠传输所包含:

2.1可靠传输的实现

通过很多特殊机制实现:

2.2没必要的性能损失

2.3没必要的性能损失处理机制

2.4滑动窗口机制实现

滑动窗口机制中的三种特殊协议:

扩展了解:

2.5快速重传协议

2.6拥塞机制

避免因为网络拥塞而导致大量的丢包

2.7其他的一些提升性能的方式

3.提供字节流传输服务

3.1流式传输

        是一种有序的、安全的、可靠的,基于连接的字节流传输。

3.2字节流传输

字节流传输:发送或接收最小单位为字节的传输方式。

        (1)发送方将要发送的数据放到发送缓冲区中,系统截取合适大小的数据进行传输;

        (2)接收方将接收到的数据,放到接收缓冲区中,上层recv需要多少,给多少。

优点:比较灵活,没有发送或接收长度的限制。

缺点:存在粘包问题。

3.3编程影响——粘包问题

粘包问题:

        将多条数据当做一条数据进行处理(两个或多个包粘在一起当做一个处理)。

产生原因:

        tcp对上层数据的边界不做特殊处理,没有数据之间的边界管理。

解决方法:

程序员在应用层进行数据之间的边界管理:三种方式

什么是TCP粘包?怎么产生的?怎么解决?

udp粘包怎么解决?

tcp和udp有什么区别?

udp:无连接,不可靠,面向数据报。

tcp:面向连接,可靠传输,面向字节流传输。

可扩充详谈

tcp怎么实现可靠传输?

见上,可靠传输的实现。

udp怎么实现可靠传输?

        通过程序员自己在应用层实现确认应答机制、超时重传机制,来保证数据安全到达对端,并且对传输的数据包进行包序管理,实现数据的有序交付,确保数据能够有序到达对端。同理,还可以自己实现滑动窗口机制、拥塞控制,避免丢包重传,以及一些提升性能的机制。

举报

相关推荐

0 条评论