面试和笔试中,如果记住下面这张图,基本就能解决网络协议中70%的问题。需要记住:
- OSI模型和TCP/IP模型每一层名称;
- 每一层对应有哪些协议,或者说给出该协议要知道对应那一层;
- 该协议是基于TCP还是UDP的;
除了上图,如果还能记住该协议的功能就可以解决笔试中99%的网络协议问题,下面介绍传输层的各种协议。
传输层传输协议
TCP
TCP是整个TCP/IP协议族中最重要的协议之一,它在IP协议提供的不可靠数据服务的基础上,采用了重发技术,为应用程序提供了一个可靠、面向连接的、全双工的数据传输服务。TCP协议一般用于传输数据量比较少,且对可靠性要求高的场合。
UDP
UDP是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信,与TCP相比,UDP是一种无连接的协议,它的错误检测功能要弱得多。可以这样说,TCP有助于提供可靠性,而UDP则有助于提高传输数率。UDP协议一般用于传输数据量大,对可靠性要求不是很高,但要求速度快的场合。
关于TCP协议面试常考内容
TCP的内容是计算机网络部门重中之中的部分,常考的内容有如下:
- TCP与UDP的区别;
- 三次握手和四次挥手的过程简单描述;
- 为什么要三次握手,两次握手行不行;
- 为什么建立连接是三次握手而关闭连接却是四次挥手呢;
- 关闭TCP连接一定需要四次挥手吗;
- TCP的拥塞控制简单描述;
- TCP黏包和拆包差生的原因;
- TCP黏包和拆包的解决策略;
- TCP如何保证可靠传输;
- 在TCP连接中,服务端的socket要做哪些动作(网络编程);
TCP内容太多,也比较难,如果不是找专门研究通信协议的工作,一般的应届生程序员面试准备上述问题就够用了。由于这部分只是比较多,所以下次另外搞一篇介绍吧。如果哪些常考的有需要补充欢迎大家提醒啊~~