题目评价:面试官今天一上来问的第一个问题。这是一个计算机网络的题目,这道题目比较简单(如果不会说明基础比较差,大概率会被毙掉)。因此我总结了一下面试的答题要点和解题思路。
解题思路:
要点1: TCP 提供面向连接的可靠传输,UDP 提供面向无连接的不可靠传输。(TCP协议和 UDP 协议都是传输层协议,都是为应用层程序服务,都具有复用(不同的应用层协议可以共用 UDP 协议和 TCP 协议)和分用(将数据报解析之后分发给不同的应用层程序)的功能)。
要点2:描述TCP和UDP各自的优点和缺点。如表1.(加分)
要点3:TCP在要求数据准确、对速度没有硬性要求的场景有很好的表现。而 UDP 在很多实时性要求高的场景有很好的表现。(由第一、二点引出的特性引出第三点应用场景)。应用场景如表2.(加分)
表1
TCP | UDP | |
优点 | 可靠、稳定,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源。 | 快,没有TCP各种机制,少了很多首部信息和重复确认的过程,节省了大量的网络资源。 |
缺点 | 慢,效率低,占用系统资源高,在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接。在要求数据准确、对速度没有硬性要求的场景有很好的表现,比如在FTP(文件传输)、HTTP/HTTPS(超文本传输), | 不可靠不稳定,只管数据的发送不管过程和结果,网络不好的时候很容易造成数据丢失。又因为网络不好的时候不会影响到主机数据报的发送速率,这对很多实时的应用程序很重要,因为像语音通话、视频会议等要求源主机要以恒定的速率发送数据报,允许网络不好的时候丢失一些数据,但不允许太大的延迟 |
表2
TCP | UDP | |
特性 | 是TCP/IP体系中非常复杂的一个协议,面向连接(需要三次握手四次挥手)、单播(只能端对端的连接)、可靠交付(有大量的机制保护TCP连接数据的可靠性)、全双工通讯(允许双方同时发送信息,也是四次挥手的原由)、面向字节流(不保留数据报边界的情况下以字节流的方式进行传输,这也是长连接的由来。)、头部开销大(最少20字节) | 面向无连接(不需要三次握手和四次挥手)、尽最大努力交付、面向报文(每次收发都是一整个报文段)、没有拥塞控制不可靠(只管发不管过程和结果)、支持一对一、一对多、多对一和多对多的通信方式、首部开销很小(8字节) |
应用场景 | FTP(文件传输)、HTTP/HTTPS(超文本传输) | 语音通话、视频会议等要求源主机要以恒定的速率发送数据报,允许网络不好的时候丢失一些数据,但不允许太大的延迟 |
提醒:面试不可能把所有的题目都答上来(很优秀的人除外),因此在面试的时候希望尽可能多的回答上面试官的题目。