计算机网络常见的面试题(牛客网总结)

本文主要对面试过程中关于网络的常见面试题进行总结,涉及到七层模型(四层模型)、三次握手、四次挥手是面试中必问的问题,不在这里总结,感兴趣的话可以查看我另一篇博文

1. TCP如何保证可靠性,并简述一下TCP建立连接和断开连接的过程?
答:TCP保证可靠性:(1)序列号、确认应答、超时重传;数据到达接收方,接收方需要发出一个确认应答,表示收到该数据段,并且确认序列号会说明下次接收的数据序列号。如果发送方迟迟未收到确认应答,那么可能是发送数据丢失,也可能是确认应答丢失,这时发送方会等待一定时间后重传。(2)窗口控制与高速重发控制/快速重传(重复确认应答);TCP利用窗口控制来提高传输速度,意思是在一个窗口大小内,不一定等到应答才能发送下一段数据,窗口大小就是无需等待确认而可以继续发送数据的最大值。(3)拥塞控制;如果窗口定义的很大,发送端连续发送大量的数据,可能会造成网络的拥堵,甚至网络瘫痪。所以TCP为了防止这种情况而进行了拥塞控制。
TCP建立连接和断开连接过程:三次握手、四次挥手。

2. 请回答一下HTTP和HTTPS的区别,以及HTTPS的优缺点。
答:区别:(1)HTTP协议是以明文的方式在网络中传输数据,HTTPS协议传输是数据时经过TLS加密后的,HTTPS具有更高的安全性。(2)HTTPS在TCP三次握手之后还要进行SSL的握手。(3)HTTPS协议需要服务器申请证书,客户端安装对应的根证书。(4)HTTP协议端口号是80,HTTPS端口号是443。
HTTPS优点:(1)传输过程中使用密钥加密,安全性更高。(2)HTTPS可以认证用户和服务器,确保数据发送到正确的用户和服务器。
HTTPS缺点:(1)HTTPS握手阶段延时较高(因为三次握手之后还有SSL握手)。(2)HTTPS部署成本高:一方面HTTPS协议需要使用证书来验证自身安全性,所以需要购买CA证书;另一方面再用HTTPS协议需要进行加密解密的计算,占用CPU资源较多,需要的服务器配置或者数目增加。

3. HTTP返回码。
答:1XX:提示信息–表示请求已经接收,继续处理
2XX:成功–表示请求已被成功接收、理解、接受
3XX:重定向–要完成请求必须进行更进一步操作
4XX:客户端错误–请求有错误或者请求无法实现
5XX:服务器端错误–服务器未能实现合法请求
常见状态代码、状态描述的详细说明:
200 OK:客户端请求成功
206 partial content:服务器正确处理部分GET请求,实现断点续传或者同时分片下载,该请求必须包含range请求头来指示客户端期望得到的范围。(这种情况经常发生在客户端继续请求一个未完成的下载的时候)
在这里插入图片描述
在上图的请求中,客户端告诉服务器,它需要该视频文件中从172,032到13,325,503字节范围内的数据。
300 multiple choices(可选重定向):被请求的资源有一系列可供选择的反馈信息,由浏览器/用户自行选择一个。
301 moved permanently(永久重定向):该资源已被永久移动到新的位置,将来任何对该资源的访问都要使用本相应返回的若干个URI之一。
302 moved temporarily(临时重定向):请求的资源现在临时从不同的URI中选择。
303 moved temporarily(临时重定向):发送Post请求,收到303,直接重定向为get,发送get请求,不需要向用户确认。
304 not modified:如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档/网页的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回304。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,比如:输入了错误的URL。
502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(如HTTP)或者辅助服务器(如DNS)收到响应。
4. 说一下IP地址的作用,以及MAC地址的作用。
答:MAC地址是硬件地址,用来定义网络设备的位置,主要由数据链路层负责;IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
5.用户从输入URL到显示页面整个过程。
答:DNS解析–>TCP连接–>发送HTTTP请求–>服务器处理请求并返回HTTP报文–>浏览器解析渲染页面–>连接结束。
6.请你说一说TCP拥塞控制?以及达到什么情况的时候开始减慢增长速度。
答:拥塞控制是防止过多的数据注入网络,使得网络中的路由器或者链路过载。流量控制是点对点的通信量控制,而拥塞控制是全局的网络流量整体性的控制。发送双方都有一个拥塞窗口(cwnd)。
(1)慢开始:最开始发送方的拥塞窗口为1,由小到大递增。每经过一个传输轮次,拥塞窗口cwnd加倍(乘2)。当cwnd超过慢开始门限,则使用拥塞避免算法,避免cwnd增长过长。
(2)拥塞避免(算法):当cwnd超过慢开始门限,每经过一个往返时间RTT,cwnd就增长1。在慢开始和拥塞避免过程中,一旦发现网络拥塞,就把慢开始门限设置为当前值的一半,并且重新设置cwnd为1,重新慢启动。
(3)快重传:接收方每收到一个失序的报文段后就立即发出重复确认,发送方只要收到3个重复确认就立即重传。
(4)快恢复:当发送方连续收到三个重复确认,就将慢开始门限减半,将当前的窗口设置为慢开始门限,并采用拥塞避免算法。(采用快恢复算法时,慢开始只在建立连接和网络超时时才使用)
7.请你说一说TCP/IP数据链路层的交互过程。
答:网络层等到数据链路层用mac地址作为通信目标,数据包到达网络准备往数据链路层发送的时候,首先会去自己的arp缓存表(存ip-mac对应关系)去查找该目标IP的mac地址,如果查到了,就将目标ip的mac地址封装到链路层数据包的包头。如果缓存中没有找到,会发起一个广播(who is ip XXX tell ip XXX),所有收到广播的机器看这个ip是不是自己,如果是自己,就一单播的形式将自己的mac地址回复给请求的机器。
8.请你说说传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文?
答:根据端口区分;看ip头中的协议标识字段,17是udp,6是tcp。
9.网络编程的基本步骤(socket)。
答:
TCP:
服务端:socket–>bind–>listen–>accept–>recv/send–>close;
客户端:socket–>connect–>send/recv–>close.
UDP:
服务端:socket–>bind–>recvfrom/sendto–>close;
客户端:socket–>sendto/recvfrom–>close.
10.TCP和UDP的区别和各自适用的场景。
答:区别
(1)连接:TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接;UDP是面向无连接的。
(2)服务对象:TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。
(3)可靠性:TCP是可靠交付:无差错,不丢失,不重复,按序到达;UDP是尽最大努力交付,不保证可靠交付。
(4)拥塞控制,流量控制:TCP拥有拥塞控制和流量控制保证数据传输的安全性;UDP没有拥塞控制,网络拥塞不影响源主机的发送效率。
(5)报文长度:TCP是动态报文长度,即TCP报文长度根据接收方窗口大小和当前网络拥塞情况决定;UDP面向报文,不合并,不拆分,保留上面传下来的报文边界。
(6)首部开销:TCP首部开销大,首部20个字节;UDP首部开销小,8字节(源端口,目的端口,数据长度,校验和)
适用场景
若通信数据完整性大于实时性,则应选择用TCP协议(文件传输、重要状态等);反之,则使用UDP协议(如视频传输、实时通信等)。
11.TCP四次挥手的时候,先发起方为什么会有一个TIME_WAIT状态,它的作用是什么?
答:(1)保证最后一次握手报文能到接收方,如果接收方未收到会再次发送FIN+ACK,发起方可以进行超时重传。
(2)TIME_WAIT时间一般是2MSL。2MSL后这次连接的所有报文都会消失,不会影响下一次连接。
12.请你说一下GET和POST的区别。
答:(1)概括:对于GET方式请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST方式请求,浏览器会先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
(2)区别:
1)get参数通过url传递,post放在request body中。
2)get请求在URL中传递参数的长度有限制(根据浏览器不同长度限制也不同),而post没有
3)get比post更不安全,因为参数暴露在URL中
4)get请求只能进行url编码,post支持多种编码方式
5)get 请求会被浏览器主动cache (缓存),post 则不会,除非手动设置
6)get请求会完整保留在浏览历史记录里,而post中的参数不会被保留
7)get和post本质上是TCP连接,并无差别,但是由于http的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同
8)GET产生一个TCP数据包,post产生两个数据包。
13.请说一下阻塞,非阻塞,同步,异步。
答:阻塞和非阻塞:调用者在事件没有发生的时候,一直等待事件发生,不能处理其他任务是阻塞。调用者在事件没有发生的时候,可以去处理别的事务这是非阻塞。
同步和异步:调用者循环查看事件有没有发生,这种情况是同步。调用者不用自己去查看事件有没有发生,而是等待注册在时间上的回调函数自己通知自己,这是异步。
14.请你简单说一下http协议。
答:1)简介
HTTP是一个基于TCP/IP通信协议来传递数据的协议。HTTP是一个属于应用层的面向对象的协议。HTTP协议工作于客户端-服务端架构之上,浏览器作为HTTP客户端通过URL向Web服务器发送所有请求,Web服务器根据接收到到的请求向客户端发送相应信息。
2)特点:①简单快速:客户端向服务器发送请求时,只需传送请求方法和路径即可。②灵活:HTTP允许传输任意类型的数据对象。③无连接:限制每次连接只处理一个请求。服务器处理完客户请求,并收到客户应答后,即断开连接。④无状态:协议对于事务处理没有记忆能力。⑤支持B/S及C/S模式。⑥默认端口80。⑦基于TCP协议。
3)HTTP过程概述:
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应内容包括协议版本、成功或者错误的代码、服务器信息、响应头部和响应数据。
15.请你简单说一下数字证书是什么,里面包含哪些内容。
答:数字证书是在一个身份和该身份的持有者所拥有的的公/私钥对之间建立的一种联系,由认证中心(CA)或认证中心的下一级认证中心颁发。根证书是认证中心与用户之间建立信任的基础。在用户使用数字证书之间必须首先下载和安装。
认证中心(CA)是一家能向用户签发数字证书以确认用户身份的管理机构。为了防止数字凭证的伪造,认证中心的公共秘钥必须是可靠的,认证中心必须公布其公共密钥或由更高级的认证中心提供一个电子凭证来证明其公共密钥的有效性,后一种方法导致了多级别认证中心的出现。
内容包括:(1)证书的版本信息;(2)证书的序列号;(3)证书所使用的签名算法;(4)证书的发行机构名称;(5)证书的有效期;(6)证书所有人的名称;(7)证书所有人的公开密钥;(8)证书发行者对证书的签名。

  • 39
    点赞
  • 469
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值