专业技能篇---计算机网络

news2024/11/22 23:38:41

文章目录

  • 前言
  • 计算机网络基础
    • 一、网络分层模型
  • HTTP
    • 一、从输入URL到页面显示发生了什么?
    • 二、Http的状态码有哪些?
    • 三、 HTTP与HTTPS有什么区别?
    • 四、URI 和 URL 的区别是什么?
    • 五、Cookie和Session有什么区别?
    • 六、GET与POST
  • WebSocket
    • 一、什么是 WebSocket?
  • Ping
    • 一、PING命令的作用是什么?
  • DNS
    • 一、DNS的作用是?
  • TCP与UDP
    • 一、TCP与UDP的区别?
    • 二、什么时候选择 TCP,什么时候选 UDP?
    • 三、TCP 三次握手和四次挥手(非常重要)
    • 四、全连接和半连接
    • 五、为什么要三次握手?
    • 六、TCP四次挥手?
    • 七、TCP如何保证传输的可靠性?
  • IP
    • 一、IP 协议的作用是什么?
    • 二、什么是 IP 地址?IP 寻址如何工作?
  • ARP(地址解析协议)
    • 一、什么是 Mac 地址?
    • 二、ARP 协议解决了什么问题?


前言

主要强化计算机基础中的计算机网络,本篇主要深入理解计算机网络的重点面试题


计算机网络基础

一、网络分层模型

首先是osi七层模型,分别是物数网传会表应。OSI七层模型是一种理想模型,把网络通信过程分为七层。

  • 物理层主要负责物理介质上的传输。
  • 数据链路层负责同一网络之间的可靠数据传输,包括帧的封装、传输、确认和错误检测与纠正。
  • 网络层负责数据包的路由与转发。
  • 传输层负责提供端到端的传输服务,确保数据的完整性和可靠传输。
  • 会话层负责管理控制应用程序之间的会话。
  • 表示层负责数据格式化和转换,确保不同系统之间的数据能够被正确理解。
  • 应用层负责提供直接面向用户的网络服务和应用程序的接口。

在这里插入图片描述

现在基本都用的是TCP/IP四层模型,该模型简化了OSI七层模型。由应用层、传输层、网络层、网络接口层组成。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

HTTP

一、从输入URL到页面显示发生了什么?

在这里插入图片描述

  1. 在浏览器中输入指定网页的 URL。
  2. 浏览器通过 DNS 协议,获取域名对应的 IP 地址。
  3. 浏览器根据 IP 地址和端口号,向目标服务器发起一个 TCP 连接请求。
  4. 浏览器在 TCP 连接上,向服务器发送一个 HTTP 请求报文,请求获取网页的内容。
  5. 服务器收到 HTTP 请求报文后,处理请求,并返回 HTTP 响应报文给浏览器。
  6. 浏览器收到 HTTP 响应报文后,解析响应体中的 HTML 代码,渲染网页的结构和样式,同时根据 HTML 中的其他资源的 URL(如图片、CSS、JS 等),再次发起 HTTP 请求,获取这些资源的内容,直到网页完全加载显示。
  7. 浏览器在不需要和服务器通信时,可以主动关闭 TCP 连接,或者等待服务器的关闭请求。

二、Http的状态码有哪些?

在这里插入图片描述
200 成功
400 参数不合法
401 需要认证
403 请求不合法
404 资源未找到

三、 HTTP与HTTPS有什么区别?

端口号不同、前缀不同、安全性和资源消耗不同、SEO(搜索引擎优化)。

四、URI 和 URL 的区别是什么?

URI是统一资源标志符,可以唯一标识一个资源。
URL是统一资源定位符,可以提供该资源的路径。

URI 的作用像身份证号一样,URL 的作用更像家庭住址一样。URL 是一种具体的 URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

五、Cookie和Session有什么区别?

Session的主要作用就是通过服务端记录用户的状态。因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

Cookie的主要作用在客户端记录用户状态。Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。相对来说 Session 安全性更高。如果使用 Cookie 的一些敏感信息不要写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

六、GET与POST

GET 和 POST 是 HTTP 协议中两种常用的请求方法。

语义(主要区别):GET 通常用于获取或查询资源,而 POST 通常用于创建或修改资源。

格式:GET 请求的参数通常放在 URL 中,形成查询字符串(querystring),而 POST 请求的参数通常放在请求体(body)中。

安全性:GET 请求和 POST 请求如果使用 HTTP 协议的话,那都不安全,因为 HTTP 协议本身是明文传输的,必须使用 HTTPS 协议来加密传输数据。另外,GET 请求相比 POST 请求更容易泄露敏感数据,因为 GET 请求的参数通常放在 URL 中。

WebSocket

一、什么是 WebSocket?

WebSocket是一种网络通讯协议,它允许在单个TCP连接上进行全双工通讯。这意味着客户端和服务器可以同时发送和接收数据,而不需要等待对方的响应。WebSocket 常用于需要实时通信的应用场景,比如在线游戏、股票交易、聊天应用等。

Ping

一、PING命令的作用是什么?

PING 命令是一种常用的网络诊断工具,经常用来测试网络中主机之间的连通性和网络延迟。

DNS

一、DNS的作用是?

DNS(Domain Name System)域名管理系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议。DNS 要解决的是域名和 IP 地址的映射问题。

TCP与UDP

一、TCP与UDP的区别?

在这里插入图片描述

  • 是否面向连接:UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
  • 是否是可靠传输:远地主机在收到 UDP 报文后,不需要给出任何确认,并且不保证数据不丢失,不保证是否顺序到达。TCP 提供可靠的传输服务,TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。
  • 是否有状态:这个和上面的“是否可靠传输”相对应。TCP 传输是有状态的,这个有状态说的是 TCP 会去记录自己发送消息的状态比如消息是否发送了、是否被接收了等等。为此 ,TCP 需要维持复杂的连接状态表。而 UDP 是无状态服务,简单来说就是不管发出去之后的事情了(这很渣男!)。
  • 传输效率:由于使用 TCP 进行传输的时候多了连接、确认、重传等机制,所以 TCP 的传输效率要比 UDP 低很多。
  • 传输形式:TCP 是面向字节流的,UDP 是面向报文的。

二、什么时候选择 TCP,什么时候选 UDP?

  • UDP一般用于即时通讯,比如:语音、 视频、直播等等。这些场景对传输数据的准确性要求不是特别高,比如你看视频即使少个一两帧,实际给人的感觉区别也不大。
  • TCP 用于对传输准确性要求特别高的场景,比如文件传输、发送和接收邮件、远程登录等等。

三、TCP 三次握手和四次挥手(非常重要)

建立一个 TCP 连接需要“三次握手”,缺一不可:

  • 一次握手:客户端发送带有 SYN(SEQ=x) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务端的确认;
  • 二次握手:服务端发送带有 SYN+ACK(SEQ=y,ACK=x+1) 标志的数据包 –> 客户端,然后服务端进入 SYN_RECV 状态;
  • 三次握手:客户端发送带有 ACK(ACK=y+1) 标志的数据包 –> 服务端,然后客户端和服务端都进入ESTABLISHED 状态,完成 TCP 三次握手。

四、全连接和半连接

  • 半连接队列(也称 SYN Queue):当服务端收到客户端的 SYN 请求时,此时双方还没有完全建立连接,它会把半连接状态的连接放在半连接队列。
  • 全连接队列(也称 Accept Queue):当服务端收到客户端对 ACK 响应时,意味着三次握手成功完成,服务端会将该连接从半连接队列移动到全连接队列。如果未收到客户端的 ACK 响应,会进行重传,重传的等待时间通常是指数增长的。如果重传次数超过系统规定的最大重传次数,系统将从半连接队列中删除该连接信息。

五、为什么要三次握手?

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

  • 第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
  • 第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
  • 第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常

六、TCP四次挥手?

TCP 是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了 TCP 连接。

举个例子:A 和 B 打电话,通话即将结束后。

  • 第一次挥手:A 说“我没啥要说的了”
  • 第二次挥手:B 回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话
  • 第三次挥手:于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”
  • 第四次挥手:A 回答“知道了”,这样通话才算结束。

七、TCP如何保证传输的可靠性?

  • 数据包编号:TCP给每个数据包分配一个序列号,这样接收方就可以按正确的顺序重新组装数据。
  • 确认应答(ACK):接收方收到数据包后会发送一个确认应答给发送方,表明数据包已成功接收。
  • 超时重传:如果发送方在一定时间内没有收到确认应答,它会重新发送数据包。
  • 流量控制:TCP使用滑动窗口机制来控制发送速率,防止接收方被大量数据淹没。
  • 拥塞控制:TCP通过检测网络拥塞并相应地调整数据传输速率来减少丢包。
  • 数据校验:TCP使用校验和来检测数据在传输过程中是否出现错误。

IP

一、IP 协议的作用是什么?

IP(Internet Protocol,网际协议) 是 TCP/IP 协议中最重要的协议之一,属于网络层的协议,主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。目前 IP 协议主要分为两种,一种是过去的 IPv4,另一种是较新的 IPv6,目前这两种协议都在使用,但后者已经被提议来取代前者。

二、什么是 IP 地址?IP 寻址如何工作?

每个连入互联网的设备或域(如计算机、服务器、路由器等)都被分配一个 IP 地址(Internet Protocol address),作为唯一标识符。

当网络设备发送 IP 数据包时,数据包中包含了 源 IP 地址 和 目的 IP 地址 。源 IP 地址用于标识数据包的发送方设备或域,而目的 IP 地址则用于标识数据包的接收方设备或域。这类似于一封邮件中同时包含了目的地地址和回邮地址。

网络设备根据目的 IP 地址来判断数据包的目的地,并将数据包转发到正确的目的地网络或子网络,从而实现了设备间的通信。

这种基于 IP 地址的寻址方式是互联网通信的基础,它允许数据包在不同的网络之间传递,从而实现了全球范围内的网络互联互通。IP 地址的唯一性和全局性保证了网络中的每个设备都可以通过其独特的 IP 地址进行标识和寻址。
在这里插入图片描述

ARP(地址解析协议)

一、什么是 Mac 地址?

MAC 地址的全称是 媒体访问控制地址(Media Access Control Address)。如果说,互联网中每一个资源都由 IP 地址唯一标识(IP 协议内容),那么一切网络设备都由 MAC 地址唯一标识。

可以理解为,MAC 地址是一个网络设备真正的身份证号,IP 地址只是一种不重复的定位方式(比如说住在某省某市某街道的张三,这种逻辑定位是 IP 地址,他的身份证号才是他的 MAC 地址),也可以理解为 MAC 地址是身份证号,IP 地址是邮政地址。MAC 地址也有一些别称,如 LAN 地址、物理地址、以太网地址等。

二、ARP 协议解决了什么问题?

ARP 协议,全称 地址解析协议(Address Resolution Protocol),它解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中,总是需要知道下一跳(物理上的下一个目的地)该去往何处,但 IP 地址属于逻辑地址,而 MAC 地址才是物理地址,ARP 协议解决了 IP 地址转 MAC 地址的一些问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1850580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于机器学习和深度学习的C-MAPSS涡扇发动机剩余寿命RUL预测(Python,Jupyter Notebook环境)

涡扇发动机全称为涡轮风扇发动机,是一种先进的空中引擎,由涡轮喷气发动机发展而来。涡扇发动机主要特点是首级压缩机的面积比涡轮喷气发动机大。同时,空气螺旋桨(扇)将部分吸入的空气从喷射引擎喷射出来,并…

尚品汇-(四)

(1)商品的基本知识 1.1基本信息—分类 一般情况可以分为两级或者三级。咱们的项目一共分为三级,即一级分类、二级分类、三级分类。 比如:家用电器是一级分类,电视是二级分类,那么超薄电视就是三级分类。…

一单1800,这个项目凭什么这么火?

AI变现营八期学员一单1800成功拿下,这还是开营不到一周的结果! AI代写这个项目为什么现在越来越火? 第一点原因就是因为AI的火爆,让传统代写行业变现效率增加了N倍,普通人可以入局,只要会调教AI就可以了&am…

Win11下安装VS2022失败的解决办法

前几天我把我的HP Z840的操作系统换成了Win11,在重装VS2022时遇到了麻烦,提示无法安装 Microsoft.VisualStudio.Devenv.Msi。 查看安装日志提示:Could not write value devenv.exe to key \SOFTWARE\Microsoft\Internet Explorer\Main\Featur…

基于JSP的交通事故档案管理系统

开头语:你好,我是计算机学长猫哥,如果你对系统有更多的期待或建议,欢迎随时联系我。 开发语言:Java 数据库:MySQL 技术:JSPJava 工具:ECLIPSE、Tomcat 系统展示 首页 管理员界…

基于YOLOv5的火灾检测系统的设计与实现

基于YOLOv5的火灾检测系统的设计与实现 概述系统架构主要组件代码结构功能描述YOLOv5检测器视频处理器主窗口 详细代码说明YOLOv5检测器类视频处理类主窗口类 使用说明环境配置运行程序操作步骤 检测示例图像检测视频检测实时检测 数据集介绍数据集获取数据集规模 YOLOv5模型介…

vscode中同一页面使用批量替换

在vscode中像word中那样批量替换 首先搜索要替换的内容快捷键是ctrlf 然后输入你要搜索的内容 第二个框中输入你要替换成的内容 点击全部替换,就可以了

Web应用和Tomcat的集成鉴权1-BasicAuthentication

作者:私语茶馆 1.Web应用与Tomcat的集成式鉴权 Web应用部署在Tomcat时,一般有三层鉴权: (1)操作系统鉴权 (2)Tomcat容器层鉴权 (3)应用层鉴权 操作系统层鉴权包括但不限于:Tomcat可以和Windows的域鉴权集成,这个适合企业级的统一管理。也可以在Tomcat和应用层独立…

高级算法入门必看—21个NPC问题及其证明

文章目录 前言一、布尔可满足性问题二、每子句至多3个变量的布尔可满足性问题(3-SAT)三、0-1整数规划(0-1 integer programming)四、Set packing(Set packing)五、最小顶点覆盖问题(Vertex cove…

计算机视觉 | 基于图像处理和边缘检测算法的黄豆计数实验

目录 一、实验原理二、实验步骤1. 图像读取与预处理2. 边缘检测3. 轮廓检测4. 标记轮廓序号 三、实验结果 Hi,大家好,我是半亩花海。 本实验旨在利用 Python 和 OpenCV 库,通过图像处理和边缘检测算法实现黄豆图像的自动识别和计数&#xff0…

港湾周评|高盛眼中的618增长

《港湾商业观察》李镭 年中最重要的购物节618终于尘埃落定了。2024年的618各大电商平台竞技情况如何?又有哪些新的亮点?都成为外界观察消费行为的参考指标。 根据京东618数据显示:累计成交额过10亿的品牌83个,超15万个中小商家销…

python watchdog 配置文件热更新

目录 一、Watchdog示例 二、aiohttp服务配置热更新 在同事的golang代码中学习到了config.json热更新的功能,这里自己也学习了一下python写web服务的时候怎么来实现配置的热更新。主要是利用Watchdog这个第三方python库,来监控文件系统的改变&#xff0…

谷歌主页归属地确认使用的什么接口?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

CPU飙升100%怎么办?字节跳动面试官告诉你答案!

小北说在前面 CPU占用率突然飙升是技术人员常遇到的一个棘手问题,它是一个与具体技术无关的普遍挑战。 这个问题可以很简单,也可以相当复杂。 有时候,只是一个死循环在作祟。 有时候,是死锁导致的。 有时候,代码中有…

【项目管理】项目管理表单(excel)

PM项目管理模板 甘特图 OKR周报 团队任务 工作总结

Aquila-Med LLM:开创性的全流程开源医疗语言模型

​论文链接:https://arxiv.org/pdf/2406.12182 开源链接:https://huggingface.co/BAAI/AquilaMed-RL http://open.flopsera.com/flopsera-open/details/AquilaMed_SFT http://open.flopsera.com/flopsera-open/details/AquilaMed_DPO 近年来&#xf…

Android设置页面Activity全屏(隐藏导航栏、状态栏)

3、代码中设置:在setContentView 之前调用 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 注意: 当有全面屏手机可以显示虚拟…

认识LogBack.xml

一、logback的三个主要模块 1.logback-core:提供基本的日志功能; 2.logback-classic:建立在logback-core之上,兼容SLF4和log4jAPI,提供一套强大的日志框架; 3.logback-access:允许通过servlet容…

BP神经网络的反向传播(Back Propagation)

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、什么是BP的反向传播1.1 什么是反向传播1.2 反向传播的意义 二、BP神经网络如何通过反向传播计算梯度三、BP梯度公式解读 BP神经网络更原始的名称是"多层线性感知机MLP",由于它在训练时…

Ubuntu22.04开机后发现IP地址变成127.0.0.1

开机就是这个样子 解决办法 ip地址可能被释放,需要重新设置成自动分配 sudo dhclient -v可能网卡未加托管 查看方式: nmcli n若是enable就是已被托管,若是disabled,说明网卡未被托管 解决办法: nmcli n on搞定