0
点赞
收藏
分享

微信扫一扫

【面试突击】计算级网络面试实战(上)

在我后台回复 「资料」 可领取编程高频电子书

在我后台回复「面试」可领取硬核面试笔记


网络面试实战

为什么要学习网络相关知识?

对于好一些的公司,计算机基础的内容是肯定要面的,尤其是 30k 以内的工程师,因为目前处于的这个级别肯定是要去写项目的,还没上升到去设计架构的高度,因此不可避免地要和机器、网络、cpu、磁盘、内存打交道,就比如线上机器 cpu 负载 100% 了怎么办呢?内存使用率过高怎么办?

对于这些问题,必须依靠计算机基础才可以去解决,并且如果不了解这些,以后如果去带头做一个项目,在生产环境稍微碰到一些相关问题,根本也就不知道怎么去解决,所以对于计算机基础的内容一定要好好掌握!


计算级网络的模型

计算级网络的模型有 OSI 七层模型和 TCP/IP 四层模型,而 OSI 七层模型是先出现的理论模型,再进行实践,而 TCP/IP 是参考 OSI 七层模型,先有了协议和应用再提出了四层模型,目前 TCP/IP 四层模型被广泛使用就是因为 OSI 七层模型实践之前,TCP/IP 四层模型就已经广泛使用了,已经成为了流行的网络模型,当 OSI 七层模型的具体协议及应用出来的时候,市场已经被 TCP/IP 所霸占了


OSI 七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

TCP/IP 四层模型:应用层、传输层、网络层、链路层、物理层

我之前也写了一篇文章,详细写了每一层具体是做什么的,以及每一层的协议,TCP 和 UDP 等等:网络相关面试题

这里也简单写一下每一层到底是做什么的,了解一下有个大概的感觉即可:

  • 物理层:通过物理介质,光缆等介质传输 电路信号,二进制 0 和 1 在物理层被转换为电路信号进行传输
  • 数据链路层:通过物理层传输了电路信号,但是并不知道电路信号的含义,数据链路层 将电路信号翻译为 0 和 1,并且将电路信号分组,知道哪些 0 和哪些 1 是同一组的,网络交换机 工作在数据链路层,主要是 用在局域网的通信,在传输数据包时是通过 mac 地址进行接收的,如果一个电脑发个数据包出去,会广播给局域网内的所有机器设备的网卡,每台机器都从数据包中取出 mac 地址和自己的 mac 地址比较,如果一样,表示是给自己发送的数据包
  • 网络层:在数据链路层是 通过广播给局域网的机器来发送数据包的 ,那么如何区分局域网呢?就是通过网络层中 IP 协议的 IP 地址来区分的,也就是通过子网掩码来判断哪些 IP 属于同一个子网,路由器 工作在网络层,通过路由器就可以连入 英特网,也就是常说的“你的电脑可以上网了”,你如果要和另一个局域网上的电脑进行通信,那么就是通过路由器转发数据包的,先是通过交换机将数据转发送给路由器,路由器收到数据包之后,再次通过交换机将数据包发送给另一个局域网上的路由器,之后再转发给目标电脑
  • 传输层:在一台机器上是同时有多个进程使用一个网卡进行通信的,比如 QQ、微信,但是这些进程的端口号不同,网络层是基于 ip 协议进行主机间的寻址和通信的,那么传输从就是基于 端口号 来进行两个主机的端口之间的连接和通信,其中 udp 和 tcp 就是传输层的协议
  • 会话层:会话层用于建立连接、管理连接、发送和接收数据,在客户端和服务器建立会话之前,服务端会对客户端进行身份验证并且授权
  • 表示层:表示层从应用层接收数据,这些数据以字符和数字的形式出现,表示层 将这些字符和数据转成二进制,在传输数据之前,表示层将原始数据进行压缩,可以加快传输,并且保证完整性数据传输前的数据加密,在发送端,数据在表示层会被加密,在接收端,数据在表示层会进行解密操作
  • 应用层:应用层是 由网络应用程序使用的,是离用户最近的一层,应用层通过各种协议,为网络应用提供服务,常见协议如下:
  • FTP - 文件传输协议
  • HTTP/S - 超文本传输(安全)协议
  • SMTP - 邮件发送协议:用于与邮件服务器建立通信,并处理电子邮件的发送操作
  • POP3 - 邮件接收协议:用于与邮件服务器建立通信,并且从服务器中检索邮件
  • Telnet : 与虚拟段之间的通信协议


浏览器请求 www.baidu.com 的流程

首先,假设我们电脑配置如下:

  • ip 地址:192.168.30.30
  • 子网掩码:255.255.255.0
  • 网关地址:192.168.30.1
  • DNS 地址:8.8.8.8

当我们通过域名 www.baidu.com 进行访问时,首先会找到 DNS 服务器 解析域名得到对应的 ip 地址,这里假设为 172.194.17.109

之后判断本机 ip 与目的地址的 ip 是否处于同一子网,显然不在一个子网,一个 192 开头,另一个 172 开头(根据子网掩码判断),那么就将数据包发送给 网关

那么浏览器要访问一个网站,是基于应用层的 http 协议 的,并且要将浏览器发出的请求封装成应用层数据包,如下

【面试突击】计算级网络面试实战(上)_网络层

那么这个数据包就会由应用层向下传输,到表示层、会话层、传输层,到达 传输层 之后,传输层的 TCP 协议需要去 设置数据包的端口号,发送方的端口号随机算一个,接收方的端口号一般默认是 80

之后数据包由到了网络层,通过 IP 协议,将数据包进一步封装,添加上 IP 协议所需的本机 IP 地址和目的 IP 地址,之后判断如果两台机器不在同一个子网内的话,就将数据包先广播到网关中去,通过网关发送给目的地址

接下来到了数据链路层,将网络层的数据包进一步封装,并加上本机 mac 地址和网关的 mac 地址,这里封装好的就是 以太网数据包,大小限制为 1500 字节,如果超过网络层传输下来的数据包超过 1500 个字节,需要切分为多个数据包传输

之后你发送的请求就可以发送到目标电脑了


举报

相关推荐

0 条评论