高频面试题之TCP和UDP
1.TCP协议
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。
1.1 TCP 最常问的三次握手
- 第一次握手:主机client通过向主机server 发送一个含有同步序列号的标志位的数据段给主机server,向主机server 请求建立连接,通过这个数据段, 主机client告诉主机server 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我。
- 第二次握手:主机server 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机client,也告诉主机client两件事:我已经收到你的请求了,你可以传输数据了;你要用那个序列号作为起始数据段来回应我
- 第三次握手:主机client收到这个数据段后,再发送一个确认应答,确认已收到主机server 的数据段:"我已收到回复,我现在要开始传输实际数据了,这样3次握手就完成了,主机cleint和主机server 就可以传输数据了。
1.2tcp 其次最常问的四次挥手
- 第一次: 当主机client完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
- 第二次: 主机server收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
- 第三次: 由server 端再提出反方向的关闭请求,将FIN置1
- 第四次: 主机client对主机B的请求进行确认,将ACK置1,双方向的关闭结束.。
2.UDP协议
UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的限制; 在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段.
3.最常问TCP和UDP的区别
对比内容 | TCP | UDP |
---|---|---|
是否连接 | 基于连接 | 无连接 |
消耗资源 | 消耗多 | 消耗较少 |
传输可靠性 | 可靠 | 不可靠-丢包 |
传输速度 | 稍慢 | 快 |
传输数据模式 | 流模式 | 数据报模式 |
数据的顺序性 | 有保证 | 不保证 |
首部字节开销 | 20字节 | 8字节 |
通信方式 | 点对点 | 一对一,一对多, 多对一,多对多 |