计算机网络面试常见题


浏览器输入网址之后发生了什么?

  1. DNS域名解析:浏览器首先要确认域名所对应的服务器IP地址;
  2. 建立TCP连接:三次握手请求连接;
  3. 发送HTTP请求:发送请求报文;
  4. 服务器处理请求;
  5. 返回响应结果;
  6. 浏览器解析HTML,并进行布局渲染,将页面展示给用户;
  7. 关闭TCP连接:当双方没有请求或响应传递时,任意一方都可以发起关闭请求。

网络体系结构?

网络体系结构
OSI体系结构各层的作用:

(1)应用层(数据):应用层是体系结构的最高层,它的任务是通过应用进程之间的交互来完成特定网络应用。应用层协议定义的是应用进程(指的是主机中正在运行的程序)间的通信和交互的规则
对于不同的网络应用需要有不同的应用层协议,比如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等。
(2)表示层(数据):主要解决用户信息的语法表示问题,比如加密、解密等。
(3)会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,比如服务器验证用户登录便是在会话层完成的。
(4)运输层(段):实现网络不同主机上用户进程之间的数据通信,可靠与不可靠的传输,传输层的错误检测,流量控制等,运输层主要使用TCP和UDP两种协议。
(5)网络层(包):负责为分组交换网上的不同主机提供通信服务,提供IP、选路,数据从源端到目的端的传输,网络层主要使用IP协议。
(6)数据链路层(帧):将上层数据封装成帧,用物理地址访问媒介,错误检测与修正。
(7)物理层(比特流):设备之间比特流的传输,物理接口,电气特性等。
OSI体系结构是理想化的七层协议,实现较为复杂且运行效率低。

TCP/IP采用四层协议,将数据链路层、物理层简化为网络接口层;将会话层、表示层、应用层简化为应用层。

五层体系结构,结合了OSI和TCP/IP结构的优点,在学习计算机网络时使用到的模型。

HTTP和HTTPS的区别?

  1. 端口:HTTP的URL由“http://”起始且默认使用端口号80,而HTTPS的URL由“https://”起始且默认使用端口443。
  2. 安全性和资源消耗:HTTP协议是运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS(安全套接字层/传输层安全)上的HTTP协议,SSL/TLS运行在TCP之上,所有传输内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密,所以说HTTP安全性没有HTTPS高,但HTTPS比HTTP耗费更多服务器资源
  3. HTTP页面响应速度比HTTPS快,主要是因为HTTPS使用TCP三次握手建立连接,客户端和服务器需要交换3个包,而HTTPS除了TCP的3个包,还要加上SSL握手需要的9个包,所以一共是12个包。

Session和Cookie的区别?

  1. 存储位置:Cookie是客户端会话技术,数据保存在客户端,Session是服务器端会话技术,数据保存在服务器端。
  2. 存储容量:Cookie一般<=4KB,Session无限制。
  3. 安全程度:Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,考虑到安全应当使用Session。
  4. Cookie支持跨域名访问,Session不支持跨域名访问。

HTTP和WebSocket的联系和区别,什么情况下用WebSocket?

HTTP是一种无状态协议,每当一次会话完成后,服务器都不知道下一次的客户端是谁,因此要想实现实时通讯需要长轮询或者长连接的方式,这两种方式会带来资源浪费。
WebSocket是HTML5以后基于TCP协议应用层的一种全双工实时通讯协议。客户端和服务端可以进行信息的相互传递,首先发起HTTP请求,经过握手建立TCP连接,HTTP请求头部会存放WebSocket支持的版本号等信息,所以握手之后,协议进行一个升级,转成TCP协议进行交流。
WebSocket可以应用于聊天和即时信息。

Socket编程主要步骤?

  1. 创建套接字;
  2. 客户端建立连接,服务器绑定端口,建立监听;
  3. 客户端写入数据,发送数据,服务器端接收数据,读取数据;
  4. 关闭连接。

DHCP原理是什么?

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是一种基于TCP/IP协议主机的网络参数进行动态配置和集中管理的协议,可以实现:
为网络主机分配IP地址;为网络主机提供除IP地址以外的网络参数。

原理:主机启动后就作为DHCP Client主动向DHCP Server提出请求,DHCP根据预先配置的策略,返回相应的IP配置信息,DHCP Client使用该获得的IP配置信息与其他设备进行通信。

DNS域名系统?

DNS域名系统用来实现将域名映射为IP地址的过程,称为域名解析。DNS为互联网上的各种网络应用提供了核心的服务。
域名服务器分为4类:根域名服务器、顶级域名服务器(com、org、cn等)、权限域名服务器(负责一个区的域名服务器)、中间域名服务器。
域名解析分为递归解析和迭代解析。
DNS

运输层的两个协议TCP和UDP的区别?

  1. 连接:UDP是无连接的,发送数据之前无需建立连接,发送数据结束后也无需释放连接。TCP是面向连接的,在发送数据之前需要通过三次握手建立连接,发送数据结束后需要通过四次挥手释放连接。
  2. 交付:UDP使用尽最大努力交付,即不保证可靠交付,主机不需要维持复杂的连接状态表。TCP提供可靠交付,即通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。
  3. 数据:UDP是面向报文的,UDP对于应用层交下来的报文,添加首部后就向下交给IP层,既不合并,也不拆分,一次交付一个完整的报文。TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成一连串无结构的字节流。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小关系,但是接收方收到的字节流必须和发送方应用程序发送的字节流完全一样。
  4. 通信双方:UDP支持一对一、一对多、多对一、多对多的交互通信。TCP连接是点对点,每一条TCP连接只有两个端点。
  5. 拥塞:UDP没有拥塞控制,网络的拥塞不会使源主机的发送速率降低。TCP通过慢开始、拥塞避免、快重传、快恢复等算法进行拥塞控制。
  6. 首部:UDP首部开销小,只有8个字节。TCP首部是20个字节。

什么是三次握手和四次挥手?

第一次握手:客户端给服务端发一个SYN报文,表示向服务器发起连接,该报文不包含应用层数据。(第一次握手服务器端能够确认:客户端的发送能力和服务器端的接收能力是正常的)
第二次握手:服务器端收到客户端的SYN报文后,会发送带有SYN和ACK标志的报文作为应答,表示自己已经收到了客户端的SYN。(第二次握手客户端能够确认:服务器的接收、发送能力,客户端的接收、发送能力是正常的)
第三次握手:客户端收到服务器端报文后,还要向服务器端发送一个ACK应答报文,服务器端收到ACK报文后,双方就建立起了连接。(第三次握手服务器能够确认:客户端的接收、发送能力正常,服务器端的发送、接收能力也正常,因此需要三次握手)
三次握手
断开一个TCP连接则需要四次挥手:

第一次挥手: 客户端发送一个FIN报文,并停止再发送数据,此时客户端进入终止等待1状态。(仅仅表示客户端不再发送数据了,但还是能接收数据)
第二次挥手: 服务器收到这个FIN,会发送ACK报文,表明已经收到客户端的报文,此时服务器端进入关闭等待状态;客户端收到服务器端的确认后,进入终止等待2状态,等待服务器发出的连接释放报文。(先回一个ACK应答报文,因为服务器端可能还有数据需要处理和发送)
第三次挥手:服务器关闭与客户端的连接,发送一个FIN报文给客户端,此时服务器处于最后确认状态,等待客户端的确认。(服务器端不再发送数据,发送FIN报文给客户端表示同意关闭连接)
第四次挥手:客户端收到FIN报文后,发送一个ACK报文,服务器端收到报文后,就关闭连接,处于关闭状态,客户端再经过2MSL(MSL,报文最大生存时间)后,自动进入关闭状态。
四次挥手

建立连接可以两次或者四次握手吗?为什么?

不可以采用两次握手
因为可能会出现已经失效的请求报文又传到了服务器,服务器收到失效的连接请求报文后,就误认为是客户端再次发出新的请求,于是会像客户端发出确认报文,同意建立连接。但是客户端并没有发出连接请求,所以不会理睬客户端的确认,但服务器却认为新的连接已经建立,并一直等待客户端发来数据,这样服务器端的很多资源就浪费掉了。
采用三次握手可以防止上述现象发生。
而且两次握手无法保证客户端能正确接收第二次握手的报文。

可以采用四次握手,但是三次握手已经保证了最大概率的可靠传输,所以使用四次握手,反而会降低传输效率。

三次握手是否可以携带数据?

第一次、第二次握手不可以携带数据。第三次握手可以携带数据。
原因是如果第一次握手可以携带数据,如果有人恶意攻击服务器,每次都在第一次握手中的SYN报文中放入大量数据,不理服务器的接收和发送能力是否正常,然后疯狂发送SYN报文,这样服务器就会花费很长时间、很多内存空间来接收这些报文,所以第一次握手携带数据会让服务器更容易受到攻击。而第三次握手,客户端已经处于建立状态,所以可以携带数据。

TCP通过哪些方式来保证可靠性?

1. 滑动窗口:应用数据被分割成TCP认为合适发送的数据块;
2. 选择确认:发送报文后,等待确认;
3. 超时重传:没有收到确认,将重发数据。

TCP的流量控制机制?

流量控制是为了让发送方发送数据的速度慢点,让接收方来得及接收。
TCP采用大小可变的滑动窗口机制进行流量控制,窗口大小的单位是字节。
在通信过程中,接收方会根据自己接收缓存的大小,动态地调整发送方的发送窗口大小(接收方设置确认报文中的窗口字段通知给发送方),发送方的发送窗口取接收窗口和拥塞窗口的最小值。

TCP拥塞控制?

拥塞控制指的是防止过多的数据注入到网络中,可以使得网络中的路由器或者链路不致过载。

  1. 慢开始:不要一开始就发送大量数据,先探测一下网络的拥塞程度,由小到大逐渐增加拥塞窗口的大小
  2. 拥塞避免:让拥塞窗口按照线性规律缓慢地增大,而不是像满开始阶段那样加倍增长。
  3. 快重传:发送发只要一连收到三个重复确认就应当立即重传对方尚未接收到的报文段,而不必继续等待设置的重传计时器时间到期。
  4. 快恢复:当发送发连续收到对同一报文段的三个重复确认(此时发送方认为网络可能没有出现拥塞),就执行“乘法减小”算法,把慢开始门限ssthresh减半,但是不执行慢开始算法,执行拥塞避免算法.
    TCP拥塞窗口在拥塞控制时的变化情况

交换机和路由器的区别?

1. 工作层次:交换机主要工作在数据链路层,路由器主要工作在网络层。
2. 转发依据:交换机转发依据的对象是MAC地址,路由器转发依据的对象是IP地址。
3. 功能:交换机功能较简单,只是将主机连起来组成局域网,路由器可以将局域网连接起来,华能分割广播域,还能提供防火墙。

ARP协议的作用及工作原理?

ARP协议将IP地址转换为物理地址。
工作原理:

  1. 每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
  2. 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就像本网段的所有数据发送ARP数据包,该数据包的内容包括:源主机的IP地址,源主机的MAC地址,目的主机的IP地址。
  3. 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果以及存在,则覆盖,然后将自己的MAC地址写入到ARP响应包中,告诉源主机自己是它想要找的MAC地址。
  4. 源主机收到ARP响应包后,将目的主机的IP和MAC地址写入到ARP列表中,并利用此信息发送数据,如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
    广播发送ARP请求,单播发送ARP响应。
    ARP表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值