Java网络编程(上)

White graces:个人主页

🙉专栏推荐:Java入门知识🙉

🙉 内容推荐:Java文件IO🙉

🐹今日诗词:来如春梦几多时?去似朝云无觅处🐹


⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏

⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏


目录

网络编程

前置知识

局域网

广域网

IP地址

端口号

网络协议

协议分层

TCP/IP五层模型

1. 物理层

2. 数据链路层

3. 网络层

4. 传输层

总结

5. 应用层

网络封装

应用层封装

序列化和反序列化

传输层封装

网络层封装

数据链路层封装

物理层

网络分用

美图分享


网络编程

前置知识

局域网

俗称LAN, 将不同的主机设备连接在一起就构成了局域网

广域网

俗称WAN, 通过路由器将多个局域网连接在一起就构成了广域网

IP地址

人类有家庭住址, IP地址就是用来表示主机在网络中的地址

格式: 是一个32位的二进制数通常被分成4部分, a.b.c.d这种形式

如果每一部分用十进制表示, 这种表示方法被称为: 点分十进制

端口号

端口是用来定位主机每个进程的位置. 如果IP地址是你的快递地址,那么端口号就是你的个人信息

网络协议

协议: 网络协议是所有网络设备都遵守的规则, 比如如何建立连接,如果相互识别

如果不遵守这个协议可能会出现驴头不对马嘴的情况:

比如对暗号,我说米西米西,你说滑不拉几,暗号对接成功,说明你是我要找的人

识别不成功就不能正常通信

因此需要一个协议来指定规则

协议分层

如果用一个协议去约束所有主机, 那么这个协议就会非常庞大, 因此要对协议进行拆分

常见的协议模型有两种: OSI七层模型和TCP/IP五层(四层)模型

由于OSI七层模型只存在于实验室的理论中, 所以我们主要学习TCP/IP五层模型

TCP/IP五层模型

TCP/IP五层模型是哪五层呢?

1. 物理层

物理层面上的约定, 比如网口网线等物理设备, 使用统一的规格

2. 数据链路层

数据链路层网络层传输层放在一起解释

数据链路层: 关注两个相邻节点之间的通信

3. 网络层

网络层: 关注的是,通信路径的规划, 路径决定了数据要经过哪些节点, 因此网络层也被称为点到点的传输

4. 传输层

 传输层: 关注的是, 通信双方的起点和终点, 也被称为端到端的传输

举个例子解释上面三层模型, 比如网购

传输层

快递包裹上会写着收件人的地址号码, 也写着发件人的地址号码(用于退快递), 

商家和用户只需要知道双方的地址就可以, 不需要关注快递如何发送, 只关注起点和终点(传输层).

网络层

发送包裹, 快递公司会把路线规划好,比如路线1: 上海->无锡->西安, 路线2: 上海->南京->西安,

路线3: 上海->徐州->西安. 规划好路线快递就会按照既定路线传输. 

数据链路层

路线规划好了, 接下来就是运送快递, 比如上海->苏州->南京->西安这个路线, 上海->苏州采用卡车运送, 苏州->南京轮船运输, 南京->西安火车运输, 关注的是两个节点之间的传输 

总结

细节程度: 

传输层: 只关注通信双方(最不细节)

网络层: 通信路径的规划(细节程度一般)

数据链路层: 相邻节点之间的通信(细节程度最高)

5. 应用层

应用层: 和具体应用程序相关, 关注应用程序如何使用数据

有的人也叫TCP/IP四层, 物理层和数据链路层可以合并

经典面试题: 

路由器工作在网络层

交换机工作在数据链路层

网络封装

应用层封装

这里的封装不是Java语法中的封装了, 这里是根据网络协议对数据进行封装

网络上传输的数据是二进制数据

比如A通过QQ向B发送hello world

这些数据都要通过网络传输, 比如发送人接收人消息内容时间内容,这些数据就需要通过应用层协议组装起来

序列化和反序列化

实际上通过协议封装数据过程更加复杂
qq发送的是一个包含很多属性字段的结构化数据
将结构化的数据转化成二进制数据的过程叫做序列化
将二进制数据转化成结构化数据叫反序列化

传输层封装

经过应用层协议封装得到应用层数据包, 接下来就是手动调用系统API(socket)对应用层数据包进行封装, 

得到传输层数据包, 传输层常用UDP协议和TCP协议对应用层数据包封装

这里假设是UDP协议封装

网络层封装

得到传输层数据包后, 系统会自动调用操作系统内核中的API对传输层数据包进行封装

这里常见的协议是IP协议

数据链路层封装

得到IP数据包后, 操作系统内核就会进一步调用数据链路层的API封装

数据链路层的协议一般是以太网

物理层

到数据链路层都没有将数据发送出去, 真正发送数据是数据链路层数据包通过硬件设备将数据转换成光信号/电信号/电磁波发送出去, 发送并不是直接发给接收人中间可能经过了很多的交换坤和路由器

上述数据经过层层添加报头和数据帧的过程就叫做封装

网络分用

分用: 其实就是拆包的过程

接受到物理信号后, 物理层会将数据转换成二进制数据, 然后交给数据链路层处理

数据链路层将帧头帧尾之间的数据交给网络层处理, 网络层将IP数据报的载荷交给传输层,

传输层将传输层数据包的载荷(应用层数据包)交给应用层, 应用层将解析的数据交给对应的应用程序, 应用程序按照规定的协议,(反序列化)解析拿到结构化的数据, 最后将内容显示出来, 这个过程就是分用

物理信号经过交换机和路由器的时候也会进行封装分用

交换机封装分用到数据链路层(交换机工作在数据链路层)

路由器封装分用到网络层(路由器工作在网络层)


美图分享

✨🎆谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"🎆✨🎄

⭐️点赞收藏加关注,学习知识不迷路⭐️

🎉✔️💪🎉✔️💪🎉✔️💪🎉✔️💪🎉

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【前缀和 记忆化搜索】LeetCode1444. 切披萨的方案数

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 动态规划 记忆化搜索 LeetCode1444. 切披萨的方案数 给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: ‘A’ &#xff…

【ARM-Linux篇】u-boot编译

嵌入式Linux系统和PC完整的操作系统的对比如下: 一、u-boot简介 uboot是一种通用的引导加载程序,它可以用于多种嵌入式系统,支持多种操作系统,如Linux, Android,NetBSD等。uboot的主要作用是将操作系统内核从存储设备&#xff08…

【Leetcode笔记】40.组合总和II

1. 题目要求 这道题目和39.组合总和不一样的地方在于:数组中含有相同的元素。同样地,结果不能含有重复组合。 拿第一个示例来看, candidates [1, 1, 2, 5, 6, 7, 10]问题在于:第一个path[1(index 0), 2],绝不能出现…

mysql实战——mysql主从复制管理

一、常见的管理操作 1、查看主库状态 show master status 2、查看从库复制的状态 show slave status 3、在主库上查看从库ip和端口信息 show processlist show slave hosts 4、reset slave、reset master、reset slave all 1、reset master 该命令会执行以下操作&#xff…

JS对象由浅入深

对象 对象(Object):JavaScript里的一种数据类型(引用类型),也是用于存储数据的 好处:可以用来详细的描述某个事物,是用键值对形式存储语义更明了 特点:对象数据是无序的&…

C++程序命令行参数学习

argc是参数个数&#xff1b; argv[0]是程序名&#xff0c;argv[1]是第一个参数&#xff1b; 如果输入osgptr1 x &#xff0c;osgptr1是程序名&#xff0c;argc是2&#xff1b; 不算程序名&#xff0c;实际的参数个数是argc-1&#xff1b; #include <iostream>using …

Microsoft Fabric 是什么?

最近半个月没有更新内容&#xff0c;原因是什么呢&#xff1f; 原因是花了两周的时间备考了一下"Microsoft Certified: Fabric Analytics Engineer Associate"的考试认证。 非常幸运考试通过了。 那什么是Microsoft Fabric 呢&#xff1f; Microsoft Fabric 是一个…

统信UOS SSH服务升级(ubuntu20)内网

服务器配置 系统信息 SSH版本 目标版本 openssh-server_8.2p1-4_arm64.deb 因为不通互联网&#xff0c;所以所有deb包需要手动下载&#xff08;可以连接互联网的可以自动忽略手动下载deb步骤&#xff0c;直接apt-get install xxx 即可&#xff09; 升级步骤 !!!deb下载方式…

Vue.js - 生命周期与工程化开发【0基础向 Vue 基础学习】

文章目录 Vue 的生命周期Vue 生命周期的四个阶段Vue 生命周期函数&#xff08;钩子函数 工程化开发 & 脚手架 Vue CLI**开发 Vue 的两种方式&#xff1a;**脚手架目录文件介绍项目运行流程组件化开发 & 根组件App.vue 文件&#xff08;单文件组件&#xff09;的三个组成…

【JMeter接口自动化】第2讲 Jmeter目录结构

JMeter的目录结构如下&#xff1a; bin目录&#xff1a;可执行文件目录&#xff0c;启动jmeter时&#xff0c;就是启动bin目录下的ApacheJmeter.jar&#xff0c;jmeter.bat&#xff0c;jmeter.sh ApacheJmeter.jar:启动文件 jmeter.bat&#xff1a;Windows 的启动命令。 jmeter…

【Leetcode每日一题】 综合练习 - 组合(难度⭐⭐)(78)

1. 题目解析 题目链接&#xff1a;77. 组合 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 题目要求我们从 1 到 n 的整数集合中选择 k 个数的所有组合&#xff0c;且组合中的元素不考虑顺序。这意味着集合 [1, 2] 和…

控制障碍函数CBF详解(附带案例实现)

控制障碍函数CBF详解&#xff08;附带案例实现&#xff09; 文章目录 控制障碍函数CBF详解&#xff08;附带案例实现&#xff09;1. Control Affine System2. Lyapunov Theory, Nagumos Theory, Invariance Principle3. Control Lyapunov Function (CLF) and CLF-QP4. Control …

Nginx实战:LUA脚本_环境配置安装

目录 一、什么是LUA脚本 二、Nginx中的LUA脚本 1、主要特点 2、用途 三、如何在nginx中使用LUA脚本 1、原生nginx 2、OpenResty 3、nginx lua配置验证 一、什么是LUA脚本 Nginx Lua 脚本是 Nginx 与 Lua 语言集成的结果&#xff0c;它允许你使用 Lua 语言编写Nginx 模块…

521源码-源码下载-个人网盘源码2024最新web网盘系统源码一键安装版源码分享

主要功能&#xff1a; 1.支持用户管理系统。支持用户注册功能&#xff08;后台可关闭&#xff09;&#xff0c;管理可为每个用户分配一定数额的存储空间&#xff0c;还可以限制单个上传文件大小。 2.支持管理员查看每个会员的文件上传、分享情况&#xff0c;可对用户文件进行删…

YOLOv8 多种任务网络结构详细解析 | 目标检测、实例分割、人体关键点检测、图像分类

前言 本文仅根据模型的预测过程&#xff0c;即从输入图像到输出结果&#xff08;图像预处理、模型推理、后处理&#xff09;&#xff0c;来展现不同任务下的网络结构&#xff0c;OBB 任务暂不包含。 Backbone 1. yolov8m 2. yolov8m-p2 3. yolov8m-p6 4. 细节 图中 CBS Con…

2024 HN CTF WebMisc 部分 wp

Web ez_tp 判断是thinkphp 3.2 参考官方手册:https://www.kancloud.cn/manual/thinkphp/1697 判断路由模式 URL_CASE_INSENSITIVE > true, // 默认false 表示URL区分大小写 true则表示不区分大小写URL_MODEL > 1, // URL访问模式,可选参数0、1、…

【Linux-buildroot,】

Linux-buildroot, ■ buildroot■ 1、简介■ 2、下载■ 2、编译■ 问题一&#xff1a;buildroot 编译的时候会先从网上下载所需的软件源码&#xff0c;下载cmake-3.8.2.tar.gz或下载很慢的情况 ■ buildroot-构建根文件系统■ 1、配置 buildroot■ 2、■ 3、 ■ buildroot-构建…

velero实现备份还原

Velero 是一个开源的 Kubernetes 集群备份和恢复工具&#xff0c;它允许用户轻松安全地备份和恢复他们的 Kubernetes 资源和持久化卷。Velero 由 Kubernetes 的原生 API 驱动&#xff0c;并且与云服务提供商紧密集成&#xff0c;以支持不同的存储解决方案。 helm values文件地…

驾校无线监控系统:实现智能化、数字化与网络化的新篇章

随着科技的飞速发展&#xff0c;无线监控系统在各行各业的应用日益广泛。在驾校领域&#xff0c;无线监控系统的引入不仅提升了学员的学习体验&#xff0c;还显著提高了驾校的管理效率和综合水平。本文将详细探讨驾校无线监控系统的功能、优势及其在提升驾校管理水平方面的具体…

如何看待时间序列与机器学习?

GPT-4o 时间序列与机器学习的关联在于&#xff0c;时间序列数据是一种重要的结构化数据形式&#xff0c;而机器学习则是一种强大的工具&#xff0c;用于从数据中提取有用的模式和信息。在很多实际应用中&#xff0c;时间序列与机器学习可以结合起来&#xff0c;发挥重要作用。…