【百面成神】计算机网络基础8问,你能坚持到第几问

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
.cn 域名,1个 12个月
简介: 【百面成神】计算机网络基础8问,你能坚持到第几问

1.常见的返回状态码

A、2xx:表示请求成功

B、3xx:表示重定向状态,需要重新请求

C、400 找不到请求的资源

D、403 没有权限访问此网站

E、404 资源不存在

F、500 服务器内部错误、拒绝访问


2.七层模型&TCP模型

解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。


它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

数据链路层:

在计算机网络中由于各种干扰的存在,物理链路是不可靠的。该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。

它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。

网络层:

计算机网络中如果有多台计算机,怎么找到要发的那台?如果中间有多个节点,怎么选择路径?这就是路由要做的事。

该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。

传输层:

当发送大量数据时,很可能会出现丢包的情况,另一台电脑要告诉是否完整接收到全部的包。如果缺了,就告诉丢了哪些包,然后再发一次,直至全部接收为止。


简单来说,传输层的主要功能就是:监控数据传输服务的质量,保证报文的正确传输。

会话层:

虽然已经可以实现给正确的计算机,发送正确的封装过后的信息了。但我们总不可能每次都要调用传输层协议去打包,然后再调用IP协议去找路由,所以我们要建立一个自动收发包,自动寻址的功能。于是会话层出现了:它的作用就是建立和管理应用程序之间的通信。

表示层:

表示层负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。

应用层:

应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。前端同学对应用层肯定是最熟悉的。

速记下:

应用层 人做好信息,往下发

表示层 翻译一下

会话层 打包

传输层 把包发给下层

网络层 报文:给包贴个ip地址的标签

数据链路层 帧:查表ip转mac,然后转成电信号

物理层 定义好各种信号的意思,线路和插口的格式,发送吧


最后,给大家横向对比下TCP/IP4层模型、5层模型和OSI七层模型的差别:

3.TCP “三次握手“、“四次挥手”

TCP协议是一种是一种面向连接,可靠的数据传输协议,为了在互联网上建立可靠的端到端的字节流设计。

第一次握手: 客户端向服务器端发送报文

证明客户端的发送能力正常。客户端发送一个SYN标记的包,Seq初始序列号x,发送完成后客户端进入SYN_SEND状态。

第二次握手:服务器端接收到报文并向客户端发送报文

证明服务器端的接收能力、发送能力正常;服务器返回确认包(ACK)应答,同时还要发送一个SYN包回去。ACK = x + 1,表示确认收到(客户端发来的Seq值 + 1),Seq = y, 表示让客户端确认是否能收到。发送完成后服务端进入SYN_RCVD状态。

第三次握手:客户端向服务器发送报文

证明客户端的接收能力正常。客户端再次发送确认包(ACK),ACK = y + 1, 表示确认收到服务器的包(服务端发来的Seq值 + 1)。客户端发送完毕后,进入ESTABLISHED状态,服务端接收到这个包,也进入ESTABLISHED状态, TCP握手结束。

为什么是三次握手?不是两次或者四次?

从假设的角度来分析吧,假如是两次握手,会发生什么情况呢? 服务端在发出应答消息后,它根本就不能确认客户端是否接受到消息了,那么这样意味着只有客户端可以向服务端发送数据。

假如是四次握手呢?明明已经保证了一个稳定的传输流了,为什么还要浪费性能再去发一次消息,浪费了性能。

四次挥手

第一次挥手([FIN], Seq = x)

客户端发送一个FIN标记的包,告诉服务器需要关闭连接,表示自己不用发送数据了,但是还可以接收数据。发送完成后,客户端进入FIN_WAIT_1状态。

第二次挥手 ([ACK], ACK = x + 1)

服务端发送一个ACK的确认包,告诉客户端接收到关闭的请求,但是还没有准备好。发送完成后,服务端进入CLOSE_WAIT状态,客户端收到这个包后,进入FIN_WAIT_2,等待服务器关闭连接。

第三次挥手 ([FIN], Seq = y)

服务端准备好关闭连接时,发送FIN标记的包,告诉客户端准备关闭了。发送完成后,服务端进入LAST_ACK状态,等待客户端确认。

第四次挥手 ([ACK], ACK = y + 1)

客户端接收到服务端的关闭请求,再发送ACK标记的确认包,进入TIME_WAIT状态,等待服务端可能请求重传的ACK包。

服务端接收到ACK包后,关闭连接,进入CLOSED状态。

客户端在等待固定时间(两个最大段生命周期)后,没有接收到服务的ACK包,认为服务器已关闭连接,自己也关闭连接,进入CLOSED状态。


为什么是三次握手,却是四次挥手?三次挥手不可以吗?

继续从假设的角度分析,如果是三次挥手,在服务器接收到客户端发送关闭的请求后,把SYN和ACK包一起发过去。这样会造成服务端还有数据没有发送完,造成了数据的丢失。所以中间的这一段时间,等待服务器把剩余的数据发送完是很有必要的。


4.TCP和UDP的区别

TCP是可靠传输,UDP不保证传输的可靠性。

TCP是面向连接的。UDP是无连接的。

TCP会进行流量控制、网络拥塞控制,UDP则不会。

TCP传输速度较UDP慢。

TCP会对数据进行拆分;UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界;

TCP传输数据有序,UDP不保证数据的有序性;


总结来说,TCP面向连接,力求提供准确可靠的消息,进行流量控制、具有网络拥塞机制、会对数据进行分包,并保证数据的有序性,适用于文件传输、邮件等场景。UDP则面向实时传输,适用于视频语音聊天,直播等场景。


5.DNS是怎么解析域名的

A)本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等

B)如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。

C)前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,会查找本地DNS服务器缓存。

D)如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析

6.HTTP和HTTPS

(1)HTTP1.0,HTTP1.1,HTTP1.2

HTTP1.0默认只提供短暂的连接,每次进行tcp请求,服务器都会在请求处理结束后立刻断开连接。下次请求重新创建连接。

HTTP1.1的TCP连接默认不关闭,支持多个请求进行复用。此时服务端是以顺序方式执行的。

HTTP/2采取了多路复用。所谓多路复用,指的是会把信息切分为更小的消息和帧,客户端和服务器都可以同时发送多个请求或者回应,并不需要按照顺序一一对应。这样,如果A,B请求同时发送给服务器,服务器发现请求A特别耗时,可以先回应A已经处理好的部分,接着优先响应请求B。

(2)长连接

在 HTTP 中响应体的 Connection 字段指定为 keep-alive,可以设置长连接。在HTTP1.0以后,长连接默认开启。

(3)HTTP与HTTPS

HTTP是运行于TCP之上的协议,是明文进行传输的,客户端和服务端都无法认证对方的身份。它的端口是80。

HTTPS是运行在SSL(Secure Socket Layer)之上的,SSL运行于TCP之上,HTTPS可以进行加密和认证。其通信证书需要向服务机构进行购买。默认端口是443.

7.IP地址及其分类

IP 地址分为 A、B、C、D 类


记忆方法,记住几个分界点:

1.0.0.0.0 128.0.0.0.0 192.0.0.0.0 224.0.0.0 240.0.0.0


特殊的网址

(1)每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;

(2)IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;

(3)IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试。

如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。


8.一次请求到响应,发生了什么?

(1).首先DNS服务器进行域名解析

(2).TCP的三次握手

(3).Web浏览器向Web服务器发送请求。

1)HTTP请求报文由三部分组成:请求行,请求头和请求正文

2)请求行:用于描述客户端的请求方式,请求的资源名称以及使用的HTTP协议的版本号

3)请求头:用于描述客户端请求哪台主机,以及客户端的一些环境信息等

4)请求正文:当使用POST, PUT等方法时,通常需要客户端向服务器传递数据。这些数据就储存在请求正文中(GET方式是保存在url地址后面,不会放到这里)

(4).Web服务器应答.

1)HTTP响应也由三部分组成:状态码,响应头和实体内容

2)状态码:状态码用于表示服务器对请求的处理结果

3)响应头:响应头用于描述服务器的基本信息,以及客户端如何处理数据

4)实体内容:服务器返回给客户端的数据

(5)Web服务器关闭TCP连接一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接。如果添加Connection:keep-alive TCP连接在发送后仍然保持打开状态。

(6)浏览器解析html代码,并请求html代码中的资源

浏览器拿到html文件后,就开始解析其中的html代码,遇到js/css/image等静态资源时,就向服务器端去请求下载

(7) 浏览器对页面进行渲染呈现给用户


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
网络架构 数据格式
网络通信原理系统的认知(NEBASE第十四课)(二)
网络通信原理系统的认知(NEBASE第十四课)(二)
243 0
|
5月前
计算机网络——物理层相关习题(计算机专业考研全国统考历年真题)
计算机网络——物理层相关习题(计算机专业考研全国统考历年真题)
47 0
|
存储 传感器 监控
自考-计算机网络原理-第一章总结
自考-计算机网络原理-第一章总结
120 0
|
传感器 网络架构
自考--计算机网络
自考--计算机网络
70 0
自考--计算机网络
|
缓存 负载均衡 网络协议
【期末复习】计算机网络 谢希仁版(四)网络层(重点)
网络层 网络层 1. 网络层的核心功能: 分组转发与路由选择 1.1 网络协议IP 1.2 一些概念 2. 数据报服务和虚电路服务 2.1 虚电路网络 2.1.1 概念 2.1.2 组成 2.2 数据报网络 2.3 两者对比 3. IP 地址,子网掩码,无类地址,子网划分,路由聚合 3.1 IP地址 3.1.1 基础知识 3.1.2 特点 3.1.3 IP地址与硬件地址 3.1.4 两个地址127.0.0.1 和 192.168.1.xxx 区别 3.2 子网掩码 3.3 无类地址 3.4 子网划分 3.5 路由聚合 4. ARP协议 5. IP 数据报格式 6. IP 报文分片重组
381 0
【期末复习】计算机网络 谢希仁版(四)网络层(重点)
|
网络协议 安全 网络安全
互联网协议知多少 | 周末学习
在解释这个问题前,我们来了解一下,什么是网络通信,没有网络通信,这个协议都没得玩了
|
运维 网络协议 网络架构
网络通信原理系统的认知(NEBASE第十四课)(一)
网络通信原理系统的认知(NEBASE第十四课)(一)
167 0
|
存储 缓存 NoSQL
新鲜出炉java后端高频面经总结-持续更新中(万字长文,助君青云)(下)
新鲜出炉java后端高频面经总结-持续更新中(万字长文,助君青云)(下)
325 0
新鲜出炉java后端高频面经总结-持续更新中(万字长文,助君青云)(下)
|
消息中间件 存储 缓存
【百面成神】消息中间件基础7问,你能撑到第几问
【百面成神】消息中间件基础7问,你能撑到第几问
|
存储 传感器 网络协议
宽带接入网络的形式(软考网工知识点总结)
宽带接入网络的形式(软考网工知识点总结)
577 0