Java面试第一站:计算机网络基础知识

该系列会持续更新,关注我,第一时间获取我的最新动态哟

Java面试中,经常会问到跟计算机网络知识相关的考点,有的小伙伴不是很明白。考察网络知识有什么意义?

因为编程的时候,多数的情况下是不用我们来编写 socket 这些东西的。并且底层服务已经很好的处理了数据包的解析,所以网络方面的东西貌似是不需要我们关心的。实际上,这就类似于框架底层的一些东西,平时能满足我们的需求的时候呢,我们并不会去关心他们。但真要出了问题,比如说性能没办法满足我们的需求了,这个时候如果不熟悉底层的话。我们往往束手无策,此种情况同样适用于网络。比如说你没办法判定此时程序为什么会变慢。是网络的原因,还是别的原因?数据包有没有丢失?为什么会造成大量的 lose weight?为什么会出现大量的连接,丢失等等,因此还是很有必要学习一些网络知识,以备不时之需的。网络知识的考察点通常相对固定些,更偏向于理论,所以本文主要以理论知识为主。希望大家能坚持看完,并且将其攻克。

为了做一下网络知识的系统性的复习,以及为解题做准备,我们首先来简要的了解一下网络协议。当前,市面上分别存在四层,五层,七层协议,而国际标准化组织。ISO 制定的 OSI 七层协议模型 是业界提出来的概念型框架。因此,咱们先来了解一下开放系统互联参考模型及 OSI 七层协议模型
OSI七层模型
如图便是我们的七层协议,它是由七层来组成的,我们自底而上去看一下。工程学科都是不断迭代的过程,因此七层协议大致是这么进化来的。我们首先要解决两台物理机之间的通信需求,具体就是机器 a,向机器 cb 发送比特流。机器 b 呢,能收到这些比特流,这便是物理层要做的事情,物理层主要定义了物理设备的标准。如网线的类型,光纤的接口类型,各种传输介质的传输速率等。它的主要作用是传输比特流及我们所谓的 0101这种二进制数据。将它们转化为电流强弱来进行传输,到达目的后,再转化为 010 的机器码。也就是我们常说的数模转换。模数转换这一层的数据叫做比特。网卡就是工作在这一层里面的。
在这里插入图片描述

第二层就是我们的数据链路层了,在传输比特流的过程中。会产生错传数据传输不完整的可能,因此数据链路层应运而生。数据链路层定义了如何格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据传输的可靠性。本层将比特数据组成了帧,其中交换机工作在这一层里。面对帧解码。并根据帧中包含的信息,把数据发送到正确的接收方。那随着网络节点的不断增加,点对点通信的时候是需要经过多个节点的,那么如何找到目标节点?如何选择最佳路径便成为了首要需求。此时,便有了网络层。

就是我们的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权,网络拥塞程度。服务质量以及可选路由的花费来决定从一个网络中节点 a 到另一个网络中节点 b 的最佳路径。由于网络层处理并智能指导数据传送,路由器连接网络隔断,所以路由器属于网络层。此层的数据我们称之为数据包。本层我们需要关注的协议呢,主要是 TCP\IP 协议里面的这个 IP 协议,那么随着网络通信需求的进一步扩大。通信过程中需要发送大量的数据,如海量文件传输的可能需要很长时间,而网络在通信的过程中会中断好多次,此时为了保证传输大量文件时的准确性,需要对发出去数据进行切分。切割为一个一个的段落及 segment 进行发送,那么其中一个段落丢失了该怎么办?要不要重传每个段落,要按照顺序到达吗?这个便是传输层需要考虑的问题了。

传输层解决了主机间的数据传输,数据间的传输可以是不同网络的,并且传输层解决了传输质量的问题。该层称之为 osi 模型中最重要的一层了。传输协议同时进行流量控制,或是基于接收方可接收数据的快慢程度,规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸,将较强的数据包进行强制分割。例如,以太坊无法接收大于 1500 字节的数据包。发送方节点的传输层将数据呢分割成较小的数据片,同时对每一数据片安排一序列号。以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程即称为排序。传输层中需要我们关注的协议有 tcp\ip协议中的 TCP 协议和 UDP 协议。现在我们已经保证给正确的计算机发送正确的封装,过后的信息了,但是用户级别的体验好不好?难道我每次都要去调用 TCP 去打包,然后调用 IP 协议去找路由自己去发?当然不行,所以我们要建立一个自动收发包,自动寻址的功能,于是发明了会话层。
在这里插入图片描述

会话层的作用就是建立和管理应用程序之间的通信。现在我能保证应用程序自动收发包和寻址了。但我要用 linux 给 WINDOWS 发包两个系统,语法不一致,就像安装包一样。EXE 是不能在 linux 上面去执行的。sell 在 WINDOWS 下也是不能直接运行的,于是需要表示成即 presentation layer。帮我们解决不同系统之间的通信语法的问题,再表示成数据将按照网络能理解的方案进行格式化。这种格式化也因所使用网络的类型不同而不同。此时,虽然发送方知道自己发送的是什么东西。转换成字节数组之后有多长,但接收方肯定不知道。所以应用层的网络协议诞生了,它规定发送方和接收方必须使用一个固定长度的消息头。消息头必须使用某种固定的组成。而且消息头里必须记录消息体的长度等一系列信息,以方便接收,方能够正确的解析发送方发送的数据。应用层旨在让你更方便的应用,从网络中接收到的数据,至于数据的传递。没有盖成,你也可以直接在两台电脑间开干,只不过传来传去就是一堆 1 和 0 组成的字节数组。该层需要我们重点去关注的是,与之相对应的 tcp\ip 协议中的 HTTP 协议以上就是关于 osi 各层次的划分。
在这里插入图片描述

那从应用层开始呢,都会对要传输的数据头部进行处理,加上本层的一些信息。最终由物理层通过以太网,电缆等介质将数据解析成比特流,在网络中传输。数据传递到目标地址。并自底而上的将先前对应层的头部给解析分离出来,这个就是我们的网络数据处理的整个流程。

OSI 是一个定义良好的协议规范集,并有许多可选部分完成类似的任务。它定义了开放系统的层次结构,层次之间的相互关系以及课程所包括的可能的任务。是作为一个框架来协调和组织各层所提供的服务。但是 osi 参考模型并没有提供一个可以实现的方法,而是描述了一些概念。用来协调进程间通信标准的制定及 osi 参考模型并不是一个标准,而是一个在制定标准时所使用的概念性框架。事实的标准是TCP\IP 四层架构参考模型 TCP\IP 参考模型是首先由阿帕奈所使用的网络体系结构。后来,该结构被美国国防部用来作为计算机网络的标准。由于领头大哥的推动,市面上绝大多数厂商也以该标准为主,用以商用。虽然 tcp\ip 协议呢,并不完全符合 osi 的七层参考模型,但我们依然可以理解为它是 osi 的一种实现。

接下来咱们来讲讲这个主流的协议,从字面上讲,有人可能会认为 TCP\IP是指 TCPIP这两种协议实际生活当中有时也确实就是指这两种协议。然而,在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或者 ICMP 等等。TCP 或者 udp tell net 或者 FTP 这些等等以及 http 呢都属于 tcp\ip 协议。它们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP\ IP一词呢,泛指这些协议。因此有时也称 TCP\IP 为网际协议群。
在这里插入图片描述

从图里我们得知呢。tcpip 协议呢,与 osi 在分层模块上稍有区别。

TCP\IP 的应用层呢?可以理解为,约等于 osi 中的应用层,表示层和绘画层这三层的组合。同时 osi 的数据链路层以及物理层呢,在 TCP\IP 中被归并为链路层。osi 模型注重通信协议必要的功能是什么。而 TCP\IP 则更强调在计算机上实现协议应该开发哪种程序。从另外一张图里。在数据传输的过程中,我们可以看到和 osi 一样, TCP\IP 的每个分层中呢,都会对所发送的数据呢,附加一个头部。在这个首部中,包含了该层必要的信息。如发送的目标,地址以及协议相关的信息,通常为协议提供的信息为报头的首部所要发送的内容、为数据从下一层角度上看呢?数据被传送到接收端之后再层层解套出来。

本文已收录至我的个人网站:程序员波特,主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能技术应用笔记(二):OpenAI SORA文生视频模型技术报告全文中英对照 (GPT4翻译+人工润色)

目录 Video generation models as world simulators(视频生成模型作为世界模拟器) Turning visual data into patches (将视觉数据转换为图像块) Video compression network (视频压缩网络) Spacetim…

WouoUI-PageVersion 一个用于快速构建具有丝滑OLED_UI动画的项目

WouoUI-PageVersion 写在前面 简介&致谢 Air001的TestUI例子的b站的演示视频 Air001的LittleClock例子的b站演示视频: https://www.bilibili.com/video/BV1J6421g7H1/ Stm32的TestUI例子的b站演示视频: https://www.bilibili.com/video/BV1mS421P7CZ/ 所有演示的工程文…

MySQL数据库基础(九):SQL约束

文章目录 SQL约束 一、主键约束 二、非空约束 三、唯一约束 四、默认值约束 五、外键约束(了解) 六、总结 SQL约束 一、主键约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有…

网络编程_TCP通信综合练习:

1 //client:: public class Client {public static void main(String[] args) throws IOException {//多次发送数据//创建socket对象,填写服务器的ip以及端口Socket snew Socket("127.0.0.1",10000);//获取输出流OutputStream op s.getOutput…

云手机受欢迎背后的原因及未来展望

随着办公模式的演变,云手机的热潮迅速兴起。在各种办公领域,云手机正展现出卓越的实际应用效果。近年来,跨境电商行业迎来了蓬勃发展,其与国内电商的差异不仅体现在整体环境上,更在具体的操作层面呈现出独特之处。海外…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(二)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

AES加密中的CBC和ECB

目录 1.说明 2.ECB模式(base64) 3.CBC模式 4.总结 1.说明 AES是常见的对称加密算法,加密和解密使用相同的密钥,流程如下: 主要概念如下: ①明文 ②密钥 用来加密明文的密码,在对称加密算…

OpenCV 入门讲解

OpenCV 入门讲解 OpenCV(Open Source Computer Vision Library) 是一个开源的计算机视觉库,它提供了许多高效实现计算机视觉算法的函数,从基本的滤波到高级的物体检测都有涵盖。OpenCV 使用 C/C 开发,同时也提供了 Pyt…

【HarmonyOS】鸿蒙开发之Button组件——第3.4章

按钮类型 Capsule(默认值):胶囊类型 Button("默认样式").height(40)//高度.width(90)//宽度.backgroundColor(#aabbcc)//背景颜色运行结果: Normal:矩形按钮,无圆角 Button({type:ButtonType.Normal}){Te…

Cesium 问题——加载 gltf 格式的模型之后太小,如何让相机视角拉近

文章目录 问题分析问题 刚加载的模型太小,如何拉近视角放大 分析 在这里有两种方式进行拉近视角, 一种是点击复位进行视角拉近一种是刚加载就直接拉近视角// 模型三加载 this.damModel = new Cesium.Entity({name: "gltf模型",position:</

js设计模式:单例模式

作用: 保证一个类只有一个实例,并且提供一个全局的访问位置。 可以用来实现全局的一些状态管理或者独一无二的数据 示例: class Wjt{constructor(name,idNumber,gender){this.name namethis.idNumber idNumberthis.gender gender}//可以直接使用Wjt调用的静态方法static …

java 培训班预定管理系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 培训班预定管理系统是一套完善的java web信息管理系统 采用serlvetdaobean&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xf…

【Jvm】性能调优(上)线上问题排查工具汇总

文章目录 一.互联网概念1.产品闭环和业务闭环2.软件设计中的上游和下游3.JDK运行时常量池 二.CPU相关概念1.查询CPU信息2.CPU利用率&#xff08;CPU utilization&#xff09;和 CPU负载&#xff08;CPU load&#xff09;2.1.如何理解CPU负载2.2.top命令查看CPU负载均值2.3.CPU负…

进程链信任-父进程欺骗

文章目录 前记普通权限的父进程欺骗ShllCode上线进程提权基础进程提权注入 前记 父进程欺骗作用&#xff1a; 进程链信任免杀进程提权 检测&#xff1a; etw 普通权限的父进程欺骗 #include<stdio.h> #include<windows.h> #include <TlHelp32.h>DWORD …

Matlab|基于支持向量机的电力短期负荷预测【最小二乘、标准粒子群、改进粒子群】

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序主要是对电力短期负荷进行预测&#xff0c;采用三种方法&#xff0c;分别是最小二乘支持向量机&#xff08;LSSVM&#xff09;、标准粒子群算法支持向量机和改进粒子群算法支持向量机三种方法对负荷进行…

代码随想录刷题笔记 DAY 29 | 非递减子序列 No.491 | 全排列 No.46 | 全排列 II No. 47

文章目录 Day 2901. 非递减子序列&#xff08;No. 491&#xff09;1.1 题目1.2 笔记1.3 代码 02. 全排列&#xff08;No. 46&#xff09;2.1 题目2.2 笔记2.3 代码 03. 全排列 II&#xff08;No. 47&#xff09;3.1 题目3.2 笔记3.3 代码 Day 29 01. 非递减子序列&#xff08;…

docker ubuntu tomcat 换源 安装软件

第一种办法参考docker中ubuntu容器更换apt源_ubuntu更改apt源 with dockerfile-CSDN博客 sed -i s/archive.ubuntu.com//mirrors.aliyun.com/g /etc/apt/sources.list sed -i s/security.ubuntu.com//mirrors.aliyun.com/g /etc/apt/sources.list apt update apt install vim…

- 工程实践 - 《QPS百万级的有状态服务实践》02 - 冷启动和热更新

本文属于专栏《构建工业级QPS百万级服务》 继续上篇《QPS百万级的有状态服务实践》01 - 存储选型实践。如图1架构&#xff0c;我们已经解决了数据生产的问题。 图1 但是我们的服务已经在运行了&#xff0c;并实时处理大量的请求&#xff0c;我们如何把内存中的数据版本更新呢。…

09_Java集合

一、Java集合框架概述 一方面&#xff0c; 面向对象语言对事物的体现都是以对象的形式&#xff0c;为了方便对多个对象的操作&#xff0c;就要对对象进行存储。另一方面&#xff0c;使用Array存储对象方面具有一些弊端&#xff0c;而Java 集合就像一种容器&#xff0c;可以动态…

模型超参数寻优

参考某篇QSAR的sci论文设置 根据上图&#xff0c;我设置我的XGBoost模型&#xff1a; # 定义要搜索的超参数的候选值 param_grid {model__learning_rate: [0.1, 0.01, 0.001], # 调整学习率model__n_estimators: [50, 100, 200, 300,400,500], # 调整树的数量model__max_de…