【Java网络编程】OSI七层网络模型与TCP/IP协议簇

news/2024/5/20 16:24:20/文章来源:https://blog.csdn.net/xiaoli8748/article/details/137422309

1.1、OSI七层网络模型

OSI七层网络模型中,每层的功能如下:

  • 应用层:人与计算机网络交互的窗口。
  • 表示层:负责数据格式的封装,如加密、压缩、编解码等。
  • 会话层:建立、终止、管理不同端间的会话连接。
  • 传输层:提供端到端(两台机器)之间的传输机制,以及提供流量控制、出错效验。
  • 网络层:逻辑寻址,IP地址,在下两层的基础上向资源子网提供服务。
  • 数据链路层:负责建立和管理节点间的链路,将数据封装成帧,进行可靠传输。
  • 物理层:在介质媒体上传输比特流。

TCP/IP体系中,将原本OSI体系中的应用层、表示层、会话层合并为了应用层,将数据链路层和物理层合并为了数据链路层,因此TCP/IP体系中只存在四层结构。

注意点:在最初因为技术问题,因此数据传输必须建立在物理实体介质的基础之上,但如今无线电的电磁波技术也可以做到利用空气作为介质,从而达到传输数据的目的。

OSI分层体系中,上三层:应用层、表示层、会话层组成资源子网,下三层:网络层、数据链路层、物理层组成通信子网。

1.1.1、OSI模型的通信的封装与解析过程

   在网络通信中,通信双方都必须是对等的,并且双方都遵守相同协议的,这样才可通信。好比举个例子:

竹子想发微信信息给熊猫,喊熊猫出来玩,但双方之间的通信基础必须对等,也就是说,熊猫的手机上也必须要安装了微信,否则竹子无法通过微信与熊猫出来玩。
但如果竹子说的是英语,熊猫只能懂汉语,双方并未遵守相同的“协议”,那两者之间自然也无法进行通信。因此,通信的另一要素则是:通信双方都必须遵守相同的协议。

而在计算机网络中,当两台机器进行通信时,其过程主要包含数据的封装与解封:

如上图,左侧是发送端,右侧是接收端,当发送端的应用尝试传输一条数据时,数据会根据网络分层结构,从上至下依次封装,每层都对数据做一定的处理,最后在物理层转换为比特流(二进制数据),然后传输至接收端。
因为双方之间遵守的都是相同的协议体系(网络模型),因此接收端会首先接收到比特流数据,然后从下至上依次解封数据,最终在应用层还原数据,从而达到通信的目的。

1.2、TCP/IP协议簇

   TCP/IP应该是计算机网络中听的次数最多的词汇,但它并非单纯的指TCPIP两个协议,而是一组协议的代名词,指由许许多多的网络协议一同组成的“协议簇”,TCP/IP协议簇主要组成如下:

上面列出了一些TCP/IP协议簇中常用的一些协议,但整个协议簇是由大大小小上百个协议一同组成的(对于TCP/IP协议簇中的一些常用协议可参考:百度百科)。
在计算机网络体系中,每层都会存在多个协议,但一个协议只会隶属于一层。同时,协议也可以由软件、硬件两个维度来实现。

除开最常见的TCP/IP协议簇外,还有一些其他的协议组,如IPX/SPX、NetBEUI、AppleTalk等协议组。

1.2.1、通信协议的基本概念

   前面的叙述中,更偏向于“空中楼阁”般的理论概念,比较生涩难懂,接下来我们以实际的TCP/IP协议出发,再对计算机网络更进一步阐述。

   TCP/IP通信协议是最完整、使用最广泛的网络协议体系,它的魅力在于可使不同硬件结构,不同操作系统的计算机相互通信,通信协议中定义多方之间发送/接收的报文格式、顺序以及规则,其中语法定义了传输的报文格式,语义定义了报文传输规则,时序定义了报文传输顺序,计算机通信的本质就在于信息报文的相互交换

1.2.2、协议数据单元(PDU)

   计算机网络体系中,不同节点通信时交换的信息报文被称为协议数据单元(PDU)PDU主要由协议头信息+数据(SDU)组成,数据是指发送端需要传输给接收端的信息,而协议头信息中,则包含了完成传输所需的控制信息,如地址、长度、序号、分段标识、差错控制信息等。

   基于TCP/IP体系而言,PDU在不同层存在不同的称呼,如下图:

1.3、计算机网络体系中各层综述

   就目前而言,前面的阐述中已经将计算机网络中最常见的OSI、TCP/IP体系简单介绍明白了,但对于这些体系中,不同层的具体作用却并没有进行探讨。因此,接下来我们从自己设计一个计算机网络体系的角度出发,分别来探讨网络分层的必要性与每个分层的具体含义。

1.3.1、物理层

先来看最简单的通信模型:

如上图,两台电脑之间通物理媒体连接,互相传递信息,从而达到通信的目的。

在这种最简单的直连通信模型中,想要实现双方之间的通信,那应该考虑如下几个问题:

  • ①连接两台电脑之间的传输媒体可以采用哪些介质类型。
  • ②连接两台电脑时,两台电脑应该存在怎样的物理接口。
  • ③传输数据时,使用何种信号表达比特流中的01
  • ④双方之间通信时,不同的传输介质,数据传输的速度标准又该是多少。

对于如上问题,我们可以将其全部归纳到“物理层”来解决,在该层中定义标准规范。

简单来说,物理层主要任务是负责在介质上正确的传送比特流,并规定物理接口的各种特性和物理设备的标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。

1.3.2、数据链路层

但一般现在不会存在直连型网络,常用的计算机网络都是由多台机器共同组成的,如下:

在这种总线连接的通信模型中,当一台主机,比如AD发送数据时,数据会通过总线传输至总线上的所有主机,此时D如何知道该条数据是发给自己的呢?其他主机又如何区分数据不是发给自己的呢?因此,对于这种多台机器组成的网络模型而言,我们也需要解决一系列问题,如:

  • ①编址问题:如何区分总线上的各主机(如MAC地址),在发送数据时,带上目标主机的地址,其他主机根据数据中的目标地址确认是否是发给自己的。
  • ②当其他主机收到传递的数据后,如何从比特流中正确区分出数据和目的地址。
  • ③当同时多台主机共用主线时,如何协调各主机竞争总线,避免数据发生碰撞。

对于上述中的这些问题,可以全部划归到链路层处理。

因此可以得出,数据链路层主要任务是实现数据在不可靠的物理线路上的可靠传递,负责提供物理地址寻址、数据的成帧、流量控制、差错控制等功能,确保数据的可靠传输

PS:对于这种总线型网络早已淘汰,目前常用的则是以太网的交换式通信模型:

1.3.3、网络层

到目前为止,解决了物理层及链路层中的问题后,就可以实现数据在一个局域网络中的传输了。但实际每天都接触的因特网是由无数个小网络和路由器互连组成的,如下:

因此只解决前面所叙述的问题还是无法在庞大的计算机网络中实现通信,毕竟之前因为只有一个网络,所以不需要对网络进行标识。但在这种广域网模型中,会存在大大小小无数个局域网,所以想要从一台主机将数据传输给另一台主机时,此时又该如何精准定位到某个网络中的具体主机呢?因此又产生了一系列的问题需要加以解决:

  • ①如何标识各个网络及网络中的主机(网络和主机共同编址问题,如IP地址)。
  • ②一台主机向另一台主机发送数据时,在广域网中往往存在多条链路可走,此时如何选择最合适的路由。

而对于这些问题我们都可以划归到网络层处理。

所以,网络层主要负责将网络地址翻译成对应的物理地址,并通过路由选择算法为数据的传输选择最适当的路径

路由选择:路由主要包括路由表和路由算法两个方面,网络层会根据速度、距离(步跳数)、价格及网络拥塞程度等因素,在路由表的多条通信路径中找一条最佳路径。

1.3.4、传输层

至此,如果解决了物理层、链路层及网络层的问题,数据就可以做到在不同的网络中进行通信。但这对于普通用户而言仍然不够,因为一台主机上会安装多个应用程序,好比:

主机A上安装了QQ、微信、谷歌浏览器,当另一台主机向主机A发送数据时,那这些数据到底应该交给主机上的哪个进程处理呢?

因此还需要解决:

  • ①如何解决进程之间基于网络的通信问题,如何标识网络通信相关的进程。
  • ②如果数据在传输过程中出现丢包、误码等传输错误,又该如何处理。

这些问题可以被划归到传输层加以解决。

   基于OSI模型而言,上三层资源子网主要负责用户数据处理,下三层通信子网主要负责数据通信,而传输层位于OSI模型中的第四层,是资源子网与通信子网之间的桥梁,因此,无论是在OSI亦或TCP/IP体系中,传输层都是至关重要的一层。

传输层的主要功能是:提供端到端之间的传输机制以及提供差错效验和流量控制,保证报文的正确传输。TCP/IP体系中,主要提供了两种传输服务:

  • “面向连接”的TCP可靠传输协议。
  • “面向无连接”的UDP不可靠传输协议。
1.3.5、应用层

   应用层无论是在OSI亦或TCP/IP模型中,都是位于最高层,它是用户、各种应用程序和网络之间的接口,其功能是直接向用户提供服务,并完成用户在网络中的各种操作,应用层为用户提供的服务范围涵盖:文件目录服务、文件传输服务、远程登录服务、电子邮箱服务、打印服务、网络管理服务、安全服务、域名管理服务等,这些服务由应用层中各种协议及应用程序提供。

TCP/IP体系中将资源子网都合并为了应用层,但在OSI模型中,资源子网是分为应用层、表示层、会话层三个层次的,也就是拆分粒度更精细化,服务也更为精细化。

1.3.5.1、OSI-表示层

   主要负责应用层的用户数据处理,例如数据编/解码、数据的加密解密、数据压缩、数据格式处理等,其作用如其名,主要处理用户信息的表示问题。

1.3.5.2、OSI-会话层

   会话层位于OSI模型的第五层,是用户应用程序和网络之间的接点,主要负责网络中的两节点间建立、管理和终止通信。会话层的功能涵盖:建立通信链接、保持会话过程、维持通信链接的畅通、同步节点间的对话信息、决定通信是否终止以及通信中断时决定从何处重新发送。

简单而言,应用层主要是为用户与网络之间,提供各类可“接触”的窗口。

1.3.6、TCP/IP体系中数据的通信过程

与之前的OSI模型的通信过程相同,TCP/IP体系中,一端想往另一端传输数据时,数据也会经历封装与解封的过程,数据经过每一层时都会加入当前层的协议信息,从而形成本层的PDU,继而向下传递,直到最终被转换为比特流数据,通过传输介质转换为信号传输到另一端,另一端接收到之后则会依次解封数据,过程如下:

同比生活,也就是类似收发快递的过程:

  • 发件:[发件人]→[货物]→[驿站]→[快递公司站点]
  • 传输介质:[运输路线]→[中转站]
  • 收件:[快递公司站点]→[驿站]→[货物]→[收件人]

2.3.7、计算机网络基础总结

   到目前为止,计算机网络中一些比较重要的基础概念已介绍完毕,前面的论述中,从计算机网络的诞生,到法定的OSI标准体系以及TCP/IP体系进行了简单分析,对于开发者而言,这些基础知识了解即可,想要深入学习的小伙伴可观看《湖科大的计算机网络视频教学》,讲的比较透彻切通俗易懂。

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

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

相关文章

【linux】基础IO(四)

在上一篇基础IO中我们主要讲述了文件再磁盘中的存储,当然我们说的也都只是预备知识,为这一篇的文件系统进行铺垫。 目录 搭文件系统的架子:填补细节:inode:datablock[]: 更上层的理解: 搭文件系统的架子&a…

PTA 探索地道战

地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式。地道网是房连房、街连街、村连村的地下工事,如下图所示。 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智。在现在和平发展的年代&#x…

软考113-上午题-【计算机网络】-IPv6、无线网络、Windows命令

一、IPv6 IPv6 具有长达 128 位的地址空间,可以彻底解决 IPv4 地址不足的问题。由于 IPv4 地址是32 位二进制,所能表示的IP 地址个数为 2^32 4 294 967 29640 亿,因而在因特网上约有 40亿个P 地址。 由 32 位的IPv4 升级至 128 位的IPv6&am…

Vue学习笔记-S1

1 什么是Vue Vue是一款用于构建用户界面的渐进式JavaScripte框架,可基于数据渲染用户页面. 1.1 Vue的知识架构 Vue核心包:声明式渲染、组件系统Vue构建:客户端路由、状态管理、构建工具局部使用Vue:快速入门、常用指令、生命周…

计算机组成结构—外部存储器

目录 一、磁盘存储器 1. 磁表面存储器和磁记录原理 2. 硬磁盘的分类和基本结构 (1)硬磁盘存储器的分类 (2)硬磁盘存储器的组成 3. 磁盘的工作原理 (1)磁盘存储区域 (2)磁盘地…

学习记录15-运算放大器例题1

一、例题1 图中自己加的一些声明,方便待会讲解(请忽略丑。。。) 根据虚短原则:U U- U 3V*(R4/(R3R4)) 3V*(20 / (1020)) 2V U- U- -1V*(R2/(R1R2))Uo*(R1/(R1R2)) -1V*(20/30)Uo*(10/30) -2/3VUo*1/3 …

java算法day50 | ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III 思路: 这道题的关键就是如何设置dp数组的状态。用五种状态表示对股票持有或售出的不同阶段。代码随想录讲解视频 class Solution {public int maxProfit(int[] prices) {int[][] dpnew int[prices.length][5];dp[0][0]0;dp[0][1]-prices…

Day105:代码审计-PHP原生开发篇SQL注入数据库监控正则搜索文件定位静态分析

目录 代码审计-学前须知 Bluecms-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-2次注入审计分析 知识点: 1、PHP审计-原生态开发-SQL注入&语句监控 2、PHP审计-原生态开发-SQL注入&正则搜索 3、PHP审计-原生态开发-SQ…

接口自动化测试(python+pytest+requests)

一、选取自动化测试用例 优先级高:先实现业务流程用例、后实现单接口用例功能较稳定的接口优先开展测试用例脚本的实现二、搭建自动化测试环境 核心技术:编程语言:python;测试框架:pytest;接口请求:requests安装/验证requests:命令行终端分别输入 pip install requests / p…

无线游戏手柄的测试(Windows11系统手柄调试方法)

实物 1、把游戏手柄的无线接收器插入到电脑usb接口中 2、【控制面板】----【查看设备和打印机】 3、【蓝牙和其它设备】--【更多设备和打印机设置】 4、鼠标右键【游戏控制器设置】 5、【属性】 </

Python程序设计 列表

教学案例八 列表 1. 计算并显示斐波那契数列 输入n,计算并显示斐波那契数列前n项.一行打印5项&#xff0c;每项显示宽度为6 什么是斐波那契数列 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff…

机器学习的15个概念

机器学习 有监督学习 有监督学习是利用训练数据集进行预测的机器学习任务。有监督学习可以分为分类和回归。回归用于预测“价格”“温度”或“距离”等连续值&#xff0c;而分类用于预测“是”或“否”、“垃圾邮件”或“非垃圾邮件”、“恶性”或“良性”等类别。 分类包含…

番外篇 | YOLOv8改进之引入YOLOv9的ADown模块 | 替换YOLOv8卷积

前言:Hello大家好,我是小哥谈。YOLOv9是一种目标检测算法,而ADown模块是YOLOv9中的一个重要组成部分。ADown模块主要用于特征提取和下采样操作,以便在后续的检测任务中更好地捕捉目标的特征。具体来说,ADown模块是YOLOv9中的一个卷积块,由一系列卷积层和池化层组成。它的…

基于SSM+Jsp+Mysql的超市管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

c++的学习之路:22、多态(1)

摘要 本章主要是说一些多态的开头。 目录 摘要 一、多态的概念 二、多态的定义及实现 2.1、多态的构成条件 2.2、虚函数 2.3、虚函数的重写 2.4、C11 override 和 final 2.5、重载、覆盖(重写)、隐藏(重定义)的对比 三、思维导图 一、多态的概念 多态的概念&#…

Harmony鸿蒙南向驱动开发-DAC

DAC&#xff08;Digital to Analog Converter&#xff09;是一种通过电流、电压或电荷的形式将数字信号转换为模拟信号的设备。 DAC模块支持数模转换的开发。它主要用于&#xff1a; 作为过程控制计算机系统的输出通道&#xff0c;与执行器相连&#xff0c;实现对生产过程的自…

牛客 2024春招冲刺题单 ONT98 牛牛猜节点【中等 斐波那契数列 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/6a3dfb5be4544381908529dc678ca6dd 思路 斐波那契数列参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规…

redis集群搭建过程遇到的坑

在上一篇博文中搭建好了redis集群&#xff0c;但是仍然存在很多问题 上一篇&#xff1a;k8s下搭建redis集群 1、springboot服务连接 集群配置好了&#xff0c;spring服务应该怎么连接呢&#xff1f;单点和集群的连接配置写法是不一样的 单点 spring:redis:host: ${BTC_RED…

水牛社软件:让网络小白少花冤枉钱,赚取第一桶金

大家好&#xff0c;我是木薯&#xff0c;水牛社赚钱软件的设计者&#xff0c;很感谢你的关注。我掘金互联网行业21年&#xff0c;操作了过去十余年来网上几乎所有的主流赚钱项目。我相信这个软件可以给你带来至少百倍的回报。 今年是软件上线第十个年头&#xff0c;去年底刚刚…

Tesseract 安装与配置及验证码识别

Tesseract 安装与配置 Tesseract 的使用&#xff0c;需要环境的支持&#xff0c;以实现简单的转换和训练。 1.环境 python版本&#xff1a;3.8.3 &#xff08;python2.7或3以上&#xff09; 操作系统&#xff1a;windows系统 2.Python安装 详见&#xff1a;Miniconda的…