网络初识--Java

news2024/12/25 1:30:31

一、网络通信基础

1.IP地址

IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主 机的⽹络地址。
就像我们发送快递⼀样,需要知道对⽅的收货地址,快递员才能将包裹送到⽬的地。
综上所述 IP地址是标识网络一台设备所在的位置。

2.端口号

我们知道一台主机上可能会有多个程序来同时使用网络,端口号就是用来区分一台主机上的多个程序的。简单来说:端口号就是用来定位主机上的进程的。

二、认识协议

网络协议就是通信双方用于发送/接受数据格式的约定。

协议最终体现在网络中传输数据包的格式。(值得注意的是在网络通信中 协议是非常关键的)

1.五元组

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

1.源IP:标识源主机

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

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

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

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

2.协议分层

由于网络通信这个过程非常复杂,如果我们设计一个协议,完成网络通信中方方面面的问题,势必会使这个协议非常复杂,非常庞大。

所以我们选择拆分这种做法,把一个大的协议拆成若干个小的,功能单一协议,这么做又会导致拆完后的协议太多了,甚至会有几十上百个。所以我们将这些小的协议归类,引入分层这个概念。

协议分层:只有相邻两层的协议可以进行交互。上层协议可以调用下层协议。下层协议可以给上层提供服务。(协议之间的交互不能跨层进行)

这样做的好处在于:

1.上层协议不需要了解下层协议的细节

2.分层之后,灵活的替换其中的某一层,对于整体的工作过程影响很小。

1.OSI七层网络模型

但是这一套分层的体系过于复杂,实际真实的网络分层方式是更简化的。 

2.TCP/IP五层(四层)协议模型

 应用层应用程序之间的沟通
 传输层两个任意设备之间的通信(不考虑中间过程,只考虑起点和终点)
 网络层两个任意设备直接如何进行通信(这两个设备之间可能隔着很多的交换机和路由器)
数据链路层完成两个相邻的设备之间如何进行通信的(通过网线把电脑连到交换机|路由器上)
  物理层规定了网络通信的一些硬件设施符合的要求

有些资料把物理层和数据链路层看作一个整体。 

 主机: 工作过程涉及到 从物理层-->应用层

 路由器 :  工作过程涉及到 从物理层--.>网络层

 交换机:  工作过程涉及到 从物理层-->数据链路层

三、网络数据通信的基本流程

网络传输的数据,本质上都是“字符串”或者“二进制的bit流”

例如我们通过 qq 发送hello给对方

1.应用程序获取到用户输入,构造一个应用层的数据包。这个应用层数据包就会遵守应用层协议(往往是开发这个程序的程序员自己定义的(此处假设这样的协议格式:发送者的qq,消息的时间,消息正文))。

2.应用程序调用 传输层提供的接口(API),把数据交给传输层,传输层拿到数据之后,构造出“传输层数据包”。传输层的协议主要是:TCP UDP

3.传输层构造好数据后,继续调用网络层的API,把传输层的数据包交给网络层,网络层继续进行处理。   网络层最主要的协议:IP协议

4.IP协议继续调用数据链路层的API,把IP数据包交给数据链路层。

数据链路层中核心协议: “以太网”

5.以太网会继续把这样的数据交给硬件设备(网卡)网卡会把上述二进制数据,最终以 光信号/电信号/电磁波信号传播出去。

从上层到下层,数据都要进一步加工(添加报头)这个过程就叫做封装

分用,数据到达接收方主机,逐层进行解析

1.数据到达接收方网卡,光电信号,网卡把光电信号还原成二进制0101,把二进制数据交给上层数据链路层。

2.数据链路层按照以太网协议解析,把报头和报尾取出来,剩下的载荷往上传递给网络层。

3.网络层拿到这个数据之后按照IP协议的格式解析,再把载荷数据交给传输层。

4.传输层拿到数据后按照TCP协议来解析,取出载荷,交给应用层。

5.qq应用程序,解析应用层数据,拿到关键信息展示到页面上。

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

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

相关文章

Linux软件包管理与Vim编辑器使用指南

目录 一、Linux软件包管理器yum 1.什么是软件包? 2.什么是软件包管理器? 3.查看软件包 4.安装软件 ​编辑 5.卸载软件 Linux开发工具: 二、Linux编辑器---vim 1.vim的基本概念 (1) 正常/普通模式(Normal mode&#xff0…

标准库 -- 为什么 EXTI中断需要使能复用时钟与为什么不需要使能?

在STM32中,使用外部中断(EXTI)时需要使能复用功能,这和其他中断(如串口中断、定时器中断)有所不同。以下是为什么在使用外部中断时需要使能复用,以及其他中断不需要复用的原因。 一、为什么 EX…

深入理解ECDSA:椭圆曲线数字签名算法的原理与应用

目录 引言一、什么是ECDSA二、ECDSA的基本原理三、椭圆曲线四、ECDSA签名生成过程1、 生成私钥和公钥2、签名3、签名对的保存 五、ECDSA签名验证过程六、ECDSA的安全性七、篡改的消息如何被检测到八、 为什么B能够知道篡改?九、python代码示例总结 引言 在数字通信…

rocketmq——docker-compose安装

rocketmq安装 创建文件夹,这里我们分别部署namesrv和broker 1、namesrv.conf listenPort98762、broker.conf # 所属集群名字 brokerClusterNameDefaultCluster # broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.propert…

微积分复习笔记 Calculus Volume 1 - 5.5 Substitution

5.5 Substitution - Calculus Volume 1 | OpenStax

初试js反混淆

一、目标 ​ 最近js玩的花样越来越多了,本来简洁方便的一门开发语言,现在混淆的一塌糊涂。今天我们就介绍几种常见的反混淆方案。 混淆的本质就是等价替换,把 a 12 ,替换成 a 100 - 8 5 - 15 - 70。 把 “push” 替换成 “\u0070\u0075…

基于微信小程序的乡村研学游平台设计与实现,LW+源码+讲解

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

odoo17 前端 在头像下拉 dropdown 自定义菜单

odoo17 前端 在头像下拉 dropdown 自定义菜单 其实很简单, 我们先找到原来已经创建好的, 找到代码位置 使用 我的资料 为例 odoo-17.0\addons\hr\static\src\user_menu\my_profile.js /** odoo-module **/import { _t } from "web/core/l10n/translation"; import …

【解决】Layout 下创建槽位后,执行 Image 同步槽位位置后表现错误的问题。

开发平台:Unity 6.0 编程语言:CSharp 编程平台:Visual Studio 2022   一、问题背景 | 开发库存系统 图1 位置同步失败问题 图2 位置正常同步效果表现 黑框 作用于 UnityEngine.UI.GridLayoutGruop,形成 4x6 布局,如…

2023年MathorCup数学建模B题城市轨道交通列车时刻表优化问题解题全过程文档加程序

2023年第十三届MathorCup高校数学建模挑战赛 B题 城市轨道交通列车时刻表优化问题 原题再现: 列车时刻表优化问题是轨道交通领域行车组织方式的经典问题之一。列车时刻表规定了列车在每个车站的到达和出发(或通过)时刻,其在实际…

07-案例-图书管理

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

vue 依赖注入(Provide、Inject )和混入(mixins)

Prop 逐级透传问题​ 通常情况下,当我们需要从父组件向子组件传递数据时,会使用 props。想象一下这样的结构:有一些多层级嵌套的组件,形成了一棵巨大的组件树,而某个深层的子组件需要一个较远的祖先组件中的部分数据。…

九州未来再度入选2024边缘计算TOP100

随着数智化转型的浪潮不断高涨,边缘计算作为推动各行业智能化升级的重要基石,正在成为支持万物智能化的关键点。近日,德本咨询(DBC)联合《互联网周刊》(CIW)与中国社会科学院信息化研究中心(CIS),共同发布《2024边缘计算TOP100》榜…

git相关知识

前言:在学习git之前首先需要了解几个概念:工作区,暂存区,版本库。 工作区:是电脑上写代码或者文件的目录。 暂存区:一般存放在.git目录下的index中,也称索引。(git add&#xff09…

应用程序部署(IIS的相关使用,sql server的相关使用)

数据服务程序(API)部署 1、修改配置文件 打开部署包中的web.config配置文件,确认数据库登录名和密码正确 修改ip为电脑IP(winR输入cmd,输入ipconfig,IPv4对应的就是本机IP) 2、打开IIS&#x…

conda和conda的常用命令

目录 一、什么是conda 1. conda的定义和作用 2. conda的特点 3. conda与pip的区别 二、conda的常用命令 1. 环境管理 2.包管理 3. 查看信息 4. 清理和维护 5. 频道(channel)管理 6. 导出和复制环境 7. 加速相关(镜像) 一、什么是conda 1. conda的定义和作用 2. co…

mysql每日一题(上升的温度,date数据的计算)

日期之间的运算 日期类型的加法运算 data_add(now_data,interval 1 month) select date_add(now(), interval 1 day); -- 加1天 select date_add(now(), interval 1 hour); -- 加1小时 select date_add(now(), interval 1 minute); -- 加1分钟 select date_add(now(), inter…

kafka生产经验——消费者事务

如果想完成Consumer端的精准一次性消费,那么需要Kafka消费端将消费过程和提交offset 过程做原子绑定。此时我们需要将Kafka的offset保存到支持事务的自定义介质(比 如MySQL)。这部分知识会在后续项目部分涉及。 事务的四大特征:AC…

2024 年 Apifox 和 Postman 对比介绍详细版

Apifox VS Postman ,当下流行的的两款 API 开发工具,2024 版对比!

Rust @绑定(Rust@绑定)(在模式匹配的同时将值绑定到变量)

文章目录 Rust中的绑定基础概念示例:基本模式匹配 绑定的使用示例:范围匹配并绑定变量 深入探索绑定的好处示例:复杂数据结构中的应用 总结 附加 Rust中的绑定 Rust 语言以其强类型系统和内存安全的特性著称。在进行模式匹配时,R…