2024年Python最全【面试系列】计算机网络常见面试题(一)

  • 后续

前言


因博主最近在学习计算机网络和准备面试,所以想通过计算机网络的面经来进一步的来学习计算机网络同时也能通过面试题来查漏补缺!此篇文章只为记录和分享博主所整理的计网面试题,同时也希望能给大家带来一些帮助!


一、TCP和UDP的区别?


💐

👨‍💻面试官:

TCP和UDP的区别是什么?

🙋‍♂️小宝:

两者协议都是属于运输层协议,他们之间的区别包括:

  • TCP是面向连接的,UDP是无连接的。
  • TCP是可靠的,UDP是不可靠的。
  • TCP是面向字节流的,UDP是面向报文的。
  • TCP支持对点通信,UDP支持一对一、一对多、多对多的通信模式;
  • TCP有拥塞控制机制,UDP没有拥塞控制机制其适合媒体通信。
  • TCP首部开销(20个字节)UDP(8个)的首个开销时间大;

二、是什么是HTTP?并详细介绍!


💐

👨‍💻面试官: 是什么HTTP?我想听听你的详细介绍!

🙋‍♂️小宝:

HTTP: 是超文本传输协议,也就是HyperText Transfer Protocol。

首先我们先对这三个单词进行逐一分析:

  • HyperText:超文本。
  • Transfer:转移、运输。
  • Protocol:协议。

文本是什么?

一般我们认为txt文件就是一个文本文件对吧。

超文本呢?

我们能通过字面意思理解超越普通文本的文件

在电脑和互联网上面有哪些是超过普通文本的文件的?我们肯定都能知道的有音频、视频、图片等一些不是那么普通的文字文件!

运输是什么呢?

在一般正常的生活中我们经常会通过各种运输工具来进行对我们网购的快递进行运输。

在这里插入图片描述

而在互联网就是一个信息等的运输。

例如我们在上网时,A客户端需要对B服务器进行一个请求,然后B得到请求后B服务器会做相应的应答,把一些我们请求的资源发送给客户端A,则A能够在浏览器上面查看到自己想要的资源!

在这里插入图片描述

协议又是什么呢?

我们还是通过生活中的例子来举例。比如我们在生活中租房、工作等都是需要和他人签订一个合同—也就是说我们正常的协议

而在互联网上,如果我们需要上网则也是需要遵守一定的互联网协议才能上网冲浪!而HTTP是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理方式。

好了,经过上面的介绍我们就已经可以大概的理解了超文本传输协议的具体意义—HTTP是一个在计算机世界里面专门在两点之间传输文字。音频。视频。图片等超文本数据的约定和规范!

三、HTTP常见的状态码


💐

👨‍💻面试官: 请你说说HTTP中比较常见的状态码吧

🙋‍♂️小宝:在HTTP中的状态码可以分为5种:

  • 1xx:提示信息,表示目前协议处理的中间状态,还需要后续的操作;
  • 2xx:是经常遇见的一种状态码,则表示请求成功,报文已经收到并正确的处理。
**状态码有:**
*   `200`:表示请求成功!
*   `204`:同上。但是响应头没有`body`数据。
*   `206`:返回部分`body`数据。
  • 3xx:表示请求的重定向,资源位置发生变动,需要客户端重新发送请求;
**状态码有**:
*   `301`:永久的重定向,需要访问新的`URL`。
*   `302`:临时重定向。
*   `304`:缓存重定向。
  • 4xx:也是在写项目种比较常见的一种状态码。大体表示客户端错误,请求报文错误,服务器无法处理。则404就是最常见的服务器找不到资源。
**状态码有**
*   `400`:表示客户端请求的报文有错误。
*   `403`:表示服务器禁止访问资源,并不是客户端的错误。
*   `404`:服务器找不到资源。
  • 5xx:一般表示服务器发生错误,服务器在处理请求时内部发生了错误。
**状态码有:**
*   `500`:只是有一个大概的错误。
*   `501`:网页还没正式公开。
*   `502`:后端服务器出现问题。
*   `503`:网络繁忙。

四、HTTP常见的字段有哪些?


💐

👨‍💻面试官: 看你上面的这么熟练,咱们来聊聊http常见的字段吧!

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

首先最常见的字段Host:是客户端发送请求时,用来指定服务器的域名的。当有了Host字段后我们能访问同一台服务器的不同网站。而不会去随机访问其他的服务器。

通过一个例子:我们在一个100人的班级里,我们需要找到一个不认识的人。我们可以通过其名字来找到该人。

例如:需要找一个姓名为:小宝的同学,我们只需要在班级里喊一声小宝后就会得到本人的答复。

姓名:Host,小宝:网站名称

在这里插入图片描述

还有Content-Length字段

服务器在返回时,会有Content-Length字段,表明本次回应的数据长度。

例如: Content-Length : 1000;

则表示服务器返回数据长度时1000个字节

💐

👨‍💻面试官: 还有吗?

🙋‍♂️小宝:还有的面试官!

还有Connection字段。一般Connection字段用于客户端对服务器使用TCP持久链接,以便其他请求的复用。在HTTP/1.1版本的默认连接都是持久连接,但是为了兼容老版本的HTTP,需要指定Connection首部字段的值为Keep-Alive

例如:Connection:keep-Alive,这样一个复用的TCP连接就建立了,直到客户端或服务器主动关闭连接。

Connent-Type字段

在请求中 (如POST 或 PUT),Content-Type字段用于客户端告诉服务器实际发送的数据类型

格式

Content-Type:type/subtype ;parameter

type:主类型,任意的字符串,如text,如果是_号代表所有;_

subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开;

parameter:可选参数,如charset,boundary等。

例如:

Content-Type: text/html;

Content-Type: application/json;charset:utf-8;

Connect-Encoding字段

则表示服务器返回的数据解压方式。

一般客户端会使用Accept-Encoding来告诉服务器自己能接收的压缩数据格式。


五、GET和POST的区别


💐

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

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

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

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

  • POST是有body,而GET是没有body的。(这个地方一般都是口头描述,有的文章也提到过get也可也有body的。)
  • GET请求一般不会改变服务器的数据,而POST则会修改服务器中的数据。
  • GET是可以缓存的,而POST是不可缓存的。

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

  • GETPOST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET
  • GETURL添加数据是有限制的(URL最大长是2048个字符),而POST是没有限制的。
  • GET 和 POST 只是 HTTP 协议中两种请求方式(异曲同工),而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 GET 还是 POST,用的都是同一个传输层协议,所以在传输上,没有区别。

💐

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

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

  • HTTP协议里,所谓的安全是指请求方法不会破坏服务器上面的资源。
  • 所谓幂等,意思是多次执行相同的操作,结果都是相同的。

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

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


六、HTTP和HTTPS的区别?


💐

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

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

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

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

且二者的区别在于:

  • 端口不同:HTTP端口号一般是 80HTTPS端口号一般是 443
  • 消耗的资源不同:HTTPS因为是需要加密和解密的,所以一般消耗的CPU资源是大于HTTP

💐

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

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

  • 窃听
  • 篡改
  • 冒充

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

  • 信息加密
  • 效验机制
  • 身份证书

七、计算机网络模型


💐

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

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

在这里插入图片描述

💐

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

🙋‍♂️小宝:知道的。

TCP/IPOSI都是为了使网络中的两台计算机能够互相连接并实现通信与回应,但他们最大的不同在于,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协议不仅仅指的是TCPIP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值