【24】C++岗位求职面试八股文第二十四篇(计算机网络)
系列文章目录
第一篇:语言基础
第二篇:设计模式
第三篇:数据库
第四篇:计算机网络
第五篇:操作系统
第六篇:LInux
第七篇:数据结构
第八篇:智力题
[1]Websocket
本质上是一个基于tcp的协议, HTML5下一种新的协议.它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议
WebSocket有以下特点:
是真正的全双工方式,建立连接后客户端与服务器端是完全平等的,可以互相主动请求。而HTTP长连接基于HTTP,是传统的客户端对服务器发起请求的模式。
HTTP长连接中,每次数据交换除了真正的数据部分外,服务器和客户端还要大量交换HTTP header,信息交换效率很低。Websocket协议通过第一个request建立了TCP连接之后,之后交换的数据都不需要发送 HTTP header就能交换数据,这显然和原有的HTTP协议有区别所以它需要对服务器和客户端都进行升级才能实现(主流浏览器都已支持HTML5)
[2]tcp http socket关系
Socket是对TCP/IP协议的封装, 而是一个调用接口, 通过Socket,我们才能使用TCP/IP协议。
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Http连接:http连接就是所谓的短连接
socket连接:socket连接及时所谓的长连接
[3]Tcpdump抓包代码
Tcpdump -i eth1 icmp and host 183.232.231.174 -w ping.pcapTcpdump -i any tcp and host 183.232.231.174 and post 80 -w http.pcap
[4]简述静态路由和动态路由
1.静态路由是由系统管理员设计与构建的路由表规定的路由。适用于网关数量有限的场合,且网络拓朴结构不经常变化的网络。其缺点是不能动态地适用网络状况的变化,当网络状况变化后必须由网络管理员修改路由表。
2.动态路由是由路由选择协议而动态构建的,路由协议之间通过交换各自所拥有的路由信息实时更新路由表的内容。动态路由可以自动学习网络的拓朴结构,并更新路由表。其缺点是路由广播更新信息将占据大量的网络带宽。
[5]说说有哪些路由协议,都是如何更新的
路由可分为静态&动态路由。静态路由由管理员手动维护;动态路由由路由协议自动维护路由选择算法的必要步骤:1)向其它路由器传递路由信息;2)接收其它路由器的路由信息;3)根据收到的路由信息计算出到每个目的网络的最优路径,并由此生成路由选择表;4)根据网络拓扑的变化及时的做出反应,调整路由生成新的路由选择表,同时把拓扑变化以路由 信息的形式向其它路由器宣告。两种主要算法:距离向量法(Distance Vector Routing)和链路状态算法(Link-State Routing)。
RIP 路由协议、OSPF 路由协议、)BGP 和 BGP4 路由协议、IGRP 和 EIGRP 协议、
[6]简述域名解析过程,本机如何干预域名解析
(1)在浏览器中输入www.qq.com域名,操作系统会先检查客户端缓存、操作系统缓存、自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。(2)如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。(3)如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。(4)如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。(5)如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。(6)如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
通过修改本机host来干预域名解析,例如:在/etc/hosts文件中添加一句话192.168.188.1 www.baidu.com保存文件后再ping一下www.baidu.com就会连接到192.168.188.1了
每一行为一条记录,分成两部分,第一部分是IP,第二部分是域名。一个IP后面可以跟多个域名,如果有多行中出现相同的域名(对应的ip不一样),会按最前面的记录来解析
[7]端口
⼀台主机可以有多少个端⼝? 65535 ,这个值是可以修改的
[8]Tcp连接指令
[9]DNS 劫持是什么?
DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。DNS劫持症状:在某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。
[10]简述网关的作用是什么,同一网段的主机如何通信
1.网关即网络中的关卡,我们的互联网是一个一个的局域网、城域网、等连接起来的,在连接点上就是一个一个网络的关卡,即我们的网关,他是保证网络互连的,翻译和转换,使得不同的网络体系能够进行。
2.网内通信,即通信双方都位处同一网段中,数据传输无需经过路由器(或三层交换机),即可由本网段自主完成。假设发送主机的ARP表中并无目的主机对应的表项,则发送主机会以目的主机IP地址为内容,广播ARP请求以期获知目的主机MAC地址,并通过交换机(除到达端口之外的所有端口发送,即洪泛(Flooding))向全网段主机转发,而只有目的主机接收到此ARP请求后会将自己的MAC地址和IP地址装入ARP应答后将其回复给发送主机,发送主机接收到此ARP应答后,从中提取目的主机的MAC地址,并在其ARP表中建立目的主机的对应表项(IP地址到MAC地址的映射),之后即可向目的主机发送数据,将待发送数据封装成帧,并通过二层设备(如交换机)转发至本网段内的目的主机,自此完成通信。
[11]简述CSRF攻击的思想以及解决方法
1.CSRF全称叫做跨站请求伪造。就是黑客可以伪造用户的身份去做一些操作,进而满足自身目的。要完成一次CSRF攻击,受害者必须依次完成两个步骤:1)登录受信任网站A,并在本地生成Cookie。2)在不登出A的情况下,访问危险网站B。此时,黑客就可以获取你的cookie达成不可告人的目的了。
2.CSRF 攻击是一种请求伪造的攻击方式,它利用的是服务器不能识别用户的类型从而盗取用户的信息来攻击。因此要防御该种攻击,因为从服务器端着手,增强服务器的识别能力,设计良好的防御机制。主要有以下几种方式:1)请求头中的Referer验证(不推荐)HTTP的头部有一个Referer信息的字段,它记录着该次HTTP请求的来源地址(即它从哪里来的),既然CSRF攻击是伪造请求是从服务器发送过来的,那么我们就禁止跨域访问,在服务器端增加验证,过滤掉那些不是从本服务器发出的请求,这样可以在一定程度上避免CSRF攻击。 但是这也有缺点,比如如果是从搜索引擎所搜结果调整过来,请求也会被认为是跨域请求。2)请求令牌验证(token验证)token验证是一种比较广泛使用的防止CSRF攻击的手段,当用户通过正常渠道访问服务器时,服务器会生成一个随机的字符串保存在session中,并作为令牌(token)返回给客户端,以隐藏的形式保存在客户端中,客户端每次请求都会带着这个token,服务器根据该token判断该请求是否合法
[12]说说 MAC地址和IP地址分别有什么作用
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。而MAC地址,指的是物理地址,用来定义网络设备的位置。
IP地址的分配是根据网络的拓扑结构,而不是根据谁制造了网络设置。若将高效的路由选择方案建立在设备制造商的基础上而不是网络所处的拓朴位置基础上,这种方案是不可行的。当存在一个附加层的地址寻址时,设备更易于移动和维修。例如,如果一个以太网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。
无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。
[13]简述 TCP 三次握手和四次挥手的过程
三次握手1)第一次握手:建立连接时,客户端向服务器发送SYN包(seq=x),请求建立连接,等待确认2)第二次握手:服务端收到客户端的SYN包,回一个ACK包(ACK=x+1)确认收到,同时发送一个SYN包(seq=y)给客户端3)第三次握手:客户端收到SYN+ACK包,再回一个ACK包(ACK=y+1)告诉服务端已经收到4)三次握手完成,成功建立连接,开始传输数据
四次挥手1)客户端发送FIN包(FIN=1)给服务端,告诉它自己的数据已经发送完毕,请求终止连接,此时客户端不发送数据,但还能接收数据2)服务端收到FIN包,回一个ACK包给客户端告诉它已经收到包了,此时还没有断开socket连接,而是等待剩下的数据传输完毕3)服务端等待数据传输完毕后,向客户端发送FIN包,表明可以断开连接4)客户端收到后,回一个ACK包表明确认收到,等待一段时间,确保服务端不再有数据发过来,然后彻底断开连接
[14]说说 TCP 2次握手行不行?为什么要3次
1.为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤
2.如果只是两次握手, 至多只有连接发起方的起始序列号能被确认,服务端的序列号则得不到确认
三个原因
- 三次握⼿才可以阻⽌᯿复历史连接的初始化(主因)
- 三次握⼿才可以同步双⽅的初始序列号
- 三次握⼿才可以避免资源浪费
[15]半连接和全连接队列
[16]SYN攻击
1、原理攻击者伪造不同IP地址的SYN报⽂请求连接,服务端收到连接请求后分配资源,回复 ACK+SYN包,但是由于IP地址是伪造的,客户端⽆法收到回应,久⽽久之造成服务端半连接队列被 占满,⽆法正常⼯作,耗费 CPU 和内存资源。检测方式:当在服务器上看到⼤ᰁ的半连接状态时,特别是源 IP 地址是随机的,基本上可以断定这 是⼀次 SYN 攻击2、避免⽅式(1)通过防⽕墙服务器防⽕墙会对收到的每⼀个SYN报⽂进⾏代理和回应,并保持半连接。等发送⽅将ACK包 返回后,再᯿新构造SYN包发到服务器,建⽴真正的TCP连接、路由器等过滤⽹关防护。(2)通过加固 TCP/IP 协议栈防范如增加最⼤半连接数,缩短超时时间。(3)SYN cookies技术当半连接队列满时,启动syn cookie,后续连接不进⼊半连接队列,⽽是计算⼀个cookie值,作为请求报⽂序列号发送给客户端,如果服务端收到客户端确认报⽂,会检查ack包合法性,如 果合法直接加⼊到accept队列,否则丢弃该包
[17]抓包工具
fiddler、httpwatch、 wireshark、Proxyman、 tcpdump,
tcpdump 是Linux下常用的抓包工具,它是一个命令行工具,可以抓取和Wireshark类似的数据,而且保存的数据包,可以放到Wireshark中分析,一般选择连接Internet网络的接口,这样才可以捕获到与网络相关的数据,直接抓包本机网卡进出流量
[18]简述 TCP 和 UDP 的区别,它们的头部结构是什么样的
1.连接:TCP协议是有连接,传输前通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的,即刻传输数据
2.可靠性:TCP协议保证数据可靠交付,拥有确认应答和重传机制,无重复,不丢失,按序到达,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
3TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
4TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率
5服务形式:TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。
6TCP面向的是字节流的服务,UDP面向的是报文的服务。
7连接控制机制:TCP拥有流ᰁ控制、拥塞控制,保证传输安全性等,UDP在⽹络拥堵情况下不会降低发送速 率。
8首部大小:TCP20字节(不算可选项40字节),UDP8字节
9.传输方式:TCP基于字节流,没有边界,但是保证传输顺序和可靠性;UDP继承了IP层特性,基于数据包,有边界可能出现乱序和丢包。
10分片方式TCP数据⼤于MSS最大报文长度时会在TCP层将数据进⾏分⽚传输,到达⽬的地后同样在传输层进⾏合并, 如果有某个⽚丢失则只需要᯿传丢失的分⽚即可;
UDP数据⼤于MTU最大传输单元时会在IP层分⽚(数据链路层规定MTU=1500,网络层分层),同样也在⽬的IP层合并,如果某个IP分⽚丢失,则需要将 所有分⽚都进⾏᯿传,开销⼤TCP 的顺序问题,丢包问题,流量控制都是通过滑动窗口来解决的,拥塞控制时通过拥塞窗口来解决的######################################################1、TCP面向连接,UDP面向无连接;2、TCP传输基于字节流,UDP传输基于报文;3、TCP协议传输具有可靠性,UDP传输则不保证可靠数据交付4、TCP占用系统资源多,效率低,速度慢,UDP占用系统资源较少,效率高,速度相对TCP快
[19]⼀个MTU最⼤是1500字节,那么最多包含多少的数据
ip头部字节⼤⼩为20~60,最多数据即1500-20=1480
[20]DHCP作用是什么
DHCP是动态主机设置协议,是一个局域网的网络协议,使用UDP协议工作。主要有两个用途:1用于内部网或网络服务供应商自动分配IP地址;2给用户用于内部网管理员作为对所有计算机作中央管理的手段。DHCP的主要作用就是管理和分配IP地址。
[续]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++、操作系统、数据库、计算机组成、计算机网络、设计模式、操作系统、牛客网服务器项目、综合智力题等