欢迎关注公众号【11来了】,及时收到 AI 前沿项目工具及新技术的推送!
在我后台回复 「资料」 可领取
编程高频电子书
!在我后台回复「面试」可领取
硬核面试笔记
!
网络面试实战
为什么要学习网络相关知识?
对于好一些的公司,计算机基础的内容是肯定要面的,尤其是 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 个字节,需要切分为多个数据包传输
之后你发送的请求就可以发送到目标电脑了