【Java EE】-网络编程(一) 网络初识

news2024/11/27 8:39:38

作者:学Java的冬瓜
博客主页:☀冬瓜的主页🌙
专栏:【JavaEE】
主要内容:单机、局域网、广域网、交换机、路由器。IP地址,端口号,协议,五元组。
协议分层,OSI七层网络模型,TCP/IP五层网络模型,数据的封装和分用详解。

文章目录

  • 一、网络发展
  • 二、网络通信初始
    • 1、IP地址&&端口号&&协议
    • 2、五元组
    • 3、协议分层
      • 3.1、OSI七层网络模型&&TCP/IP五层网络模型
      • 3.2、数据的封装和分用(重点理解)
      • 3.3、交换机/路由器 传输过程

一、网络发展

单机 ——> 局域网 ——>广域网

  • 单机:我们都知道单机游戏,是一个人玩,不能联网的游戏。
    局域网:把多台计算机连接在一起,就形成局域网。
    广域网:把多个局域网连接在一起,在物理上就形成很大的范围,就形成了广域网。

  • 集线器和交换机的核心功能相同:都是组建局域网。
    最大的区别是集线器比交换机传输速度慢。因此一般来说,集线器已经很少使用了,而交换器的功能在加强,有的可以像路由器一样实现三层转发功能。
    路由器的功能:用于局域网之间的连接。

二、网络通信初始

1、IP地址&&端口号&&协议

IP地址: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地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

端口号:端口号用于定位主机中的进程。你的收货信息不仅需要指定地址(IP),还需要收货人姓名号码(端口)。

格式
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。
理解
1> 两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。
2> 一个进程启动后,系统会随机分配一个端口(启动端口);程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。

协议:最终体现为在网络上传输的数据包的格式。
协议是网络协议的简称。网络协议是网络数据传输经过的所有网络设备都必须遵从的一组约定。只有遵守这个约定,计算机才能互相通信交流。

2、五元组

在TCP/IP协议中,用五元组来标识一个网络通信:
1. 源IP:标识源主机
2. 源端口号:标识源主机中该次通信发送数据的进程
3. 目的IP:标识目的主机
4. 目的端口号:标识目的主机中该次通信接收数据的进程
5. 协议号:标识发送进程和接收进程双方约定的数据格式

在这里插入图片描述

3、协议分层

       网络通信,笼统的说的话是一个复杂的事情,那么使用的网络协议也就复杂。针对这个复杂的大的协议,拆分成若干个相对较小的协议,然后把这些协议之间功能和作用相似的小协议进行分层,这样,功能类似的协议就分到同一个层中,这样就把复杂的东西拆分成简单化的东西。同时不同功能的协议之间也达到解耦的效果。

协议分层的好处:
1> 降低了学习和维护的成本(封装)
2> 灵活的针对这里的某一层协议进行替换。
3>分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类
对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可; 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。

       协议分层后最著名的是OSI七层模型和TCP/IP五层模型。其中,在协议之间,上层协议要调用下层协议(发送方,上层协议把数据交给下层协议,多层封装);下层协议要给上层协议提供支持(接收方,下层协议解析好数据,交给上层)。接下来我们看看OSI七层模型和TCP/IP五层模型、以及如何完成数据的封装和分用。

3.1、OSI七层网络模型&&TCP/IP五层网络模型

OSI七层网络模型:
在这里插入图片描述

TCP/IP五层网络模型:
在这里插入图片描述

  • TCP/IP五层模型把OSI的应用层、表示层、会话层统一称为应用层。因为最低的物理层我们考虑的很少,因此有时候也可称为TCP/IP四层模型。
  • 我们就依着TCP/IP五层模型来理解,这五层模型具体的功能:
    以你购物的场景来理解:
    应用层:你在手机APP上的线上的购物等服务;
    传输层:快递上写了发货人和收货人(指定端口)
    网络层:快递发送后,运输人员根据IP规划走哪条路径更划算。(指定IP)
    数据链路层:快递从A发往C需要途经B,快递从A到B时走用飞机?高铁?汽车?(即负责相邻两个节点数据如何传输)。
    物理层:快递走的那条路是什么路?用什么建的?就是最底层的实现(硬件设备)。

3.2、数据的封装和分用(重点理解)

在这里插入图片描述

在这里插入图片描述

3.3、交换机/路由器 传输过程

在这里插入图片描述

  • 上述情况是"传统意义上的"交换机和路由器:交换机可以进行二层转发,从物理层到数据链路层;路由器可以进行三层转发,从物理层到网络层,规划传输路线。
    实际上,有的交换机和路由器都可以封装分用到应用层,交换机路由器等传输网络信息的设备是运营商的设备,封装分用到应用层,可以监测(比如互联网上的言论)

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

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

相关文章

【开源项目】SpringBoot实现接口加密解密

需求背景 在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用 如果我们想保证数据传输的安全,对接口出参加密,入参解密。 但是不想写重复代码,我们可以提供一个通用starter,提…

数据结构系列17——lambda表达式

目录 1. 基本概念 2. 基本语法 3. 函数式接口 4. Lambda表达式的基本使用 4.1 语法精简 5. 变量捕获 6. Lambda在集合当中的使用 1. 基本概念 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一…

再聊ChatGPT(关于安全,隐私和法律方面的风险)

我在上一篇博文中有谈到ChatGPT 发展可能会经历的一些阶段。ChatGPT的必经阶段:野蛮生长时代-管理层监管与风险提示-号召国产化-规范化常态化。 昨天刚好看到监管部门发文 说明监管部门已经意识到到ChatGPT野蛮生长阶段,其实是存在很多漏洞和问题的。 …

2022年 全国职业院校技能大赛(中职组)网络安全赛项 正式赛卷 A模块 做题记录

评分标准文件及环境 评分标准:ZZ-2022029 网络安全赛项正式赛卷.zip 自己做的Linux靶机: 自己做的Windows靶机: 文章目录评分标准文件及环境A-1 任务一 登录安全加固1. 密码策略(Windows,Linux)a. 最小密码…

年少不知回损好,却把插损当作宝

一博高速先生成员:黄刚 因为本期要讲的是插损和回损的关系,因此本文的开头,我们还是首先回顾下S参数的概念。首先我们需要知道S参数其实是个黑匣子,什么是黑匣子呢,那就是我们其实不需要知道它包含了哪些链路结构&…

steam游戏搬砖项目怎么做?月入过万的steam搬砖项目教程拆解

steam游戏搬砖项目怎么做?月入过万的steam搬砖项目教程拆解 大家好,我是童话姐姐,今天继续来聊Steam搬砖项目。 Steam搬砖项目也叫CSGO搬砖项目,它并不是什么刚面世的新项目,是已经存在至少七八年的一个资深老牌项目。这个项目…

QT4与QT5兼容问题

QT4 与QT5 兼容,源码差异部分通过QT_VERSION 宏来区分 常见区别 widgets prinsupport charts 等模块一如方式,Qt5 将QtWidgets QtPrintsupport 模块从QtGui 中分离出来,QT4 中没有qjson4 和 charts 模块,需要特殊处理 在pro文件…

SpringSecurity之基础认知

前言 之前一直说开一个SpringSecurity的专栏,今天抽空整理一下,准备开始更新。 也欢迎大家订阅此专栏! 什么是SpringSecurity? Spring是非常成功的Java应用框架,目前是非常主流的开发框架。Spring Securtiy正是我们…

RPC 漫谈: 限流问题

RPC 漫谈: 限流问题 微服务之间的 RPC 调用往往会使用到限流功能,但是很多时候我们都是用很简单的限流策略,亦或是工程师拍脑袋定一个限流值。 这篇文章主要讨论在 RPC 限流中,当前存在的问题和可能的解决思路。 为什么需要限流…

Tailwind CSS 小案例,创建漂亮的收藏卡片列表

作为人类,我们有一种天生的倾向,喜欢收集不同的物品,并根据兴趣将它们分组。从邮票到书籍,人们收集和分组的物品种类繁多。定义上,收藏是一组事物,通常是由某个人创建的。例如,很多孩子会收集漫…

Docker In Docker

Docker in Docker 适用场景 ​ 在 CI 中,通常会有一个 CI Engine 负责解析流程,控制整个构建过程,而将真正的构建交给 Agent 去完成。例如,Jenkins 、GitLab 均是如此 同时 Agent 是动态的,构建时才需要,…

查询淘宝商品历史价格(用Python记录商品每天价格变化)

taobao.item_history_price-获取淘宝天猫历史价格接口 思路: 第一步抓取商品的价格存入 Python 自带的 SQLite 数据库每天定时抓取商品价格使用 pyecharts 模块绘制价格折线图,让低价一目了然 接口说明:通过接口可以拿到整个平台&#xff0…

Tomcat源码:Container接口

参考资料: 《Tomcat - Request请求处理: Container设计》 《Tomcat - Container容器之Engine:StandardEngine》 前文: 《Tomcat源码:启动类Bootstrap与Catalina的加载》 《Tomcat源码:容器的生命周期管理与事件监…

matplotlib绘图看这篇就够了

导入matplotlib第三方库此外,在matplotlib中我们可以只输入y轴,即为只输入一个数组我们也可以输出,x不为必要条件。而且也可以使用plt.xticks()函数进行设置x轴的label。import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [Si…

注意力机制中Q和K相乘的意义是什么?为什么Q和K相乘就可以得到它们之间的相似性/权重矩阵呢?

为什么query和key相乘就能得到学生和教师的相似度呢?它的内部原理是什么? 在注意力机制中,query 和 key 相乘得到的相似度其实是通过计算两个向量之间的点积来实现的。具体而言,我们将 query 和 key 进行点积运算后【这里的点积运算可以看作…

从C出发 23 --- 函数专题练习

A:我们可以将 main 理解为操作系统调用的函数,操作系统运行一个应用程序时,就去调用这个应用程序里面的main函数 B: 函数中只能定义变量,定义的变量叫局部变量 C: 从操作系统的角度来看 C 并不一定正确,因为从技术角…

Cadence OrCAD Capture 层次化电路设计展开的方法

🏡《总目录》   🏡《宝典目录》   🏡《上级目录》 目录1,概述2,展开方法3,总结B站关注“硬小二”浏览更多演示视频 1,概述 典型的层次化设计是指顶层模块中,调用1个电路模块超过…

Java中的并发容器

Java 中的 并发容器 1.List 类 list类 线程安全的主要有 Vector 与 CopyOnWriteArrayList a). Vector Vector 相当于在 原有 ArrayList类的基础上将所有方法 变成同步方法 同样的操作还有 Collections.synchronizedList() 方法,将原有Lis…

自训练Self-Training学习总结

一、自训练(Self-training) Self-training是最简单的半监督方法之一,其主要思想是找到一种方法,用未标记的数据集来扩充已标记的数据集。算法流程如下: 首先,利用已标记的数据来训练一个好的模型&#xf…

ch04-损失优化

ch04-损失优化0.引言1.权值初始化1.1. 梯度消失与爆炸1.2. Xavier 初始化1.3. Kaiming 初始化1.4. 常用的权值始化方法1.5. nn.init.calculate_gain1.6. 总结2.损失函数 (一)2.1. 损失函数的概念2.2. 交叉熵损失函数 nn.CrossEntropyLoss2.3. NLL/BCE/BCEWithLogits Loss2.4. 总…