wordpress 显示字体,seo在线工具,成都手机网站建设哪家公司好,龙岩市人才网最新招聘信息该系列会持续更新#xff0c;关注我#xff0c;第一时间获取我的最新动态哟 Java面试中#xff0c;经常会问到跟计算机网络知识相关的考点#xff0c;有的小伙伴不是很明白。考察网络知识有什么意义#xff1f;
因为编程的时候#xff0c;多数的情况下是不用我们来编写 … 该系列会持续更新关注我第一时间获取我的最新动态哟 Java面试中经常会问到跟计算机网络知识相关的考点有的小伙伴不是很明白。考察网络知识有什么意义
因为编程的时候多数的情况下是不用我们来编写 socket 这些东西的。并且底层服务已经很好的处理了数据包的解析所以网络方面的东西貌似是不需要我们关心的。实际上这就类似于框架底层的一些东西平时能满足我们的需求的时候呢我们并不会去关心他们。但真要出了问题比如说性能没办法满足我们的需求了这个时候如果不熟悉底层的话。我们往往束手无策此种情况同样适用于网络。比如说你没办法判定此时程序为什么会变慢。是网络的原因还是别的原因数据包有没有丢失为什么会造成大量的 lose weight为什么会出现大量的连接丢失等等因此还是很有必要学习一些网络知识以备不时之需的。网络知识的考察点通常相对固定些更偏向于理论所以本文主要以理论知识为主。希望大家能坚持看完并且将其攻克。
为了做一下网络知识的系统性的复习以及为解题做准备我们首先来简要的了解一下网络协议。当前市面上分别存在四层五层七层协议而国际标准化组织。ISO 制定的 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是指 TCP 和IP这两种协议实际生活当中有时也确实就是指这两种协议。然而在很多情况下它只是利用 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学习路线、视频教程、简历模板和面试题等学习资源让想要学习的你不再迷茫。