Java网络编程のOSI

我们可以把客户机和远程服务器理解为主机A和主机B,用户和主机A可以通过主机A中的应用程序进行交互,主机A与主机B之间交互则是通过计算机网络通信进行的。
网络中每台机器称为节点。大多数节点是计算机,此外,打印机、路由器、网桥、网关和哑终端也是节点。
人与人之间通过某种语言来交流,网络中的主机之间也是通过“语言”来交流,这种语言我们称为网络协议。

那么不同协议之间又是如何互联的?通过TCP/IP协议。

OSI参考模型
在计算机网络产生之初,每个计算机厂商都有一套自己的网络体系结构,它们之间互不兼容。为此ISO专门研究了一种OSI体系结构(开放式系统互联)。一个网络系统只要遵循OSI模型,就可以和位于世界上任何地方的,也遵循OSI模型的其他网络系统连接。
OSI参考模型把网络分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,每一层使用下一层提供的服务,并为上层提供服务。

不同主机之间的相同层称为对等层。
1、物理层
传输信息离不开物理介质,但物理介质不在OSI 7层之内,一般把物理介质称为第0层。物理层的任务就是为它上一层提供物理连接。
2、数据链路层
数据链路层负责在两个相邻节点间线路上,无差错地传送以帧为单位的数据。每一帧包括一定数量的数据和一些必要的控制信息。数据链路层要负责建立、维持和释放数据链路的连接。在传送数据时,如果接收方检测到所传数据中有差错,就要通知发送方重发这一帧。
3、网络层
在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务是选择合适的网间路由和交换节点,确保数据及时传送到达目标主机。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,包头中含有逻辑地址信息----源主机与目标主机的网络地址。

主机A与节点1、节点1与节点4、节点4与主机B之间的线路称为数据链路,从主机A到主机B整个路径为路由。网络层的任务是选择合适的路由。
4、传输层
该层的任务是根据通信子网的特性最佳的利用网络资源,为两个端系统的会员曾提供建立、维护和取消传输连接的功能,以可靠方式或者不可靠方式传输数据。所谓可靠方式,是指保证把源主机发送的数据正确地送达目标主句;所谓不可靠方式,则是指不保证把源主机发送的数据正确地送达目标主机,数据有可能丢失或出错。在这一层,信息的传送单位是报文。
5、会话层
这一层也可以称为会晤层或对话层,在会话层及以上层次中,数据传送的单位不再另外命名,统称为报文。会话层管理进程之间的会话过程,即负责建立、管理、终止进程之间的会话。会话层还通过在数据中插入检验点来实现数据的同步。
6、表示层
表示层对上层数据进行转换,以保证一个主机的应用层的数据可以被另一个主机的应用层理解。表示层的数据转换包括对数据的加密、解密、压缩、解压和格式转换。
7、应用层
应用层确定进程之间通信的实际用途,以满足用户实际需求。浏览WEB站点,收发Email、上传或下载文件,以及远程登录服务器都可以看做是进程之间通信的实际用途。

当源主机向目标主机发送数据时,在源主机方,数据先由上层向下层传递,每一层会给上一层传递来的数据加上一个信息头,然后向下层发出,最后通过物理介质传输到目标主机。在目标主机方,数据再由下层向上层传递,每一层先对数据进行处理,把信息头去掉,再向上层传输,最后到达最上层,就会还原成实际数据。
OSI参考模型把网络分为多个层次,每个层次有明确的分工,这简化了网络系统的设计过程。例如,在设计应用层时,我们只需要考虑如何创建满足用户实际需要的应用;在设计传输层时,我们只需要考虑两个主机之间传输数据。
对等层之间互相通信需要遵守一定规则,如通信的内容和通信的方式,这种规则称为网络协议。OSI并没有具体实现方式,但为计算机厂商或组织结构制定网络协议提供了参考框架。
Java网络编程のOSI的更多相关文章
- Java网络编程:OSI七层模型和TCP/IP模型介绍
OSI(Open System Interconnection),开放式系统互联参考模型 .是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为了7层.每一层都有相关.相对应的物理设备,比如常规的路 ...
- Java - 网络编程完全总结
本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一.概述 ...
- 【转载】Java 网络编程
本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一. ...
- Java网络编程和NIO详解开篇:Java网络编程基础
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...
- JAVA 网络编程 - 实现 群聊 程序
在实现 这个 程序之前, 我们 需要 了解 一些 关于 Java 网络 编程 的 知识. 基本 的 网络知识: 网络模型 OSI (Open System Interconnection 开放系统互连 ...
- 从零探索Java网络编程01之 TCP/IP 与 Socket
最近完成了几项比较简单的项目, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧? 一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志 ...
- java网络编程基础——网络基础
java网络编程 网络编程基础 1.常用的网络拓扑结构: 星型网络.总线网络.环线网络.树形网络.星型环线网络 2.通信协议的组成 通信协议通常由3部分组成: 语义部分:用于决定通信双方对话类型 语法 ...
- 20145205 《Java程序设计》实验报告五:Java网络编程及安全
20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...
- Java 网络编程学习总结
新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1] 网络编程认识 [2] TCP/IP编程 ...
随机推荐
- jquery easy ui 的formatter 格式化函数代码
- pipenv 简要指南
pipenv 简要指南 pipenv是requests作者的一个项目, 整合了virtualenv, pip, pipfile, 用于更方便地为项目建立虚拟环境并管理虚拟环境中的第三方模块. 安装 直 ...
- Django xadmin的使用 (一)
Django xadmin的使用 xadmin是django的一个第三方的管理后台实现,它的功能比自带的admin功能更加强大. xadmin项目在github上的地址为:https://githu ...
- Spring Boot实践——三种拦截器的创建
引用:https://blog.csdn.net/hongxingxiaonan/article/details/48090075 Spring中的拦截器 在web开发中,拦截器是经常用到的功能.它可 ...
- 如何创建dll以及使用
使用dll的好处: 隐藏了代码,公开了功能. 在VS2017中,创建一个DLL工程项目,将你的代码写入.cpp文件中,然后比如 这样: //////////// test.cpp #include ...
- SynchronizationContext
/// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : ...
- Java Socket编程之UDP
UDP编程: 将要传输的数据定义成数据包(Datagram),在数据报中指明所要到达的Socket(主机地址和端口号),然后再将数据报发送出去. 相关操作类: DatagramPacket ...
- Perl 变量:哈希变量
Perl 哈希变量哈希是 key/value 对的集合.Perl中哈希变量以百分号 (%) 标记开始.访问哈希元素格式:${key}. 1.创建哈希创建哈希可以通过以下两种方式: 1.为每个 key ...
- 使用Jenkins集成和自动化打包资料
1.手把手教你利用Jenkins持续集成iOS项目 http://www.jianshu.com/p/41ecb06ae95f 2.Jenkins+ Xcode+ 蒲公英 实现IOS自动化打包和分发 ...
- Opencv convertScaleAbs
void cv::convertScaleAbs( cv::InputArray src, // 输入数组 cv::OutputArray dst, // 输出数组 double alpha = 1. ...