【JAVAEE】认识网络及网络通信

news/2024/10/30 17:22:21/

目录

1.网络发展史

1.1独立模式

1.2网络互连

1.2.1局域网

1.2.2广域网

2.网络通信基础

2.1IP地址

2.2端口号

2.3协议

2.4五元组

2.5协议分层

2.5.1什么是协议分层

2.5.2协议分层的作用

2.5.3TCP/IP五层(或四层)模型

3.封装和分用


1.网络发展史

网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。

1.1独立模式

独立模式:计算机之间相互独立。

1.2网络互连

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即多个计算机协同工作来完成业务,就有了网络互连。

网络互连:将多台计算机连接在一起,完成数据共享。

数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信

根据网络互连的规模不同,可以划分为局域网和广域网。

1.2.1局域网

局域网,即Local Area Network,简称LAN。局域网一般指网络规模较小。

local即标识了局域网是本地,局部组建的一种私有网络。

局域网内的主机之间能方便的进行网络通信,又称为内网。局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:

1.基于网线直连

2.基于集线器组建

集线器是一种网络设备,只能单一线路分发。

3.基于交换机组建

4.基于交换机和路由器组建

1.2.2广域网

广域网,即Wide Area Network,简称WAN。广域网一般指网络规模较大。

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

 

如果有北、中、南等分公司,甚至海外分公司,把这些分公司以专线方式连接起来,即称为 广域
如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。
有时在不严格的环境下说的广域网,其实是指互联网。
所谓 " 局域网 " " 广域网 " 只是一个相对的概念。比如,我们有 " 天朝特色 " 的广域网,也可以看做一个比较大的局域网。

2.网络通信基础

网络互连的目的是进行网络通信,即网络数据传输。更具体一点,是网络主机中的不同进程间,基于网络传输数据。

那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到哪台主机的呢?这就需要使用IP地址来标识。

2.1IP地址

概念:IP地址表示了主机在网络上的地址。类似收发快递时的收件人与发件人地址。

格式:IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(4个字节)。

如:01100100.00000100.00000101.00000110

通常用“点分十进制”的方式表示,即a.b.c.d的形式(a,b,c,d都是0-255之间的十进制整数)。

如:100.4.5.6

特殊IP:127.*的IP地址用于本机环回测试,通常是127.0.0.1

本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输)

IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

2.2端口号

概念:端口号表示了主机中的某一个进程,使用网络的进程在启动的时候系统都会分配一个端口号。类似发送快递时,不光需要指定收获地址(IP地址),还需要指定收货人(端口号)。

格式:端口号是0-65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送和接收网络数据。(1-1024是知名端口号,有明确的程序已经占用了)

注意事项:两个不同的进程,不能绑定同一个端口号,但是一个进程可以绑定多个端口号。

有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?

网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串 你好! :如何标识发送的数据是文本类型,及文本的编码格式呢?
基于网络数据传输,需要使用协议来规定双方的数据格式。

2.3协议

概念:协议,网络协议的简称,网络协议是网络通信经过的所有网络设备都必须共同遵从的一组约定,规则。

协议组成三要素:

1. 语法:即数据与控制信息的结构或格式;
  • 类似打电话时,双方要使用同样的语言:普通话
2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
  • 语义主要用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。
  • 类似打电话时,说话的内容。一方道:你瞅啥?另一方就得有对应的响应:瞅你咋的!
3. 时序,即事件实现顺序的详细说明。
  • 时序定义了何时进行通信,先讲什么,后讲什么,讲话的速度等。比如是采用同步传输还是异步传输。
  • 女生和男生的通话,总是由男生主动发起通话,而总是在男生恋恋不舍的时候,由女生要求结束通话。

协议最终体现在网络上传输的数据包的格式。

2.4五元组

在TCP/IP协议中,用五元组来标识一个网络通信:

1.源IP:标识源主机

2.源端口号:标识源主机中该次通信发送数据的进程

3.目的IP:标识目的主机

4.目的端口号:标识目的主机中该次通信接收数据的进程

5.协议号:标识发送进程和接收进程双方约定的数据格式

五元组在网络通信中的作用,就类似于发送快递:

可以在cmd中,输入netstat -ano查看网络数据传输中的五元组信息:

如果需要过滤(一般是通过端口号或进程PID过滤),可以使用netstat -ano | findstr过滤字符串。

2.5协议分层

对于网络协议来说,往往分成几个层次进行。

2.5.1什么是协议分层

协议分层类似于打电话时,定义不同的层次的协议:

 在这个例子中,我们的协议分为两层:语言层和通信设备层。但是实习的网络通信会更加复杂,需要分更多的层次。

2.5.2协议分层的作用

分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。

  • 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
  • 对于提供方的来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可

2.5.3TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP是通讯仪采用了五层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

把七层模型上面的三层合一,就成了TCP/IP中的应用层,下面四层都是一样的,只是命名不同。

应用层 :负责应用程序间沟通,如简单电子邮件传输( SMTP )、文件传输协议( FTP )、网络远 程访问协议( Telnet )等。我们的网络编程主要就是针对应用层。
传输层 :负责两台主机之间的数据传输。如传输控制协议 (TCP) ,能够确保数据可靠的从源主机发送到目标主机。
网络层 :负责地址管理和路由选择。例如在 IP 协议中,通过 IP 地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器( Router )工作在网路层。
数据链路层 :负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步 ( 就是说从网线上检测到什么信号算作新帧的开始 ) 、冲突检测 ( 如果检测到冲突就自动重发 ) 、数据差错校验等工 作。有以太网、令牌环网,无线 LAN 等标准。交换机( Switch )工作在数据链路层。
物理层 :负责光 / 电信号的传递方式。比如现在以太网通用的网线 ( 双绞 线 ) 、早期以太网采用的的同轴电缆 ( 现在主要用于有线电视 ) 、光纤,现在的 wifi 无线网使用电磁波等都属于物理层的概念。 物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器( Hub )工作在物理层。
简单来说:
1.应用层,是程序员关心的层
2.传输层,操作系统工作在这一层,主要是确定程序的端口号
3.网络层,规划出一条端到端之间的路径,包括其中要经过的其他网络设备(五元组到这一层就确定下来了)
4.数据链路层,解决的是点到点的运输,例如快递经过的每一个快递点
5.物理层,相当于网线其它网络设备(交换机,路由器等)

3.封装和分用

不同的协议层对数据包有不同的称谓,在传输层叫做段 (segment) ,在网络层叫做数据报
(datagram) ,在链路层叫做 (frame)
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部 (header) ,称为封装
(Encapsulation)
首部信息中包含了一些类似于首部有多长,载荷 (payload) 有多长,上层协议是什么等信息。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中
" 上层协议字段 " 将数据交给对应的上层协议处理

以QQ发送消息为例,模拟消息在网络中的封装与分用的过程:

封装:

1.应用层:应用层会把消息组织好,统一发送给操作系统的API(传输层)socket api

2.传输层:系统操作确认来源端口号(在传输层有几个非常著名的协议,TCP,UDP等)

 3.网络层:确定了源IP和目标IP

4.数据链路层:

 

5.物理层:

分用:

6.物理层 :把光信号和电信号,还原成数据链路层可以解析的格式

7.数据链路层

8.网络层

9.传输层

10.应用层

在网络传输的过程中,每一个网络节点都会进行封装和分用,最终才到达目标。


http://www.ppmy.cn/news/84176.html

相关文章

关于CSDN如何获得铁粉

一、发表高质量技术博客 获得铁粉首先是需要有粉丝关注,在CSDN有粉丝关注,就需要多发表写技术文章而且最好是高质量文章,条理清晰,复合当下主流技术,或者新的技术方向,图文并茂的那种。这样通过搜索引擎搜到…

数据库 查询执行(1) 多路归并

用户输入一个sql语句 sql解析器 将sql语句转换成一个 关系代数 但是同时也会附加一些 操作 (下方未体现)。 外存排序 原理 外部数据元素太多无法一次性的读入内存 通常设计者 会让磁盘块的大小和缓冲区的大小相等 。 首先构造初始的归并段 分别从横向和纵向 体会这…

Tcl-7. binary命令

binary format 就是将数值根据规定模式对 Tcl 的普通数据进行二进制压缩, 而 binary scan 作用相反,是从二进制数值恢复 Tcl 普通数据。 下面列举了这两个 binary 命令的作用。 首先用 binary format 对数值字符串”25664”进行二进制压缩,…

【事务】MySql Lock wait timeout exceeded该如何处理?service层调用内部方法事务失效如何处理?

文章目录 参考文章问题描述解决办法办法1. 新增查询操作办法2. 判断实际事务场景解决办法 参考文章 MySql Lock wait timeout exceeded该如何处理? AopContext.currentProxy()的使用 问题描述 同一事务内包含对同一条记录进行新增、更新操作,导致mysq…

Weex中,关于组件的水平排列竖直排列居中对齐居左对齐居右对齐低部对齐顶部对齐布局对齐说明

容器内子组件排列方向 子组件竖直方向排列&#xff08;默认&#xff09; 子组件水平方向排列 <style> .container {flex-direction: row;direction: ltr; } </style>子组件在父组件容器中的对齐方式 我们主要使用两个属性实现子组件在父组件的对齐方式&#xff…

Vue的模板语法是什么?如何使用插值表达式和指令

Vue的模板语法其实很简单&#xff0c;它就像是在HTML中加入了一些魔法般的指令和插值表达式。这些指令和表达式可以让你与Vue实例的数据进行交互&#xff0c;实现动态渲染和响应式更新。 首先是插值表达式&#xff0c;它就像是在HTML中加入了一些双大括号和变量的结合体&#…

认识 Protobuf 及其简单使用

文章目录 一、序列化与反序列化1.1 序列化1.2 反序列化1.3 序列化与反序列化的使用场景 二、初识 Protobuf三、Protobuf 的安装四、Protobuf 的使用案例4.1 创建并编写 .proto 文件的基本规范与语法4.2 编译 .proto 文件4.3 序列化与反序列化的使用 五、总结 ProtoBuf 的使用特…

Jmeter组件:Random CSV Data Set Config(随机读取文件数据)

一、Jmeter组件&#xff1a;Random CSV Data Set Config(随机读取文件数据) 功能&#xff1a;该组件可以随机读取CSV文件中的每一行的数据 二、下载插件&#xff1a;(jmeter-plugins-random-csv-data-set-xx.jar),并放到lib/ext目录下&#xff0c;重启jmeter 也可以在Jmeter…