【面试系列】计算机网络常见面试题(一)(2)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【面试系列】计算机网络常见面试题(一)(2)

五、GET和POST的区别

💐


👨‍💻面试官: OK,我们接着向下聊,不用紧张。那么来说说GET和POST的区别吧


🙋‍♂️小宝:好的,让我整理一下思路!


首先我们需要知道什么是GET,是什么又是POST?


从GET先来:GET是一个常见的用来获取资源它只是获取、查询数据,不会修改服务器的数据,从这点来讲,它是安全的。


而POST:则是可以向服务器发送修改请求,进行数据的修改的。就是一个数据提交给服务器,数据一般都会放在body里。


GET:对于GET一般我们通过他来访问某个资源,然后服务器并响应回该资源。就比如我们打开csdn这个网站,我们开始就是一个get请求,然后服务器获得信息后响应资源,最后我们才能看到这整个完整的网页。

image.png



POST:对于POST而言我们发送请求一般是需要对服务器数据修改的。举一个例子: 一般的我们在评论区会经常评论,一般这种请求我们都会使用POST。因为POST会没有缓存,如果有本地缓存的话我们只是对本地的浏览器进行了一个修改,服务器并没有做什么,而且我们的评论也就只能我们自己能看见,其他用户是看不见的。也是就是说评论其实就没有进行一个更新,这样就会出现难以想象的场景!

image.png



OK,介绍了两者的概念,我们继续说一下两者的区别!


通过上面的介绍我们能大概的知道这些区别:


POST是有body,而GET是没有body的。(这个地方一般都是口头描述,有的文章也提到过get也可也有body的。)

GET请求一般不会改变服务器的数据,而POST则会修改服务器中的数据。

GET是可以缓存的,而POST是不可缓存的。

其实还有几个其他的区别:


GET与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET!

GET向URL添加数据是有限制的(URL最大长是2048个字符),而POST是没有限制的。

GET 和 POST 只是 HTTP 协议中两种请求方式(异曲同工),而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 GET 还是 POST,用的都是同一个传输层协议,所以在传输上,没有区别。

💐


👨‍💻面试官: 掌握非常不错的,那我们接着聊一下POST和GET两者方法都是安全和幂等的吗?


🙋‍♂️小宝:OK,首先我们需要先知道什么是幂等?


在HTTP协议里,所谓的安全是指请求方法不会破坏服务器上面的资源。

所谓幂等,意思是多次执行相同的操作,结果都是相同的。

那么很明显GET方法就是安全且幂等的,因为它是只读操作,无论操作多少次,服务器上的数据都是安全的,且每次结果都是相同的。


POST因为是新增或提交数据的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以是不幂等的。


六、HTTP和HTTPS的区别?

💐


👨‍💻面试官: 那我们来来个比较基础的问题,知道HTTP和HTTPS两者间的区别吗?


🙋‍♂️小宝:知道的面试官。


首先HTTP协议是运行在TCP之上且为明文传输。而且客户端和服务器都没法验证对方身份。


则HTTPS则是在SSL(Secure Socket Layer)包裹下的HTTP协议,运行在SSL上面,而SSL运行在TCP上面。是添加了加密和认证机制的HTTP。


且二者的区别在于:


端口不同:HTTP端口号一般是 80,HTTPS端口号一般是 443。

消耗的资源不同:HTTPS因为是需要加密和解密的,所以一般消耗的CPU资源是大于HTTP。

💐


👨‍💻面试官:HTTPS解决了HTTP的哪些问题?


🙋‍♂️小宝:由于HTTP是明文传输,所以安全上面存在一下三个风险:


窃听

篡改

冒充

而HTTPS可以很好的解决上述描述的问题:


信息加密

效验机制

身份证书

七、计算机网络模型

💐


👨‍💻面试官:网络模型知道有哪几个吗?


🙋‍♂️小宝:计算机网络体模型的原理体系结构和OSI和TCP(具体的层次我们可以看下图哦!)。

image.png



💐


👨‍💻面试官:那知道OSI和TCP之间的区别吗?


🙋‍♂️小宝:知道的。


TCP/IP与OSI都是为了使网络中的两台计算机能够互相连接并实现通信与回应,但他们最大的不同在于,OSI 是一个理论上的网络通信模型,而TCP/IP则是实际上的网络通信标准。


OSI补充:


物理层: 激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。

数据链路层:数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。


网络层: 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能。


传输层: 第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。


会话层: 会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。


表示层: 表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。


应用层: 为操作系统或网络应用程序提供访问网络服务的接口。


八、网络编程协议

💐


👨‍💻面试官:了解网络编程协议吗?客户端发送给服务器的请求,怎么确定具体的协议?


🙋‍♂️小宝: 了解,客户端发送给服务器端的请求,可以根据统一资源定位系统(uniform resource locator,URL)来确定具体使用的协议。


一个完整的URL包括–协议部分、网址、文件地址部分。协议部分以//为分隔符,在interner中,我们可以使用多种协议:


HTTP——HyperText Transfer Protocol(超文本传输协议)


FTP——File Transfer Protocol(文件传输协议)


Gopher——The Internet Gopher Protocol(网际Gopher协议)


File——本地文件传输协议


HTTPS——安全套接字层超文本传输协议(http的安全版)


例如百度网址:http://baidu.com,可以看出使用的是http协议。


九、TCP/IP协议

💐


👨‍💻面试官:什么是 TCP/IP协议?


🙋‍♂️小宝:TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。


💐


👨‍💻面试官:TCP/IP协议组成?


🙋‍♂️小宝:TCP/IP由 **应用层、传输层、网际层、网络接口层(链路层)**组成。


具体介绍:


应用层:其是 TCP/IP协议的第一层,目的是为了服务应用进程。

传输层: 作为 TCP/IP协议的第二层,且在 运输层中,起到了中流砥柱的作用。

网际层: 作为 TCP/IP的第三层,可以进行网络连接的建立终止和对IP地址的寻找。

链路层: 作为 TCP/IP的第四层,既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

💐


👨‍💻面试官:TCP/IP协议特点是什么呢?


🙋‍♂️小宝:TCP/IP有一下几个特点:


协议标准开放、免费提供用户使用,并且独立于特定的 计算机硬件和 操作系统。

可以运行在 广域网,但更合适 互联网。

网络地址 统一分配,且网络中每一台设备都具有 唯一的地址。

高层协议标准话,可以提供多种多样的可靠网络服务。

十、HTTP请求的基本流程

💐


👨‍💻面试官:说一下 HTTP的请求基本流程吧。


🙋‍♂️小宝:首先是这样一个流程:


DNS域名解析—》发起 TCP的三次握手—》建立 TCP连接发起 HTTP请求—》服务器响应 HTTP请求,浏览器得到 html代码—》浏览器解析 html,并请求 html中的一些静态资源—》最后浏览器渲染前端页面给用户。


例子:


1、输入一个www.baidu.com 网址。


2、通过 DNS来解析该网址的 IP地址。


3、浏览器与服务器建立 TCP 连接(默认端口号:80)。


4、浏览器发送 HTTP请求,请求网站首页。


5、浏览器得到 html代码。


6、TCP连接释放。


7、最终浏览器通过对 HTML的解析,以 Web的形式展示给用户。


十一、介绍一下TCP三次握手

💐


👨‍💻面试官:那来聊一聊 TCP的三次握手吧。


🙋‍♂️小宝:


来通过下图进行对 TCP握手的三次分析。

image.png



漫画流程:


image.png

image.png



注:本漫画来源


流程:


1、服务端新建套接字,绑定地址信息后开始监听,进入LISTEN状态。客户端新建套接字绑定地址信息后调用connect,发送连接请求SYN,并进入SYN_SENT状态,等待服务器的确认。


2、服务端一旦监听到连接请求,就会将连接放入内核等待队列中,并向客户端发送SYN和确认报文段ACK,进入SYN_RECD状态。


3、客户端收到SYN+ACK报文后向服务端发送确认报文段ACK,并进入ESTABLISHED状态,开始读写数据。服务端一旦收到客户端的确认报文,就进入ESTABLISHED状态,就可以进行读写数据了


💐


👨‍💻面试官:为什么握手是三次,而不是两次或者四次呢?


🙋‍♂️小宝:两次不安全,四次没必要。


首先来说一下 两次 的一些弊端。


客户端首先向服务器发送一个连接请求,但是可能这个连接请求走了远路,等了很长时间,服务器都没有收到,那么客户端可能会再次发送,此时服务器端收到并且回复SYN、ACK;在这个时候最先发送的那个连接请求到达服务器,那么服务器会回复一个SYN,ACK;但是客户端表示自己已经收到确认了,并不搭理这个回复,那么服务器可能陷入等待,如果这种情况多了,那么会导致服务器瘫痪,所以要发送第三个确认。


漫画解释:


情况一:

image.png



情况二:


image.png


🙋‍♂️小宝:


OK,我们再来说说为什么不是四次握手。


因为三次握手后,客户端和服务器至少可以确认之前的通信情况,但无法确认之后的情况。 所以如果四次还是五次或是更多次都是徒劳的。


💐


👨‍💻面试官:说的挺深呀,非常不错的,那么再来聊聊3次握手可以携带数据吗?


🙋‍♂️小宝:在三次握手中是 第一次和第二次是不能携带数据的,第三次握手是可以携带数据的。


假设第一次可以携带数据,如果有人恶意攻击服务器,每次都在第一次握手中的SYN报文放入大量数据,重复发送大量SYN报文,此时服务器会花费大量内存空间来缓冲这些报文,服务器就更容易被攻击了


💐


👨‍💻面试官:那如果三次握手失败服务器会怎么处理呢?


🙋‍♂️小宝:首先我们需要知道 三次握手失败的原因:


1、服务器没有收到 SYN。

2、服务器回复SYN 和ACK后长时间没有收到ACK相应。

服务器的处理方式:


服务器超时后就会发送RST重置连接报文,释放资源


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
算法 Java 调度
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
61 0
|
1月前
|
缓存 网络协议 算法
这些年背过的面试题——网络和操作系统基础篇
本文是技术人面试系列网络和操作系统基础篇,面试中关于网络和操作系统基础都需要了解哪些内容?一文带你详细了解,欢迎收藏!
|
1月前
|
网络协议 网络架构
OSPF邻居关系建立失败?揭秘网络工程师面试中最常见的难题,这些关键步骤你掌握了吗?网络配置的陷阱就在这里!
【8月更文挑战第19天】OSPF是网络工程中确保数据高效传输的关键协议。但常遇难题:路由器间无法建立OSPF邻居关系,影响网络稳定并成为面试热点。解决此问题需检查网络连通性(如使用`ping`),确认OSPF区域配置一致(通过`show running-config`),校准Hello与Dead计时器(配置`hello`和`dead`命令),及核查IP地址和子网掩码正确无误(使用`ip address`)。系统排查上述因素可确保OSPF稳定运行。
55 2
|
1月前
|
机器学习/深度学习
【机器学习】面试题:LSTM长短期记忆网络的理解?LSTM是怎么解决梯度消失的问题的?还有哪些其它的解决梯度消失或梯度爆炸的方法?
长短时记忆网络(LSTM)的基本概念、解决梯度消失问题的机制,以及介绍了包括梯度裁剪、改变激活函数、残差结构和Batch Normalization在内的其他方法来解决梯度消失或梯度爆炸问题。
47 2
|
3月前
|
缓存 网络协议 安全
Android网络面试题之Http基础和Http1.0的特点
**HTTP基础:GET和POST关键差异在于参数传递方式(GET在URL,POST在请求体),安全性(POST更安全),数据大小限制(POST无限制,GET有限制),速度(GET较快)及用途(GET用于获取,POST用于提交)。面试中常强调POST的安全性、数据量、数据类型支持及速度。HTTP 1.0引入了POST和HEAD方法,支持多种数据格式和缓存,但每个请求需新建TCP连接。**
40 5
|
3月前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
48 2
|
3月前
|
缓存 网络协议 Android开发
Android网络面试题之Http1.1和Http2.0
HTTP/1.1 引入持久连接和管道机制提升效率,支持分块传输编码和更多请求方式如PUT、PATCH。Host字段指定服务器域名,RANGE用于断点续传。HTTP/2变为二进制协议,实现多工处理,头信息压缩和服务器推送,减少延迟并优化资源加载。HTTP不断发展,从早期的简单传输到后来的高效交互。
44 0
Android网络面试题之Http1.1和Http2.0
|
3月前
|
存储 设计模式 Java
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
|
2月前
|
存储 安全 Java
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
24 0
|
2月前
|
存储 并行计算 安全
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
51 0