计算机网络考研、招聘面试问题总结

一、概述

1.OSI七层模型和各层的功能,与其它模型的区别

二、网络层

2.IP地址分类

3.IPv4地址不够怎么办

4.PING和Traceroute的工作原理

三、传输层

5.简述TCP的拥塞控制机制,拥塞控制和流量控制的区别

6.叙述TCP三次握手,四次挥手

7.为什么需要三次握手,四次挥手

8.为什么TIME-WAIT状态需要经过2msl 

9.TCP和UDP的区别

10.TCP如何实现可靠传输的

11.TCP粘包、拆包问题及处理方法

12.网络编程的基本步骤.

四、应用层.

13.GET和POST的区别.

14.介绍一下HTTP协议

15.HTTP1.0\HTTP1.1\HTTO2.0区别

16.HTTP和HTTPS的区别,HTTP返回码

17.点击网址到显示内容的过程

18.Session与cookie的联系与区别

19.叙述协议工作流程(ARP、DNS、NAT、DHCP)

五、网络安全

20.介绍一下对称加密和非对称加密,什么是数字签名、数字证书

21.SQL注入、SYN洪范攻击、XSS攻击、DDos攻击

六、小细节问题

零、前言

这些内容是我在准备北京大学计算机专业研究生面试期间在网上搜集整合的,可以说是许多类似知识整理的汇集版,非常全面了。由于企业招聘面试可能问的基础题和考研复试问的几乎一样,因此应对招聘或者考研面试都很有用。

一、概述

1.OSI七层模型和各层的功

能,与其它模型的区别

物理层:实现了相邻计算机节点之间比特流的透明传送,并尽可能地屏蔽掉具体传输介质和物理设备的差异。

链路层:通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。(PPP、CSMA、MAC帧)

网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。(IP、ICMP、IGMP)

传输层:在源端与目的端之间提供可靠的透明数据传输(TCP、UDP)

会话层:负责在网络中的两节点之间建立、维持和终止通信。

表示层:数据的编码,压缩和解压缩,数据的加密和解密

应用层:为用户的应用进程提供网络通信服务(DHCP、SMTP、HTTP、FTP、)

二、网络层

2.IP地址分类

IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用,为特殊地址。

每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。A~E类地址的特点如下:

A类地址:以0开头,第一个字节范围:0~127;

B类地址:以10开头,第一个字节范围:128~191;

C类地址:以110开头,第一个字节范围:192~223;

D类地址:以1110开头,第一个字节范围为224~239;

E类地址:以1111开头,保留地址

3.IPv4地址不够怎么办

1、其实我们平时上网,电脑的IP地址都是属于私有地址,我无法出网关,我们的数据都是通过网关来中转的,这个其实NAT协议,可以用来暂缓IPV4地址不够。

2、IPv6:作为接替IPv4的下一代互联网协议,其可以实现2的128次方个地址,而这个数量级,即使是给地球上每一颗沙子都分配一个IP地址,该协议能够从根本上解决IPv4地址不够用的问题。

4.PING和Traceroute的工作原理

PING的工作原理

在主机 A 上运行“Ping 192.168.0.5”后,都发生了些什么呢? 首先,Ping 命令会构建一个 固定格式的 ICMP 请求数据包, 然后由 ICMP 协议将这个数据包连同地址“192.168.0.5”一起 交给IP 层协议(和 ICMP 一样,实际上是一组后台运行的进程),IP 层协议将以地址 “192.168.0.5”作为目的地址,本机 IP 地址作为源地址,加上一些其他的控制信息,构建一 个 IP 数据包,并想办法得到 192.168.0.5 的MAC 地址(物理地址,这是数据链路层协议构 建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建一个数据帧。主机 B 收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合, 则接收;否则丢弃。接收后检查该数据帧,将 IP 数据包从帧中提取出来,交给本机的 IP 层 协议。同样,IP 层检查后,将有用的信息提取后交给 ICMP 协议,后者处理后,马上构建 一个 ICMP 应答包,发送给主机 A,其过程和主机 A 发送 ICMP 请求包到主机 B 一模一样。

Traceroute工作原理

traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具。traceroute的原理是非常非常的有意思,它收到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。有人要问,我怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较小的端口,比如说80,比如说23,等等。而traceroute发送的是端口号大于30000(真变态)的UDP报,所以到达目的主机的时候,目的主机只能发送一个端口不可达的ICMP数据报给主机

三、传输层

5.简述TCP的拥塞控制机制,拥塞控制和流量控制的区别

拥塞控制是防止过多的数据注入网络,使得网络中的路由器或者链路过载。流量控制是点对点的通信量控制,而拥塞控制是全局的网络流量整体性的控制。发送双方都有一个拥塞窗口(cwnd)。

(1)慢开始:最开始发送方的拥塞窗口为1,由小到大递增。每经过一个传输轮次,拥塞窗口cwnd加倍(乘2)。当cwnd超过慢开始门限,则使用拥塞避免算法,避免cwnd增长过长。

(2)拥塞避免(算法):当cwnd超过慢开始门限,每经过一个往返时间RTT,cwnd就增长1。在慢开始和拥塞避免过程中,一旦发现网络拥塞,就把慢开始门限设置为当前值的一半,并且重新设置cwnd为1,重新慢启动。

(3)快重传:接收方每收到一个失序的报文段后就立即发出重复确认,发送方只要收到3个重复确认就立即重传。

(4)快恢复:当发送方连续收到三个重复确认,就将慢开始门限减半,将当前的窗口设置为慢开始门限,并采用拥塞避免算法。(采用快恢复算法时,慢开始只在建立连接和网络超时时才使用)

流量控制:如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。拥塞控制:拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。流量控制指点对点通信量的控制。而拥塞控制是全局性的,涉及到所有的主机和降低网络性能的因素。

6.叙述TCP三次握手,四次挥手。

 

7.为什么需要三次握手,四次挥手?

三次握手:为了防止 已失效的链接请求报文突然又传送到了服务端,因而产生错误。客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。这是,Server误以为这是Client发出的一个新的链接请求,于是就向客户端发送确认数据包,同意建立链接。若不采用“三次握手”,那么只要Server发出确认数据包,新的链接就建立了。由于client此时并未发出建立链接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。若采用“三次握手”,在这种情况下,由于Server端没有收到来自客户端的确认,则就会知道Client并没有要求建立请求,就不会建立链接。

参照三次握手机制,挥手最少需要三次,如果只有三次,客户端发送完数据请求断开连接,而服务端不一定也同样发送完数据,若同时回ACK和FIN给客户端,断开连接,可能造成数据的损坏;若先发送ACK,再等B的数据发送完了再发送FIN和ACK,就可以保证传输数据的完整性。TCP是全双工模式,接收到FIN意味着将没有数据再发来,但是还是可以继续发送数据。

8.为什么TIME-WAIT状态需要经过2msl

保证A发送的ACK能够顺利到达B,这个报文可能丢失,处在LAST-ACK的B收不到对自己以发送的FIN和ACK报文的确认,B会超时重传FIN和ACK报文,那么在2msl时间内收到这个重传的FIN+ACK报文,接着A重传一次;

9.TCP和UDP的区别

(1)连接:TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接;UDP是面向无连接的。

(2)服务对象:TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。

(3)可靠性:TCP是可靠交付:无差错,不丢失,不重复,按序到达;UDP是尽最大努力交付,不保证可靠交付。

(4)拥塞控制,流量控制:TCP拥有拥塞控制和流量控制保证数据传输的安全性;UDP没有拥塞控制,网络拥塞不影响源主机的发送效率。

(5)报文长度:TCP是动态报文长度,即TCP报文长度根据接收方窗口大小和当前网络拥塞情况决定;UDP面向报文,不合并,不拆分,保留上面传下来的报文边界。

(6)首部开销:TCP首部开销大,首部20个字节;UDP首部开销小,8字节(源端口,目的端口,数据长度,校验和)

10.TCP如何实现可靠传输的?

(1)数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;

(2)对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;

(3)丢弃重复数据:对于重复数据,能够丢弃重复数据;

(4)应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;

(5)超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;

(6)流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

11.TCP粘包、拆包问题及处理方法

TCP之所以存在拆包和粘包问题,本质就是TCP是面向字节流的,而UDP是面向报文的!

1.发送方的原因:TCP只有上一个分组得到确认,才发送下一个分组,收集多个小分组,在一个确认到来时一起发送,发送方就可能存在粘包现象

2.接收方的原因:TCP接收到分组时,应用层并不会立即处理,TCP将接收到的分组放到接收缓存中,然后应用程序主动从接收缓存中读取分组,当TCP接收分组的速度大于应用程序读取分组的速度时,多个包就会被存至缓存,应用程序读取时,就会读到多个首尾相连在一起的包。

TCP拆包:发送方将一个数据包拆分成了多个数据包进行传送

处理方法:

1.消息数据固定长度,但是浪费存储和网络资源

2.使用分割符来区分包的界限

3.数据包的头部中增加数据包长度字段

12.网络编程的基本步骤

TCP:

服务端:socket–>bind–>listen–>accept–>recv/send–>close;

客户端:socket–>connect–>send/recv–>close.

UDP:

服务端:socket–>bind–>recvfrom/sendto–>close;

客户端:socket–>sendto/recvfrom–>close.

四、应用层

13.GET和POST的区别

(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)post发送的数据更大(get有url长度限制)
(3)post能发送更多的数据类型(get只能发送ASCII字符)
(4)post比get慢

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

14.介绍一下HTTP协议

Web浏览器和Web服务器之间进行通信需要遵循一定的规则,这个规则就是Http协议。这个地方很好理解,就像人与人之间的交流一样,只有在语言相通的情况下才能知道对方想要表达的意思。HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。

· 客户/服务器模式(C/S)

· 简单快速:HTTP服务器的程序规模小,因此通信速度快

· 灵活:HTTP允许传输任意类型的数据对象

· 无连接,每次连接只处理一个请求:服务器处理完客户的请求并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间

· 无状态:HTTP协议每当有新的请求产生,就会有对应的新响应产生,协议本身并不会保留之前的一切请求或者响应

15.HTTP1.0\HTTP1.1\HTTO2.0区别

HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。

 HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级

16.HTTP和HTTPS的区别,HTTP返回码

(1)HTTP协议是以明文的方式在网络中传输数据,HTTPS协议传输是数据时经过TLS加密后的,HTTPS具有更高的安全性。

(2)HTTPS在TCP三次握手之后还要进行SSL的握手。

(3)HTTPS协议需要服务器申请证书,客户端安装对应的根证书。

(4)HTTP协议端口号是80,HTTPS端口号是443。

200 OK:客户端请求成功

403 Forbidden:服务器收到请求,但是拒绝提供服务。

404 Not Found:请求资源不存在,比如:输入了错误的URL。

405:方法不允许

17.点击网址到显示内容的过程

第一步就是根据域名获取服务器的IP地址。(DNS)

第二步浏览器向服务器的IP的端口号发起TCP三次握手建立连接;

第三步浏览器向服务器发送HTTP请求报文;

第四步服务器根据HTTP请求报文的参数找到请求的资源;

第五步服务器给浏览器发送HTTP应答报文,把资源返回给客户端;

第六步通过四次挥手释放TCP连接;

(打开电脑需要DHCP协议,传输过程中需要ARP协议)

18.Session与cookie的联系与区别

cookie数据保存在客户端,session数据保存在服务器端。

Cookies不会占服务器资源,是存在客服端内存或者一个cookie的文本文件中;而“Session”则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。但是我们一般认为cookie是不可靠的,session是可靠地,但是目前很多著名的站点也都以来cookie。

19.叙述协议工作流程(ARP、DNS、NAT、DHCP)

ARP:

网络层的ARP协议完成了IP地址与物理地址的映射。首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址:如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

DHCP:

1、客户端发送DHCP discover包,请求DHCP服务器,就是查找网络上的DHCP服务器。 2、在网络中接收到DHCP discover信息的DHCP服务器就会做出响应,向DHCP客户机发送一个IP信息包。 3、客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,相当于广播:我接受了这个包。 4、提供IP的那个服务器向DHCP客户端发送一个DHCP ack确认信息包,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定。其他的DHCP服务器将收回曾经提供的IP地址。

NAT:

假设一个私有地址为A的主机想访问互联网服务器B,那么首先它首先把消息发出给NAT路由器。路由器记录了它的内网地址和端口,并且给它分配一个全局地址和全局端口。这个地址关系记录在NAT路由表中。之后按照目的地址发给服务器。一段时间之后,服务器回应了请求给NAT路由器,那么路由器根据目的地址和端口(此时是全局的)按照NAT路由表转换为对应的主机地址,再发送给主机,这样主机就收到了服务器的回应。

DNS:

如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。

查询过程:

1. 主机先向本地域名服务器进行递归查询

2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询

3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址

4. 本地域名服务器向顶级域名服务器进行查询

5. 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址

6. 本地域名服务器向权限服务器进行查询

7. 权限服务器告诉本地域名服务器所查询的主机的IP地址

8. 本地域名服务器最后把查询结果告诉主机

五、网络安全

20.介绍一下对称加密和非对称加密,什么是数字签名、数字证书

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。A给B发信息,用自己的私钥加密,生成数字签名,B用公钥解密,知道确实是此人发送的。

数字证书是在一个身份和该身份的持有者所拥有的的公/私钥对之间建立的一种联系,由认证中心(CA)或认证中心的下一级认证中心颁发。认证机构,认证机构就是能够认定 “公钥确实属于此人"。

21.SQL注入、SYN洪范攻击、XSS攻击、DDos攻击

SQL注入攻击是通过将恶意的 SQL查询或添加语句插入到应用的输入参数中,再在后台 SQL服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。可以用来猜解数据库或绕过验证登录等。
SYN洪范攻击:SYN 泛洪攻击通过发送大量的伪造 TCP 链接报文而造成大量的 TCP 半连接,服务器端将为了维护这样一个庞大的半连接列表而消耗非常多的资源。这样服务器端将忙于处理攻击者伪造的TCP连接请求而无法处理正常连接请求,甚至会导致堆栈的溢出崩溃 。

跨站脚本攻击缩写为XSS。XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

DDOS又称为分布式拒绝服务攻击,全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用。

六、小细节问题

1.IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文?
答:根据端口区分应用程序;看ip头中的协议标识字段,17是udp,6是tcp。

2.GET请求中URL编码的意义?

会对非西文字符进行编码,这样做的目的是为了避免歧义

3.对滑动窗口的理解?

TCP利用滑动窗口实现流量控制和拥塞控制的机制。滑动窗口是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,所以就有了滑动窗口机制来解决此问题。TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。

4.DNS为什么用UDP?

无连接、无状态、及时响应、头部开销小。此外DNS每次传输的字节较少,使用UDP足够

5.IP地址和MAC地址的区别?

IP地址用在广域网进行网络寻址,确定主机大致位置。UDP用在局域网精确寻址。在全球范围内无法使用MAC地址进行寻址,因此需要IP地址。

6.UDP如何实现可靠传输?

传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。

1、添加seq/ack机制,确保数据发送到对端

2、添加发送和接收缓冲区,主要是用户超时重传。

3、添加超时重传机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值