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

news2024/11/17 14:43:18

目录

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.coloradmin.cn/o/554954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调用百度API自动生成春联

目录 1、作者介绍2、百度智能春联介绍录2.1 功能介绍2.2 技术特色 3、智能春联API接口介绍3.1 请求参数3.2 返回参数 4. 操作流程5. 代码实现 1、作者介绍 范宇帅,男,西安工程大学电子信息学院,2022级研究生 研究方向:多机器人协…

〖C++11〗线程库详解

「前言」文章是关于C11线程库相关的 「归属专栏」C嘎嘎 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 请不要把陌生人的些许善意, 视为珍稀的瑰宝, 却把身边亲近人的全部付出, 当做天经地义的事情&am…

比赛记录:Codeforces Round 874 (Div. 3) A~G

传送门:CF 前题提要:赛时A出了5道题,并且都是一遍过的,F题也已经找到了解决方法,但是没时间完成了.以为应该能上分,但是没想到赛后E题被hack掉了…绝了.然后打完这场 d i v 3 div3 div3后立马阳了,加上一大堆烦心事(包括但不限于各类考试).就导致现在才写出这篇题解. A题:A. …

移动机器人 | 火星探矿机器人

01、需求分析 “火星探矿机器人”旨在要开发若干个自主机器人,将其送到火星上去搜寻和采集火星上的矿产资源。 火星环境对于开发者和自主机器人而言事先不可知,但是可以想象火星表面会有多样化的地形情况,如河流、巨石、凹坑等,机…

公司从字节招来一个28K的测试工程师,让我见识到了什么才是真正的测试天花板

今天上班开早会就是新人见面仪式,听说来了个很厉害的大佬,年纪还不大,是上家公司离职过来的,薪资已经达到中高等水平,很多人都好奇不已,能拿到这个薪资应该人不简单,果然,自我介绍的…

队列——“数据结构与算法”

各位CSDN的uu们你们好呀,又好久不见啦,最近有点摆烂,甚是惭愧!!!!今天,小雅兰的内容是队列,下面,让我们进入队列的世界吧!!&#xff0…

Trigger +Pipeline 完整实战案例

2.4.1 案例环境说明 示例项目:http://code.icloud2native.com/root/spring-boot-helloWorld.git 触发机制: 用户推送代码至项目仓库由Push Hook 自东触发pipeline的流水线的执行 2.4.2 项目实现 1、在k8s上部署一个gitlab,前面上节已经完成。 2、运…

海睿思分享 | 类chatgpt模型在信息抽取领域的应用

大语言模型(LLM,Large Language Model)是指能够处理海量数据、拥有百亿级参数的深度学习模型,它已成为⼈⼯智能领域中的新热点。2022 年 11 ⽉ 30 号 ChatGPT 发布,其卓越的性能表现给整个⾏业带来了巨⼤的冲击。⼈们不…

2023年春季期末网球理论复习资料

(含2023/2022/2021时事题,基于2012年期末网球理论复习资料修改) 目录 网球的起源 网球的主要赛事 三大网球协会 大满贯 网球的场地 1. 球场线 2. 网球的球网 3.场地的类型 网球的规则 1.发球规则 2.计分方法 3.通则 4.赛…

在Octane中提升渲染速度的技巧(第1部分)

Mike Griggs是一位数字内容创建者,在为众多客户创建Mograph,VFX和CGI方面拥有超过二十年的经验。迈克格里格斯(Mike Griggs)在Creative Bloq上写了很多博客,该博客是国际媒体集团和领先的数字出版商Future plc的一部分…

手势识别q

本文介绍使用光电传感器的手势识别。 光电传感器手势识别区别于视觉手势识别,没有复杂的算法。LED发射光,当光线接触到手发生反射,反射光被传感器检测到,传感器检测到不同的手势反射的光不同,再根据芯片的内置算法判别…

【笔试强训编程题】Day5.( 统计回文 45842 ) 和( 连续最大和 58539)

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训编程题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!! 文章目录…

【嵌入式烧录/刷写文件】-2.5-Fill填充Intel Hex文件

案例背景(共8页精讲):该篇将告诉你,如何对一个Hex文件进行填充: 对“起始地址”和“结束地址”内的非连续的Block块,进行填充;自定义填充范围。 目录 1 为什么要“Fill填充” 2 使用Vector HexView工具“填充”Hex…

【Linux0.11代码分析】09 之 ELF可执行程序02 - Section Headers解析

【Linux0.11代码分析】09 之 ELF可执行程序02 - Section Headers解析 一、ELF概述二、ELF的组成结构2.1 ELF header:解析出 section headers 含31个section节和 program headers 含13个segment段2.2 Section Headers:获取当前程序的31个section节区信息2…

18-03 MySQL高可用方案与选择

主从复制 读写分离 流程 原理 bin log STATEMENT 优点:记录的是执行的SQL,比较省空间,降低了主从复制时的IO开销缺点:由于记录的是SQL,所以MySQL多个节点之间复制的时候,特定场景下会导致数据不一致的情况 ROW 优点…

【多线程进阶二】JUC工具类 线程安全的集合类 死锁

目录 一、JUC工具类 🍅1、Callable接口 🍅2、ReentrantLock 🍅3、原子类 🍅4、Semaphore信号量 🍅5、CountDownLatch 二、线程安全的集合类 ​🍅1、多线程环境下,怎么使用线程安全…

第十三届蓝桥杯国赛JavaB组题解

A. 重合次数 思路: 枚举不同的时刻,判断哪些时刻秒针和分针表示的数字是相同的。这道题坑就坑在:xx:59:59 xx:00:00分针和时。也就是说一个小时会重叠两次。 题目要求是分钟和秒钟的重叠次数,故时钟,分钟,秒钟同时重叠的次数不算(这题还是有点咬文嚼字了…

MySQL---事务

1. 事务操作 开启事务:Start Transaction 任何一条DML语句(insert、update、delete)执行, 标志事务的开启命令:BEGIN 或 START TRANSACTION 提交事务:Commit Transaction 成功的结束,将所有的DML语句操作历史记录…

G2O学习使用

g2o全称是General Graph Optimization,也就是图优化,我们在做SLAM后端或者更加常见的任何优化问题(曲线拟合)都可以使用G2O进行处理。 就经验而言,solvers给人的感觉是大同小异,而 types 的选取&#xff0…

C语言小游戏——扫雷

前言 结合前边我们所学的C语言知识,本期我们将使用C语言实现一个简单的小游戏——扫雷 目录 前言 总体框架设计 多文件分装程序 各功能模块化实现 初始化棋盘 棋盘打印 埋雷 判赢与排雷 游戏逻辑安排 总结 总体框架设计 和三子棋相同,游戏开始时…