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学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单主模式和多主模式切换

1 组复制模式切换注意点 组复制有两种运行模式,一种是单主模式,一种是多主模式。这个模式是在整个组中设置的,由 group_replication_single_primary_mode 这个系统变量指定,而且在所有成员上必须保持一致。ON 表示单主模式&#…

OpenAI Sora视频生成机制:时空补丁

AI如何将静态图像转化为动态、逼真的视频?OpenAI 的 Sora 通过时空补丁(spacetime patches)的创新使用给出了答案。 独特的视频生成方法 在生成模型的世界中,我们看到了从 GAN 到自回归和扩散模型的许多方法,它们都有…

基于结点电压法的配电网状态估计算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 结点电压法的基本原理 4.2 结点电压法在配电网状态估计中的应用 5.完整程序 1.程序功能描述 基于结点电压法的配电网状态估计算法.对配电网实施有效控制和操作的前提是实时数据库中数据…

在职阿里6年,一个28岁女软件测试工程师的心声

简单的先说一下,坐标杭州,16届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的有4家&am…

Swift 5.9 新 @Observable 对象在 SwiftUI 使用中的陷阱与解决

概览 在 Swift 5.9 中,苹果为我们带来了全新的可观察框架 Observation,它是观察者开发模式在 Swift 中的一个全新实现。 除了自身本领过硬以外,Observation 框架和 SwiftUI 搭配起来也能相得益彰,事倍功半。不过 Observable 对象…

10M上下文,仅靠提示就掌握一门语言,Google Gemini 1.5被OpenAI抢头条是真冤

这两天,几乎整个AI圈的目光都被OpenAI发布Sora模型的新闻吸引了去。其实还有件事也值得关注,那就是Google继上周官宣Gemini 1.0 Ultra 后,火速推出下一代人工智能模型Gemini 1.5。 公司首席执行官 Sundar Pichai携首席科学家Jeff Dean等众高…

在网络死磕5-10年的人,最后都怎么样了?

你们好,我是老杨。 此时此刻,如果你仍然在一家公司坚强的干着活,你已经打败了80%的职场朋友了。 现如今,从一毕业就做同一个行业超过5年的人,已经少之又少,更别说同一家公司干超过五年了。 这对别的行业…

redis 值中文显示乱码

问题: 解决办法: exit退出 进入时添加 --raw参数

【C++初阶】新手值得一做vector的oj题

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

解决updatexml和extractvalue查询显示不全

报错注入是一种常见的SQL 注入方式,通过注入代码,触发数据库的错误响应,并从错误信息中获取有用的信息。 updatexml和extractvalue updatexml和extractvalue 是常用的两个报错注入函数 http://localhost/sqli/Less-5/?id1%27and%20updat…

解锁Spring Boot中的设计模式—04.桥接模式:探索【桥接模式】的奥秘与应用实践!

桥接模式 桥接模式也称为桥梁模式、接口模式或者柄体(Handle and Body)模式,是将抽象部分与他的具体实现部分分离,使它们都可以独立地变化,通过组合的方式建立两个类之间的联系,而不是继承。 桥接模式是一种…

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

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

数据结构——单链表专题

目录 1. 链表的概念及结构2. 实现单链表初始化尾插头插尾删头删查找在指定位置之前插入数据在指定位置之后插入数据删除指定位之前的节点删除指定位置之后pos节点销毁链表 3. 完整代码test.cSList.h 4. 链表的分类 1. 链表的概念及结构 在顺序表中存在一定的问题: …

15.一种坍缩式的简单——组合模式详解

当曾经的孩子们慢慢步入社会才知道,那年味渐淡的春节就像是疾驰在人生路上的暂停键。 它允许你在隆隆的鞭炮声中静下心来,瞻前顾后,怅然若失。 也允许你在寂静的街道上屏气凝神,倾听自己胸腔里的那团人声鼎沸。 孩子们会明白的&am…

库的操作【数据库】

目录 一、创建数据库 二、删除数据库 ​编辑 三、数据库编码问题 四、库的改查 查 1)查有哪些数据库: 2)使用某个数据库: 3)当前在哪个数据库: 4)有谁在使用 改alter 五、备份和恢复 …

Shiro-02-shiro 是什么?

序言 大家好,我是老马。 前面我们学习了 5 分钟入门 shiro 安全框架实战笔记,让大家对 shiro 有了一个最基本的认识。 shiro 还有其他优秀的特性,今天我们就一起来学习一下,为后续深入学习奠定基础。 Apache Shiro 是什么&…

2.18通过字符设备驱动分步注册过程实现LED驱动的编写,编写应用程序测试

应用程序&#xff1a; #include<stdlib.h> #include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<unistd.h> #include<string.h> #include<sys/ioctl.h> #include"myled.h&quo…

LabVIEW智能家居控制系统

LabVIEW智能家居控制系统 介绍了一个基于LabVIEW的智能家居控制系统的开发过程。该系统利用LabVIEW软件与硬件设备相结合&#xff0c;通过无线网络技术实现家居环境的实时监控与控制&#xff0c;提升居住舒适度和能源使用效率。 项目背景&#xff1a;随着科技的发展和生活水平…

vue-router 实现路由懒加载

在现代的Web开发中&#xff0c;前端技术的发展日新月异。在构建大规模单页应用&#xff08;Single Page Application&#xff09;时&#xff0c;路由管理是一个非常重要的环节。随着用户对网页速度和性能的要求越来越高&#xff0c;有效的路由管理能够显著提升用户体验。本篇博…

【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块)

一、本文介绍 本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级…