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并没有具体实现方式,但为计算机厂商或组织结构制定网络协议提供了参考框架。

时间: 2024-08-28 04:20:48

Java网络编程のOSI的相关文章

Java网络编程:OSI七层模型和TCP/IP模型介绍

OSI(Open System Interconnection),开放式系统互联参考模型 .是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为了7层.每一层都有相关.相对应的物理设备,比如常规的路由器是三层交换设备,常规的交换机是二层交换设备.OSI七层模型是一种框架性的设计方法,建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能就是帮助不同类型的主机实现数据传输.它的最大优点是将服务.接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的

java进阶学习 --java网络编程一(转)

Java - 网络编程完全总结(基础介绍) 本文主要是在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,主要介绍Java中的网络编程. 目录 一.概述 二.计算机网络 1.网络协议 2.网络体系结构 三.OSI参考模型 四.TCP/IP参考模型 五.常见网络协议 1.TCP协议 2.UDP协议 3.HTTP协议 六.计网常见问题 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在

Java网络编程和NIO详解开篇:Java网络编程基础

Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为我们拥有网络.网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界. 然而,网络的无标度和小世界特性使得它又是复杂的,无所不在,无所不能,以致于我们无法区分甚至无法描述. 对于一个码农而言,了解网络的基础知识可能还是从了解定义开始,认识OSI的七层协议模型,深入Socket内部,进而熟练地

从零探索Java网络编程01之 TCP/IP 与 Socket

最近完成了几项比较简单的项目, 日子有些松散, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧?  一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志, logginglevel: debug, jdk版本为1.8) 造成这种现象的原因可能是, Mybatis在执行接口方法时, 实例化了多个Preparedstatement, 启用了不同的NIO线程, 但是其中, 咦?! 没错, NIO中出了一段IO!!! (天哪!), 在查询网

Java网络编程和NIO:Java网络编程基础

转自: https://www.cnblogs.com/midiyu/p/7875574.html 关于网络 网络协议 如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间能够进行相互通信是因为它们都共同遵守一定的规则,即网络协议. 网络体系结构 计算机网络是个复杂的系统,按照人们解决复杂问题的方法,把计算机网络实现的功能分到不同的层次上,层与层之间用接口连接.通信的双方具有相同的层次,层次实现的功能由协议数据单元(PDU)来描述.不同系统中的同一层构成对等层,对等层之间通过对等层协议进行

用java网络编程中的TCP方式上传文本文件及出现的小问题

自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端. 客户端: 1 import java.io.BufferedReader; 2 import java.io.FileReader; 3 import java.io.IOException; 4 import java.io.InputStr

Java网络编程基础(六)— 基于TCP的NIO简单聊天系统

在Java网络编程基础(四)中提到了基于Socket的TCP/IP简单聊天系统实现了一个多客户端之间护法消息的简单聊天系统.其服务端采用了多线程来处理多个客户端的消息发送,并转发给目的用户.但是由于它是基于Socket的,因此是阻塞的. 本节我们将通过SocketChannel和ServerSocketChannel来实现同样的功能. 1.客户端输入消息的格式 username:msg    username表示要发送的的用户名,msg为发送内容,以冒号分割 2.实现思路 实现思路与Java网络

java网络编程serversocket

转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerSocket用法详解 1.C/S模式中,Server需要创建特定端口的ServerSocket.->其负责接收client连接请求. 2.线程池->包括一个工作队列和若干工作线程->工作线程不断的从工作队列中取出任务并执行.-->java.util.concurrent->线程池

20145311实验四 "Java网络编程及安全"

20145311实验四 "Java网络编程及安全" 程序设计过程 实验内容 ·掌握Socket程序的编写:·掌握密码技术的使用:·设计安全传输系统 ·利用加解密代码包,编译运行代码,一人加密,一人解密:·集成代码,一人加密后通过TCP发送: 实验步骤 在这之前进行了一个socket连接的例子:用百度做了个实验 下面是两人合作进行RSA的加密: 首先建立一个Socket对象,用来连接特定服务器的指定端口(我负责的是服务器端,郑凯杰负责的是客户端,所以也就是输入我这边的ip地址),输入的参