疫情当下,很多企业裁员、倒闭导致了大量程序员不得不重新开始找工作。在严峻的现实情况下,每一次面试机会都需要被牢牢的把握住。
笔者经历过很多大大小小不同的面试,很多面试官其实没什么面试技巧,不懂得去挖掘面试者的潜力,大部分情况是面试官向面试者抛出一个问题,自己心里对这个问题的答案有几个关键的点,只要面试者的回答能够提及、合理描述出这几个点,就算过关了。如果面试者能够给出一个系统的答案,那说明面试者有过深入的研究,那这个面试者在面试官心里会大大的加分。
下文是针对 TCP/IP 知识点的系统通俗的解释,理解清楚并在面试到相关知识时,按层次流畅的回答出相关知识可以提高面试的通过几率。
一、TCP/IP 是什么
TCP/IP 是一个由 4 层通信模型和一堆处于不同层次的通信协议组成的通信基础架构。
二、产生背景
计算机网络与网络之间通过 TCP/IP 协议族连接成的庞大网络被称为因特网。因特网的前身叫做阿帕网,它是由美国国防高级研究计划局(DARPA)研究发明。
阿帕网诞生的目的是为了实现不同电脑之间的相互连接,它使用了 NCP 协议(Network Control Protocol,网络控制协议)来连接不同的电脑。阿帕网开发者最初的想法是想解决不同软硬件电脑的连接,但是显然它没有很好的解决这个问题,所以阿帕网最理想的应用场景还是相同软硬件的电脑连接。
随着阿帕网的发展,用户数越来越多,基于 NCP 协议的系统的鲁棒性出现严重的问题,于是,美国国防高级研究计划局着手开发下一代的网络协议,最终开发出来的协议也就是我们熟知的 TCP/IP 协议。
TCP/IP 由于实现方式的不同,更有可能连接不同软硬件的电脑,同时又比同时代出现的其他同类协议简单,所以成为了互联网的基石。
三、分层思想
TCP/IP 的组成部分包括一个 4 层的通信模型,自上而下分别为应用层、传输层、网络层、链路层。
为何要分层
TCP/IP 的分层的思想借鉴于 OSI 的 7 层模型,分层的好处在于降低了系统设计的复杂度,以分层的方式组织协议,每一层都是建立在上一层所提供数据的基础上,完成本层的功能,并为下一层提供数据。分层的另一个好处是只要输出数据符合层次间约定的接口,就可以很方便的替换各层次的设计。
层次间数据的传递

TCP/IP 层次间数据的传递如上图所示。数据从发送端产生,每一层都会视上层传递过来的数据为普通的高层数据,忽略上一层设置的首部信息,随后,加上本层的首部信息,将数据传递给下一层。当数据传送到接收端时,数据处理操作与发送端相反,逐层去除首部信息并将数据传送至接收端应用层。
四、各层作用
应用层
应用层的作用主要是构造应用层协议相关的数据,然后通过操作系统提供的 Socket API 将数据传输给传输层。
传输层
传输层被用于在因特网上某些特定主机中运行的特定应用程序间发送数据。传输层接收应用层传递过来的数据,将这些数据封装为一个个带有发送端口号和目标端口号的数据包,然后将这些数据包传递给网络层。
网络层
网络层的作用是在由路由器组成的复杂网络中,将数据传送到目标主机。网络层接收传输层传递过来的数据包,并封装进发送主机的 IP 地址和目标主机的 IP 地址等数据,然后将数据包传送给链路层。
链路层
链路层的作用是将网络层传递过来的数据包封装进帧,转换成电信号,并通过物理设备进行传送。
交个朋友?
求关注!