【JavaEE】_网络通信原理

目录

1. 网络发展史

2. 网络通信基础

1.1 IP地址

1.2 端口号

1.3 协议

1.3.1 概念

1.3.2 五元组

1.4  协议分层

1.4.1 协议分层的优点

1.4.2 协议分层的分类

1.4.3网络设备所在分层

1.4.4 两台主机通过TCP/IP协议通讯过程

1.5 封装与分用

1.5.1 封装

1.5.2 分用


1. 网络发展史

(1)单机:计算机之间相互独立;

(2)局域互联网LAN:将多台电脑通过路由器、集线器、交换机等进行连接构成局域互联网;

组件局域网的方式:

① 网线直连; ② 基于交换器组建; ③ 基于集线器组建; ④ 基于交换机和路由器组建;

(3)广域互联网WAN:使用路由器连接多个局域网形成大范围网络,形成广域网;

(局域网与广域网之间没有明确的界限)

注:组件网络涉及到的重要设备:

① 集线器:一根网线分两路,但同一时刻只同一条,比较古早,现今不常见;

② 交换机:组件局域网(不能跨局域网),可以用于扩展路由器的端口,而今带有路由功能的交换机也较常见,故而交换机与路由器的界限也越来越模糊;

③ 路由器:将两个局域网进行连接(跨局域网),一般家用路由器常见是5个网口:I个WAN+4个LAN,其中WAN口用于连接上级路由器;

2. 网络通信基础

网络互联的目的是进行网络通信,即网络数据传输;

1.1 IP地址

1. 在组建的网络中,主机用于输出或是接收数据根据IP地址进行标识,标识了网络设备所在的位置,

即:IP地址用于定位主机的网络地址,唯一标识一个主机

2. 在计算机中,使用一个32位、4字节数字表示地址,一般会把IP地址表示成4个0~255之间的十进制数字,并且用3个点进行分割,这种表示方法称为点分十进制表示法。

1.2 端口号

1. 网络通信时,端口号可以标识主机中发送、接收数据的进程,标识了一个具体的应用程序;

即:端口号用于定位主机中的进程

2. 端口号也是一个整数,大小为2字节,相对IP地址,是一个比较小的数字,范围是0~65535。

3. 不同的程序可以关联/绑定到不同的端口号,要求同一个主机上的应用程序不能关联到同一个端口号。一个端口号只能被一个程序绑定,但一个程序可以绑定多个端口;

如:mysql服务器绑定了3306端口,与此同时mysql还可以绑定其他的端口,但其他的程序就不能绑定3306端口了。

4. 端口号的分类:

第1类:熟知端口号:1~1023,留给一些较常见的服务器程序进行使用的,如:DNS:53端口,HTTP:80端口;

第2类:登记/注册端口号:1024~49151,使用这类端口号必须在IANA登记;

第3类:临时端口(短暂端口号):49152~65535,仅在客户进程运行时才动态选择,通信结束后则端口号收回。

1.3 协议

1.3.1 概念

协议是网络协议的简称,网络协议是网络通信经过的所有网络设备都必须遵从的一组约定、规则;

1.3.2 五元组

在TCP/IP协议中,一次通信涉及到五元组,即:

源IP,源端口,目的IP,目的端口,协议类型

1.4  协议分层

1.4.1 协议分层的优点

基于复杂的网络编程,如果协议过于复杂会导致学习成本、维护成本等都非常高,故而实际情况是复杂的大协议被拆分成若干个相对简单的小协议,令每个协议负责一部分功能,某些协议之间的功能与作用是类似的,故而针对小协议再进行分层,类似于代码中功能类似的类在同一包中;

① 如甲乙用汉语使用电话机打电话时,协议就被分为语言层汉语协议与通信设备层电话机协议,两个协议之间没有必须相互熟知底层原理的必要,类似于封装,降低了学习和维护的成本;

② 如甲乙现用英文或使用无线电话打电话,同时可以灵活地针对某一层协议进行替换;

1.4.2 协议分层的分类

当前互联网的协议分层主要有两种风格:

第一种: OSI 七层网络模型:实际不存在,教科书用于教学;

第二种: TCP/IP 五层(四层)网络模型:实际存在的,是OSI七层模型的简化版本;

物理层:约定网络通信中基础的硬件设备种类,如通信使用的网线、网口等等;

数据链路层:负责相邻两个结点如何进行传输;

网络层:负责路径的规划;

传输层:负责设备之间的数据传输,即端到端之间的传输,关注起点和终点;

应用层:描述应用程序如何使用数据,可以使用现有协议,也可由程序员自行编写,是程序员最需要关注的一点;

注:(1)主机是五层转发,路由器是三层转发(需解析出IP协议),交换机是二层转发(只需关注下一步发展到哪个相邻的设备上);

(2)基于协议分层的网络数据传输的基础五元组:

(3)应用层协议往往是根据具体的场景与需要,由程序员自主决定的;

源IP、源端口、目的IP、目的端口、协议类型;

1.4.3网络设备所在分层

1. 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,即TCP/IP的全5层;

2. 对于一台路由器,它实现了从网络层到物理层,即TCP/IP五层的下3层;

3. 对于一台交换机,它实现了从数据链路层到物理层,即TCP/IP五层的下2层;

4. 对于一台集线器,它只实现了物理层;

注:(1)交换机的作用是对路由器的端口进行拓展。

1.4.4 两台主机通过TCP/IP协议通讯过程

注:(1)通信双方的协议必须一致,否则通信无法正常进行;

(2)发送方进行封装,接收方进行分用;

1.5 封装与分用

1. 不同的协议层的数据报有不同的称谓:在传输层叫做段,在网络层叫做数据报,在链路层叫做帧;

2. 每层协议层增加或剥离的首部信息中包含了一些类似于首部长度、载荷长度以及上层协议名称等信息;

1.5.1 封装

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装:

1.5.2 分用

数据封装成帧后发送到传输介质上,到达目的主机后每层协议剥离相应首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633514.shtml

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

相关文章

Docker 容器连接

Docker 容器连接 前面我们实现了通过网络端口来访问运行在 docker 容器内的服务。 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。 下面我们来实现通过端口连接到一个 docker 容器。 网络端口映射 …

算法练习-A+B/财务管理/实现四舍五入/牛牛的菱形字符(题目链接+题解打卡)

难度参考 难度:简单 分类:熟悉OJ与IDE的操作 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。 题目 A B1. A B - AcWing题库财务管理1004:财…

VsCode + CMake构建项目 C/C++连接Mysql数据库 | 数据库增删改查C++封装 | 信息管理系统通用代码 ---- 课程笔记

这个是B站Up主:程序员程子青的视频 C封装Mysql增删改查操作_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1m24y1a79o/?p6&spm_id_frompageDriver&vd_sourcea934d7fc6f47698a29dac90a922ba5a3安装mysql:mysql 下载和安装和修改MYSQL8.0 数据库存储…

【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》

【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》 写在最前面8.1 公钥加密理论随机预言机模型(Random Oracle Model,ROM) 写在最前面 主要在 哈工大密码学课程 张…

深入vue响应式原理

当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。 这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue …

Docker 47 个常见故障的原因和解决方法

本文针对Docker容器部署、维护过程中,产生的问题和故障,做出有针对性的说明和解决方案,希望可以帮助到大家去快速定位和解决类似问题故障。 Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息: 1、…

简单理解自动驾驶-看这篇够了!

本文主要介绍自动驾驶技术的整体框架,旨在从宏观理解自动驾驶技术。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:自动驾驶技术 🎀CSDN主页 发狂的小花 🌄人生秘诀&#xff1a…

第6章 现代通信技术

文章目录 6.1 图像与多媒体通信6.1.1 图像通信6.1.2 多媒体通信技术1、多媒体通信概念2、多媒体通信的组成3、多媒体通信的业务分类4、实用化的多媒体通信系统类型5、多媒体通信应用系统(1)多媒体会议电视系统(2)IPTV 6.2 移动通信…

【机器学习300问】12、为什么要进行特征归一化?

当线性回归模型的特征量变多之后,会出现不同的特征量,然而对于那些同是数值型的特征量为什么要做归一化处理呢? 一、为了消除数据特征之间的量纲影响 使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响&…

每日一题——LeetCode1252.奇数值单元格的数目

进阶:你可以设计一个时间复杂度为 O(n m indices.length) 且仅用 O(n m) 额外空间的算法来解决此问题吗? 方法一 直接模拟: 创建一个n x m的矩阵,初始化所有元素为0,对于indices中的每一对[ri,ci],将矩…

多色女童家居服,柔软细腻超舒适

柔软细腻到不想脱下来的 优可丝面料家居服来啦 精挑细选的可爱印花图案 让宝贝能够更快乐的进入梦乡 长度也是刚刚好合适 春夏交替的季节,建议多入几件换着穿

【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)

第一部分 Flask简介 第1章 安装 1.1 创建应用目录 1.2 虚拟环境 1.2.1 创建虚拟环境 1.2.2 使用虚拟环境 1.3 使用pip安装Python包 1.4 使用pipregs输出包 1.5 使用requirements.txt 1.6 使用pipenv管理包 第2章 应用的基本结构 2.1 网页显示过程 2.2 初始化 2.3 路由和视图函数…

【C语言基础考研向】06运算符与表达式

文章目录 1.运算符分类 2.算术运算符及表达式 3.关系运算符与关系表达式 4.c语言运算级优先级表 课后习题自测 1.运算符分类 语言提供了13种类型的运算符,如下所示. (1)算术运算符( - * / %) . (2)关系运算符(>< >< l) . (3)逻辑运算符(l && ll) . (4)位…

一文了解【完全合作关系】下的【多智能体强化学习】

处于完全合作关系的多智能体的利益一致&#xff0c;获得的奖励相同&#xff0c;有共同的目标。比如多个工业机器人协同装配汽车&#xff0c;他们的目标是相同的&#xff0c;都希望把汽车装好。 在多智能体系统中&#xff0c;一个智能体未必能观测到全局状态 S。设第 i 号智能体…

c语言:用一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

题目 用一个宏&#xff0c;可以将一个整数的二进制位的奇数位和偶数位交换。 如&#xff1a;01&#xff0c;是1&#xff0c;交换完是10&#xff0c;是2. 思路 1.分别取出奇数位上的数字和偶数位上的数字 举个例子&#xff1a;1001 0110 1001 0110 奇…

javaScript设计模式-工厂

它的好处是消除对象间的耦合度&#xff0c;在派生子类时提供了更大的灵活性。但盲目的把普通的构造函数扔在一边&#xff0c;并不值得提倡。如果要采一不可能另外换用一个类&#xff0c;或都不需要在运行期间在一系列可互换的类中进行选择&#xff0c;就不应该使用。这样在后期…

基于android的违章处理APP 前后端服务 -毕业设计

基于android的违章处理APP 该项目是基于android版本的违章处理APP&#xff0c;系统包含前端android服务和后端web服务&#xff0c;内容和技术都是目前比较流行的架构。 技术介绍 前端android端&#xff1a; jdk17 gradle8.0 android studio 采用2023版本 后端web端&#xff…

手动添加测试用例配置输入参数和期望值

1.选中函数&#xff0c;点击右键选择插入测试用例。这里所选择的插入测试用例区别于之前的测试用例的地方在于&#xff0c;这里插入测试用例是手动配置的&#xff0c;之前的是自动生成的。手动配置可以自定义选择输入参数和期望值。 2.添加测试用例后&#xff0c;点击测试用例&…

FTP文件传输与vsftpd配置

一 存储类型 直连式存储DAS 适用于那些数据量不大&#xff0c;对磁盘访问速度要求较高的中小企业 存储区域网络SAN 用来存储非结构化数据&#xff0c;虽然受限于以太网的速度&#xff0c;但是部署灵活&#xff0c;成本低 网络附加存储NAS 适用于大型应用或数据库系统&…

进程间通信之利用命名管道进行通信

文章目录 什么是命名管道命名管道的作用有什么命名管道的特点和用法是什么命名管道与匿名管道有什么区别匿名管道相较于命名管道的局限性 命名管道如何使用代码 什么是命名管道 命名管道&#xff08;Named Pipe&#xff09;&#xff0c;也被称为FIFO&#xff08;First In, Fir…