1.OSI参考模型有多少层?分别是哪几层?(不建议死记硬背,可以看看我在系列文章第一篇里的描述,效果比较好,不会因为紧张而答不出来)
七层模型,自下而上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
首先要学习OSI模型。
如上图,OSI参考模型中各个分层的作用分别是——
应用层:为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输、电子邮件以及远程登录(虚拟终端)等协议。
表示层:将应用处理的信息转换为适合网络传输的格式,或讲来自下一层的数据转换为上层能够处理的格式。因此它主要负责数据格式的转换。
会话层:负责建立和断开通信连接(数据流通的逻辑通路),以及数据的分割等数据传输相关的管理。
传输层:起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。
网络层:将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择。
数据链路层:负责物理层面上互连的、节点之间的通信传输。例如1个以太网相连的2个节点间的通信。将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。
物理层:0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换。
了解了各个分层的作用,好像也不太能记得住,我记得当时计网老师给我们看过这么一个图,并且叫我们一段话描述通信的过程。
2.TCP/IP协议栈有多少层?分别是哪几层?(有四层和五层的说法,其实都对,这里就只讲四层的)
四层,自上而下分别是:应用层、传输层、网络层以及数据链路层。
TCP/IP就是互联网的协议。下面,我们来看看OSI模型与TCP/IP模型的对比图:
根据上图,我们可以发现TCP/IP协议分为四层,分别是应用层、传输层、网络层以及网络接口层,对应OSI的关系也一目了然。
如果在之前我们就能很好地理解OSI模型各层所起的作用,那现在我们就可以很轻松地得出结论,指出TCP/IP协议栈中某些协议所起到的作用大概是属于哪种类型的。例如TCP协议与UDP协议属于传输层,无疑就是关于管理(建立、断开)两端口之间的连接;而IP则必然是关于寻址路由的协议。
3.应用层典型的协议中,基于TCP、UDP协议的分别有哪些?(面试中比较少问,笔试题中常常会以选择题的形式考察)
TCP:SMTP,FTP,TELNET,POP3,IMAP, BGP,http,SSH
UDP:SNMP,TFTP简单文件传输协议,用于传小文件,功能简单少,DNS
4.ipconfig的作用是什么?(一些常用的指令记一记还是有好处的,最好能实际操作一下,加深印象)
显示当前TCP/IP配置的信息。
5.请说出三个你觉得比较常见的端口以及对应的应用?(这个没什么好说的,注意点就是了)
21-FTP、22-SSH、23-telnet、25-SMTP、80-HTTP、SNMP-161、MySQL数据库服务-3306
6.简单讲讲ICMP协议(HTTP协议、DHCP协议等)的作用和基本原理(这道题就不说答案了,大家自己去看看之前的博客,最好能再总结其他常见协议的作用和基本原理)
7.如何进行两台电脑ping不通,你觉得可能的原因有哪些?
(这道题还是挺有意思的,如果事先不知道答案要准确回答出来,要基础知识很扎实并且思考比较全面才行,下面是网上的参考答案,欢迎童鞋们吐槽)
(1)首先考虑是否是网络的问题
(2)局域网设置问题,电脑互联是要设置的。看是否安装了必要的网络协议,最重要的是IP地址是否设置正确。
(3)网卡驱动未安装正确
(4)防火墙设置有问题
(5)是否有什么软件阻止了ping包
第一题:TCP与UDP的区别
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
(最好还能够各自举例说明一下,例如什么协议或应用采用TCP,为什么;又有什么协议或应用采用UDP,为什么。主要是给面试官说明具体问题具体分析,两协议没有优劣之分)
第二题:讲讲TCP的三次握手(四次挥手)的整个过程
TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:
1)客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。
2)服务器收到客户端发送过来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,其中包含它选择的初始序列号(sequence number)y、对客户端的序列号的确认x+1和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。
3).客户端接收到服务器端返回的SYN+ACK报文后,向服务器端返回一个确认号y+1和序号x+1的ACK报文,一个标准的TCP连接完成。
(四次挥手的过程类似,这里就不多说了,图片来自参考资料http://www.cnblogs.com/hnrainll/archive/2011/10/14/2212415.html,上面画的图不错。建议大家在面试的时候要随身带一支笔和一张白纸,在被问到这种需要画图的问题时主动画图给面试官看,加分不少的!像我这样画图很丑的人,可以多练习几次,不会到时候涂涂抹抹,影响讲解的效果)
第三题:为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?
这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你不可以马上关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。
第四题:讲讲TCP协议中滑动窗口
TCP的首部中有一个很重要的字段就是16位长的窗口大小,它出现在每一个TCP数据报中,配合32位的确认序号,用于向对端通告本地socket的接收窗口大小。也就是说,如果本地socket发送一个TCP数据,其32位确认序号是5,窗口大小是5840,则用于告诉对端,对端已经发出的4个字节的数据已经收到并确认,接下来,本地socket最多能够接收从第5个字节开始的5840个字节长度的数据。这是由接收方进行的一种流量控制,接收方通过告诉发送方自己所能够接收数据的大小,达到控制发送方发送速度的目的。(本段内容引子班里的一位offer大神给我的总结资料。其实还会涉及慢启动算法等相关内容,值得深入研究)
来源:http://www.cnblogs.com/levenyes/p/3383459.html
什么是进程(Process)和线程(Thread)?有何区别?
1. 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
2. 线程是进程的一个实体,是CPU调度和 分派的基本单位,它是比进程更小的能独立运行的基本单位。
3. 线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和 栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
4. 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体。
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。