【秋招】嵌入式面试八股文- TCP、UDP协议
【秋招】嵌入式面试八股文 - 最全专栏
1. TCP和UDP的基本概念与区别
Q: TCP和UDP的主要区别是什么?
- 连接性:TCP是面向连接的协议,通信前需要建立连接;UDP是无连接协议,直接发送数据。
- 可靠性:TCP提供可靠传输,保证数据完整性和顺序性;UDP不保证可靠传输。
- 传输方式:TCP是面向字节流;UDP是面向报文。
- 效率:TCP效率相对较低,有连接管理开销;UDP效率高,开销小。
- 应用场景:TCP适用于对可靠性要求高的场景;UDP适用于实时性要求高的场景。
- 头部大小:TCP头部20-60字节;UDP头部固定8字节。
Q: TCP为什么要设计成面向连接的?
- 确保通信双方都准备好进行数据交换
- 协商通信参数(如窗口大小、序列号等)
- 为可靠传输建立基础
- 提供流量控制和拥塞控制机制
Q: UDP适用于哪些应用场景?为什么?
- 实时音视频传输:允许少量丢包,重视实时性
- DNS查询:简单请求-响应模式,减少延迟
- DHCP:广播通信,简化实现
- 游戏数据传输:追求低延迟,可接受少量丢包
- 物联网设备通信:资源受限设备减少协议开销
2. TCP的三次握手和四次挥手
Q: 详细描述TCP三次握手的过程及其意义
- 第一次握手:客户端发送SYN包(SYN=1, seq=x),进入SYN_SENT状态
- 第二次握手:服务器回复SYN+ACK包(SYN=1, ACK=1, seq=y, ack=x+1),进入SYN_RCVD状态
- 第三次握手:客户端发送ACK包(ACK=1, seq=x+1, ack=y+1),双方进入ESTABLISHED状态
三次握手的意义:
- 确认双方的发送和接收能力都正常
- 同步双方的初始序列号
- 防止历史连接请求突然到达服务器造成错误
Q: 为什么TCP连接需要三次握手,而不是两次或四次?
- 两次不够:无法确认客户端的接收能力,可能导致服务器资源浪费
- 四次多余:三次已经能确认双方的收发能力,额外握手增加延迟和开销
- 安全性考虑:三次握手可以防止历史连接请求导致的错误连接
Q: 详细描述TCP四次挥手的过程及其意义
- 第一次挥手:客户端发送FIN包(FIN=1, seq=u),进入FIN_WAIT_1状态
- 第二次挥手:服务器回复ACK包(ACK=1, ack=u+1),进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态
- 第三次挥手:服务器发送FIN包(FIN=1, seq=v),进入LAST_ACK状态
- 第四次挥手:客户端回复ACK包(ACK=1, ack=v+1),进入TIME_WAIT状态,等待2MSL后关闭
四次挥手的意义:
- 确保双方都完成数据传输后再关闭连接
- 实现全双工连接的单独关闭
- TIME_WAIT状态确保最后的ACK能到达服务器
Q: 为什么TCP连接关闭需要四次挥手?
- TCP是全双工通信,每个方向需要单独关闭
- 接收到FIN后,可能还有数据需要发送,所以先回复ACK,等数据发送完再发FIN
- 保证双方都能完成数据传输,实现优雅关闭
Q: TIME_WAIT状态的作用是什么?为什么需要等待2MSL?
- 确保最后一个ACK能到达对方(如果ACK丢失,对方会重发FIN)
- 防止延迟的数据包被新连接接收,造成数据混乱
- 2MSL是报文最大生存时间的两倍,足以确保网络中的报文都消失
3. TCP的可靠传输机制
Q: TCP如何保证可靠传输?
- 序列号和确认应答:每个字节都有序列号,接收方确认收到的数据
- 超时重传:发送方在一定时间内未收到确认则重传数据
- 校验和:检测数据在传输过程中是否被损坏
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
【秋招】嵌入式八股文最全总结 文章被收录于专栏
双非本,211硕。本硕均为机械工程,自学嵌入式,在校招过程中拿到小米、格力、美的、比亚迪、海信、海康、大华、江波龙等offer。八股文本质是需要大家理解,因此里面的内容一定要详细、深刻!这个专栏是我个人的学习笔记总结,是对很多面试问题进行的知识点分析,专栏保证高质量,让大家可以高效率理解与吸收里面的知识点!掌握这里面的知识,面试绝对无障碍!