1. TCP、UDP的区别
1. TCP是有连接;UDP是无连接
2. TCP保证可靠性;UDP可能丢包
3. TCP传输效率低,要求系统资源多;UDP传输效率高,要求系统资源少
4. TCP连接只能是点到点、一对一的;UDP支持一对一,一对多,多对一和多对多的交互通信
2. TCP协议可靠性
-
校验和:判断数据是否损坏
-
序列号: TCP传输时将每个字节的数据都进行了编号
-
确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。
-
超时重传:发送方在发送完数据后等待一个时间,时间到达没有接收到ACK报文,那么对刚才发送的数据进行重新发送
-
连接管理:通过三次握手与四次挥手来进行连接的建立与断开
-
流量控制:根据接收端对数据的处理能力,决定发送端的发送速度,发送窗口取拥塞窗口和接收窗口中较小的那个
-
拥塞控制:通过拥塞窗口、慢启动、快恢复来控制网络中的流量,避免网络拥塞
3. TCP中状态位的含义
-
SYN:同步标志,仅在三次握手建立TCP连接时有效
-
ACK:确认标志,ACK=1时确认序号才有效
-
FIN:结束标志,用于提出断开连接
-
PSH:推标志,指示接收方立即将数据提交给应用层,而不是等待缓冲区满
-
RST:复位标志,用于复位相应的TCP连接
-
URG:紧急标志,URG=1是紧急指针有效
4. TCP 的三次握手
-
三次握手:保证双方都能够接收信息,是最少的安全次数
-
两次或四次:两次握手不能保证客户端能够接收服务端的信息,而四次握手浪费资源
- 报文丢失
三次握手:
1. SYN报文丢失,客户端接收不到SYN+ACK报文,则根据TCP超时重传机制重新发送SYN报文
2. SYN+ACK报文丢失,服务端接收不到ACK报文,则根据TCP超时重传机制重新发送SYN+ACK报文
3. ACK报文丢失,客户端认为连接已建立并发送数据,服务端在没接收到ACK报文的情况下接收到
客户端发送的数据,则会发送一个RST报文通知客户端重置TCP连接
四次挥手:
1. 四次挥手过程中,客户端与服务端在没有接收到相应ACK报文的情况下会超时重传FIN报文
2. 客户端第四次挥手后,需要等待2MSL(最长报文寿命时间)来保证ACK报文成功到达服务端,并
保证本次TCP连接的所有报文在网络中消失
5. RST报文的四种情况
1. 端口未打开
2. 请求超时
3. 提前关闭
4. 在一个已关闭的socket上收到数据
5. ping 命令工作过程
6. 滑动窗口的作用
7. 粘包怎么解决?
8. 一致性哈希
9. CAP原则
10. 路由器与交换机的区别
网友评论