Java基础(34)——网络编程相关知识详解及示例分析一(计算机网络基础知识及ISO/OSI网络参考模型)
版权声明
- 本文原创作者:清风不渡
- 博客地址:https://blog.csdn.net/WXKKang
一、计算机网络
1、计算机网络
把分布在不同地理区域的计算机与专门的外部设备,用通信线路互连成一个规模大、功能强的网络,使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源
网络中主要设备有计算机、路由器、交换机等等。路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点
2、网络通信协议
计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准,而这个标准即所谓的网络通信协议
3、ISO/OSI网络参考模型
ISO/OSI网络七层模型是一个开放性的通信系统互连参考模型,它是网络通信协议的国际标准
(1)模型背景
OSI参考模型(Open System Interconnect)是ISO (国际标准化组织)组织在1985年研究的开放系统互连参考模型,定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层)
在这个框架中详细规定了每一层的功能,以实现开放系统环境中的互连性、互操作性和应用的可移植性
(2)参考模型
ISO/OSI网络参考模型则包括七个层次:应用层、表示层、会话层、传输层、网络层、链路层、物理层,如下图:
1、物理层(Physical Layer)
物理层是OSI参考模型的最低层,它利用传输介质为数据链路层提供物理连接。它主要关心的是通过物理链路从一个节点向另一个节点传送比特流,物理链路可能是铜线、卫星、微波或其他的通讯媒介
它关心的问题有:多少伏电压代表1?多少伏电压代表0?时钟速率是多少?采用全双工还是半双工传输?总的来说物理层关心的是链路的机械、电气、功能和规程特性
2、数据链路层(Data Link Layer)
数据链路层是为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。数据帧中包含物理地址(又称MAC地址)、控制码、数据及校验码等信息
该层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路转换成对网络层来说无差错的数据链路
此外,数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻塞
3、网络层(Network Layer)
网络层是为传输层提供服务的,传送的协议数据单元称为数据包或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过路径选择算法(路由)将数据包送到目的地
为避免通信子网中出现过多的数据包而造成网络阻塞,需要对流入的数据包数量进行控制(拥塞控制)。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题
4、传输层(Transport Layer)
传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一-条主机到主机的、可由用户控制和设定的、可靠的数据通路
传输层传送的协议数据单元称为段或报文
5、会话层(Session Layer)
会话层主要功能是管理和协调不同主机上各种进程之间的通信(对话),即负责建立、管理和终止应用程序之间的会话
会话层得名的原因是它很类似于两个实体间的会话概念。例如,一个交互的用户会话以登录到计算机开始,以注销结束
6、表示层(Presentation Layer)
表示层处理流经结点的数据编码的表示方式问题,以保证一个系统应用层发出的信息可被另一系统的应用层读出。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据表示格式转换成网络通信中采用的标准表示形式
数据压缩和加密也是表示层可提供的转换功能之一
7、应用层(Application Layer)
应用层是OSI参考模型的最高层,是用户与网络的接口。该层通过应用程序来完成网络用户的应用需求,如文件传输、收发电子邮件等
(3)数据封装过程
1、数据封装单元
每层封装后的数据单元的叫法不同:
在应用层、表示层、会话层的协议数据单元统称为data ( 数据)
在传输层协议数据单元称为segment(数据段)
在网络层称为packet (数据包)
数据链路层协议数据单元称为frame(数据帧)
在物理层叫做bits (比特流)
2、数据发送过程(封装)
OSI参考模型中每个层次接收到上层传递过来的数据后都要将本层次的控制信息加入数据单元的头部,一些层次还要将校验和等信息附加到数据单元的尾部,这个过程叫做封装
3、数据接收过程(解封)
当数据到达接收端时,每一层读取相应的控制信息根据控制信息中的内容向.上层传递数据单元,在向上层传递之前去掉本层的控制头部信息和尾部信息(如果有的话)。此过程叫做解封装
这个过程逐层执行直至将对端应用层产生的数据发送给本端的相应的应用进程。它和前面的封装过程是刚好相反的