【26】C++岗位求职面试八股文第二十六篇(计算机网络)

系列文章目录

第一篇:语言基础

第二篇:设计模式

第三篇:数据库

第四篇:计算机网络

第五篇:操作系统

第六篇:LInux

第七篇:数据结构

第八篇:智力题

[41]TCP拥塞控制与流量控制区别

(1)拥塞控制就是为了防⽌过多的数据注⼊到⽹络中 这样就可以使⽹络中的路由器或链路不致过载。拥塞控制所要做的都有⼀个前提,就是⽹络能 够承受现有的⽹络负荷。拥塞控制是⼀个全局性的过程,涉及到所有的主机,所有的路由器, 以及与降低⽹络传输性能有关的所有因素。

(2)流量ᰁ控制往往是点对点通信ᰁ的控制 是个端到端的问题。流ᰁ控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

[42]三次握手之后,双方怎么知道后续不会丢包

滑动窗口协议

[43]TCP 与 UDP 在网络协议中的哪一层,他们之间有什么区别?

TCP和UDP协议都是传输层协议。二者的区别主要有:基于连接vs无连接TCP是面向连接的协议。UDP是无连接的协议。UDP更加适合消息的多播发布,从单个点向多个点传输消息。

可靠性TCP提供交付保证,传输过程中丢失,将会重发。UDP是不可靠的,不提供任何交付保证。(网游和视频的丢包情况)

有序性TCP保证了消息的有序性,即使到达客户端顺序不同,TCP也会排序。UDP不提供有序性保证。

数据边界TCP不保存数据边界。虽然TCP也将在收集所有字节之后生成一个完整的消息,但是这些信息在传给传输给接受端之前将储存在TCP缓冲区,以确保更好的使用网络带宽。UDP保证。在UDP中,数据包单独发送的,只有当他们到达时,才会再次集成。包有明确的界限来哪些包已经收到,这意味着在消息发送后,在接收器接口将会有一个读操作,来生成一个完整的消息。

速度TCP速度慢UDP速度快。应用在在线视频媒体,电视广播和多人在线游戏。

发送消耗TCP是重量级。UDP是轻量级。因为UDP传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。这也反映在用于报头大小。

报头大小TCP头大。一个TCP数据包报头的大小是20字节。不包含可选项TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。UDP头小。UDP数据报报头是8个字节。而UDP报头只包含长度,源端口号,目的端口,和校验和。

拥塞或流控制TCP有流量控制。在任何用户数据可以被发送之前,TCP需要三数据包来设置一个套接字连接。TCP处理的可靠性和拥塞控制。UDP不能进行流量控制。

应用由于TCP提供可靠交付和有序性的保证,它是最适合需要高可靠并且对传输时间要求不高的应用。UDP是更适合的应用程序需要快速,高效的传输的应用,如游戏。UDP是无状态的性质,在服务器端需要对大量客户端产生的少量请求进行应答的应用中是非常有用的。

在实践中,TCP被用于金融领域,如FIX协议是一种基于TCP的协议,而UDP是大量使用在游戏和娱乐场所。

10.上层使用的协议基于TCP协议的:Telnet,FTP以及SMTP协议。基于UDP协议的:DHCP、DNS、SNMP、TFTP、BOOTP。

[44]说说从系统层面上,UDP 如何保证尽量可靠?

UDP仅提供了最基本的数据传输功能,至于传输时连接的建立和断开、传输可靠性的保证这些UDP统统不关心,而是把这些问题抛给了UDP上层的应用层程序去处理,自己仅提供传输层协议的最基本功能。

最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。添加seq/ack机制,(序列号,确认 应答号)确保数据发送到对端添加发送和接收缓冲区,主要是用户超时重传。添加超时重传机制。

[45]TCP 的 keepalive,以及和 HTTP 的 keepalive 的区别?

TCP的keepalive机制和HTTP的keep-alive机制是说的完全不同的两个东西,tcp的keepalive是在ESTABLISH状态的时候,双方如何检测连接的可用行。而http的keep-alive说的是如何避免进行重复的TCP三次握手和四次挥手的环节。HTTP Keep-Alive连接保活

TCP KEEPALIVE通信保活

链接建立之后,如果应用程序或者上层协议一直不发送数据,或者隔很长时间才发送一次数据,当链接很久没有数据报文传输时如何去确定对方还在线,到底是掉线了还是确实没有数据传输,链接还需不需要保持,这种情况在TCP协议设计中是需要考虑到的。TCP协议通过一种巧妙的方式去解决这个问题,当超过一段时间之后,TCP自动发送一个数据为空的报文(探测报文)给对方,如果对方回应了这个报文,说明对方还在线,链接可以继续保持,如果对方没有报文返回,并且重试了多次之后则认为链接丢失,没有必要保持链接

[46]简述 TCP 协议的延迟ACK 和累计应答

1.延迟应答指的是:TCP在接收到对端的报文后,并不会立即发送ack,而是等待一段时间发送ack,以便将ack和要发送的数据一块发送。当然ack不能无限延长,否则对端会认为包超时而造成报文重传。linux采用动态调节算法来确定延时的时间。

2.累计应答指的是:为了保证顺序性,每一个包都有一个ID(序号),在建立连接的时候,会商定起始的ID是多少,然后按照ID一个个发送。而为了保证不丢包,对应发送的包都要进行应答,但不是一个个应答,而是会应答某个之前的ID,该模式称为累计应答

[47] TCP 如何加速一个大文件的传输

1.建连优化:TCP 在建立连接时,如果丢包,会进入重试,重试时间是 1s、2s、4s、8s 的指数递增间隔,缩短定时器可以让 TCP 在丢包环境建连时间更快,非常适用于高并发短连接的业务场景。2.平滑发包:在 RTT 内均匀发包,规避微分时间内的流量突发,尽量避免瞬间拥塞3.丢包预判:有些网络的丢包是有规律性的,例如每隔一段时间出现一次丢包,例如每次丢包都连续丢几个等,如果程序能自动发现这个规律(有些不明显),就可以针对性提前多发数据,减少重传时间、提高有效发包率。4.RTO 探测:(RTO指得是超时重传时间)若始终收不到 ACK 报文,则需要触发 RTO 定时器。RTO 定时器一般都时间非常长,会浪费很多等待时间,而且一旦 RTO,CWND 就会骤降(标准 TCP),因此利用 Probe 提前与 RTO 去试探,可以规避由于 ACK 报文丢失而导致的速度下降问题。5.带宽评估:通过单位时间内收到的 ACK 或 SACK 信息可以得知客户端有效接收速率,通过这个速率可以更合理的控制发包速度。6.带宽争抢:有些场景(例如合租)是大家互相挤占带宽的,假如你和室友各 1Mbps 的速度看电影,会把 2Mbps 出口占满,而如果一共有 3 个人看,则每人只能分到 1/3。若此时你的流量流量达到 2Mbps,而他俩还都是 1Mbps,则你至少仍可以分到 2/(2+1+1) * 2Mbps = 1Mbps 的 50% 的带宽,甚至更多,代价就是服务器侧的出口流量加大,增加成本。(TCP 优化的本质就是用带宽换用户体验感)

[48]TCP优化

[49]服务器怎么判断客户端断开了连接

检测连接是否丢失的方法大致有两种:keepalive和heart-beat**(tcp内部机制)**采用keepalive,它会先要求此连接一定时间没有活动(一般是几个小时),然后发出数据段,经过多次尝试后(每次尝试之间也有时间间隔),如果仍没有响应,则判断连接中断。可想而知,整个周期需要很长的时间。**(应用层实现)**一个简单的heart-beat实现一般测试连接是否中断采用的时间间隔都比较短,可以很快的决定连接是否中断。客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线。并且,由于是在应用层实现,因为可以自行决定当判断连接中断后应该采取的行为,而keepalive在判断连接失败后只会将连接丢弃。

[50]如何查看TCP的连接状态?

netstat -napt

⽤ route -n 命令查看当前系统的路由表arp -a 命令来查看 ARP 缓存的内容

[51]网卡

[52]路由器和交换机的区别

因为路由器是基于 IP 设计的,俗称三层⽹络设备,路由器的各个端⼝都具有 MAC 地址 和 IP 地址;⽽交换机是基于以太⽹设计的,俗称⼆层⽹络设备,交换机的端⼝不具有 MAC 地址。

[53]说说端到端,点到点的区别

端到端通信是针对传输层来说的,传输层为网络中的主机提供端到端的通信。因为无论tcp还是udp协议,都要负责把上层交付的数据从发送端传输到接收端,不论其中间跨越多少节点。只不过tcp比较可靠而udp不可靠而已。所以称之为端到端,也就是从发送端到接收端。它是一个网络连接,指的是在数据传输之前,在发送端与接收端之间(忽略中间有多少设备)为数据的传输建立一条链路,链路建立以后,发送端就可以发送数据,知道数据发送完毕,接收端确认接收成功。 也就是说在数据传输之前,先为数据的传输开辟一条通道,然后在进行传输。从发送端发出数据到接收端接收完毕,结束。端到端通信建立在点到点通信的基础之上,它是由一段段的点到点通信信道构成的,是比点到点通信更高一级的通信方式,完成应用程序(进程)之间的通信。

端到端的优点:链路建立之后,发送端知道接收端一定能收到,而且经过中间交换设备时不需要进行存储转发,因此传输延迟小。端到端传输的缺点:(1)直到接收端收到数据为止,发送端的设备一直要参与传输。如果整个传输的延迟很长,那么对发送端的设备造成很大的浪费。(2)如果接收设备关机或故障,那么端到端传输不可能实现。

点到点通信是针对数据链路层或网络层来说的,因为数据链路层只负责直接相连的两个节点之间的通信,一个节点的数据链路层接受ip层数据并封装之后,就把数据帧从链路上发送到与其相邻的下一个节点。 点对点是基于MAC地址和或者IP地址,是指一个设备发数据给与该这边直接连接的其他设备,这台设备又在合适的时候将数据传递给与它相连的下一个设备,通过一台一台直接相连的设备把数据传递到接收端。直接相连的节点对等实体的通信叫点到点通信。它只提供一台机器到另一台机器之间的通信,不会涉及到程序或进程的概念。同时点到点通信并不能保证数据传输的可靠性,也不能说明源主机与目的主机之间是哪两个进程在通信。

由物理层、数据链路层和网络层组成的通信子网为网络环境中的主机提供点到点的服务

点到点的优点:(1)发送端设备送出数据后,它的任务已经完成,不需要参与整个传输过程,这样不会浪费发送端设备的资源。(2)即使接收端设备关机或故障,点到点传输也可以采用存储转发技术进行缓冲。点到点的缺点:点到点传输的缺点是发送端发出数据后,不知道接收端能否收到或何时能收到数据。在一个网络系统的不同分层中,可能用到端到端传输,也可能用到点到点传输。如Internet网,IP及以下各层采用点到点传输,4层以上采用端到端传输。

[54]说说浏览器从输入 URL 到展现页面的全过程

1、输入地址2、浏览器查找域名的 IP 地址:本地缓存、系统缓存、host缓存、DNS缓存、本地DNS服务器。。。。。3.TCP三次握手建立客户端和服务器的连接4、浏览器向 web 服务器发送一个 HTTP 请求5、服务器处理请求6、服务器返回一个 HTTP 响应给客户端7、浏览器显示 HTML8、浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)9. TCP四次挥手关闭客户端和服务器的连接

[55]http特性:

特性:简单、灵活、易于扩展、应⽤⼴泛和跨平台。简单:基本报⽂格式为header+body,易于理解灵活和易于扩展:可以增加了SSL/TLS安全传输层

HTTP/1.1 ,是⽬前主流的 HTTP 协议版本

[56]简述 HTTP 和 HTTPS 的区别?

1.HTTP:超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:超文本安全传输协议,是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL安全套接字/TSL安全传输层协议,HTTPS 在 TCP 三次握⼿之后,还需进⾏ SSL/TLS 的握⼿过程,才可进⼊加密报⽂传输。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。(信息加密、网站安全)

2.HTTP与HTTPS的区别   传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。所有传输的内容都经过加密,信息加密采⽤对称加密,但对称加密的密钥⽤服务器⽅的证书进⾏了⾮对称加密。HTTP 安全性没有 HTTPS⾼,但是 HTTPS ⽐HTTP耗费更多服务器资源;

http和https使用的是完全不同的连接方式,http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

用的端口也不一样,前者是80,后者是443。

https协议需要到ca申请证书,来保证服务器的身份是可信的

[57]https⽤到了哪些加密技术?

A结尾,非对称加密S结尾,对称加密

[58]AES和DES算法的主要区别

AES与DES之间的主要区别在于加密过程。在DES中,将明文分为两半,然后再进行进一步处理;而在AES中,整个块不进行除法,整个块一起处理以生成密文。相对而言,AES比DES快得多,更灵活,更安全。与DES相比,AES能够在几秒钟内加密大型文件

[59]RSA算法

RSA算法是一种非对称加密算法,这一算法主要依靠分解大素数的复杂性来实现其安全性。将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。使用最广泛的非对称加密算法,运行消耗大,效率低,

[60]对称加密和非对称加密

非对称加密:第一步:ipB先给A发送B公钥,ipA用B公钥加密A公钥发送给ipB,ipB拿到后,用B私钥去取里面内容,ipB拿到A公钥。第二步:双方通信用对方公钥直接加密后发送。接收方用自己的私钥去解密

对称加密:

[续]C++岗位求职面试八股文第二十七篇(计算机网络)

更多关于算法题解、软件开发面经、机器学习算法面经、各企业面试问题记录,关注Fintech砖,持续更新中。https://www.nowcoder.com/users/873777317

企业面试记录专栏https://www.nowcoder.com/creation/manager/columnDetail/0YBWnm

机器学习面经专栏https://www.nowcoder.com/creation/manager/columnDetail/j8nNy0

软件开发面经专栏https://www.nowcoder.com/creation/manager/columnDetail/0aXKaM

更多校园招聘常见面试问题(开发、算法、编程题目)参见CSDN博客:http://t.csdn.cn/V4qbH

欢迎关注、收藏、点赞后进行问题咨询及秋招建议

#晒一晒我的offer##牛客在线求职答疑中心##我的实习求职记录##软件开发薪资爆料##23届找工作求助阵地#
软件开发八股面经 文章被收录于专栏

包含C++、操作系统、数据库、计算机组成、计算机网络、设计模式、操作系统、牛客网服务器项目、综合智力题等

全部评论

相关推荐

真没意想到
从明天开始狠狠卷JV...:我建议释放offer,然后这个offer流到我头上
点赞 评论 收藏
分享
牛客50327486...:腾讯官方:我们没有人机对局
点赞 评论 收藏
分享
牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
评论
1
16
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务