JavaEE 网络原理

JavaEE 网络原理

文章目录

  • JavaEE 网络原理
    • 1. 网络互连
      • 1.1 局域网LAN
      • 1.2 广域网WAN
    • 2. 网络通信基础
        • 2.1 IP地址
        • 2.2 端口号
    • 3. 网络协议
        • 3.1 概念
        • 3.2 五元组
        • 3.3 协议分层
        • 3.4 TCP/IP 五层模型
        • 3.5 封装和分用

1. 网络互连

随着时代的发展,需要多个计算机协同工作来完成业务的要求越来越多,也因此诞生了网络互连

网络互连:将多台计算机连接在一起,完成数据共享

根据网络互联的规模不同,可以划分为局域网和广域网

1.1 局域网LAN

局域网,即Local Area Network,简称LAN

Local即标识了局域网是本地,局部组建的一种私有网络

局域网内的主机之间能方便的进行网络通信,又称内网;局域网和局域网之间在没有连接的情况下是无法通信的。

局域网组建网络的方式可分为以下几种:

在这里插入图片描述

1.2 广域网WAN

广域网,即Wide Area NetWork,简称WAN

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网

在这里插入图片描述

如果有北、中、南等分公司,甚至海外分公司,把这些分公司以专线方式连接起来,即称为“广域网”。如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。

2. 网络通信基础

网络互连的目的是进行网络通信,也可认为是网络数据传输,更具体一点,是网络主机中的不同进程间基于网络传输数据

在此情况下,以下两个标识在网络通信中显得尤为重要:

2.1 IP地址

概念

IP地址用于定位主机的网络地址,就像我们发送快递一样,寄件人需要有一个地址来寄出货物(源IP),收件人也要有一个地址来接受货物(目的IP

格式

IP地址是一个32位的二进制数,通常用 “点分十进制” 的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)。如:127.0.0.1

2.2 端口号

概念

端口号用于定位主机的进程。类似发送快递时,不关需要指定收获地址(JP地址),还需要指定收货人(目的端口号),并且在网络通信中,即要有目的端口,还要有源端口

格式

端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接受网络数据

有了以上两个标识,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输的,如何告诉对方发送的数据是什么样的?又是什么类型的数据呢?

对此,基于网络数据传输,需要使用协议来规定双方的数据格式

3. 网络协议

3.1 概念

网络协议,简称协议,网络协议是网络通信(即网络数据传输)**经过的所有网络设备都必须共同遵守的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。协议(protocol) 最终体现为在网络上传输的数据包的格式

计算机之间的传输媒介是光信号和电信号。通过“频率” 和 “强弱” 来标识 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式,大家都来遵守,这就是网络协议

3.2 五元组

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

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接受数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

在这里插入图片描述

五元组在网络通信中的作用,类似于发送快递:

在这里插入图片描述

可以在cmd中,输入 netstat -ano 查看网络数据传输中的五元组信息:

在这里插入图片描述

3.3 协议分层

协议分层就是把一个复杂的协议拆分成多个不同层次的协议,把功能定位相似的协议放到同一层中,使得上层协议能够调用下层协议封装好的功能,下层协议给上层协议提供服务,同时只有相邻的层次之间可以进行沟通,不能跨层次调用

这样的协议分层也给我们带来了许多好处:

  1. 上层协议直接使用下层协议即可,不需要了解下层协议的细节(相当于下层协议把细节封装好了)

    在这里插入图片描述

  2. 某一层的协议进行替换之后,对其他层没什么影响

    在这里插入图片描述

3.4 TCP/IP 五层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇

TCP/IP 通讯协议采用了五层的层级结构,每一次都呼叫它的下一层所提供的网络来完成自己的需求:

  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。

  • 传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发 送到目标主机。

  • 网络层: 负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。

  • 数据链路层: 负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。 有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。

  • 物理层: 负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采的的同 轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理 层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

    在这里插入图片描述

我们可以把网络通信在这五层模型上的传输步骤和我们平时网购相关联:

我在京东上买了一个鼠标,等我拿到这个鼠标后要用来干什么,解决什么问题,这是应用层的事情,即应用层负责拿到数据之后要用来干啥

快递从哪里寄出,又寄到哪里去,起点和终点在哪里,这是传输层关注的,即传输层负责关注网络数据包的起点和终点

有了起点和终点后,要走哪条路将快递从起点运送到终点,这是网络层负责的,即网络层负责路径规划

确定路线后,我要以什么方式来进行运输,比如从上海到广州用飞机空运,从广州到深圳用货车运输等,这是数据链路层负责的,即数据链路层负责两个相邻节点之间的传输

通信过程中的基础设施如公路、铁路、航线等,这一块由物理层负责,即物理层负责硬件措施

OSI七层模型相对复杂且不实用,一般实际组建网络使用TCP/IP 五层模型来实现,这里不过多解释

3.5 封装和分用
  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment), 在网络层叫做数据报(datagram), 在链路层叫做帧(frame);

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

    例如,数据到传输层时要给应用数据(载荷)加上TCP报头,构成TCP数据包;而到了网络层就要给此时的TCP数据包加上IP报头,构成IP数据包;之后到数据链路层又要给IP数据包首尾各加上以太网帧头和以太网帧尾,构成以太网数据帧,之后在物理层把以太网数据帧这样的二进制结构数据转换成光信号/电信号/电磁波然后进行发送,这样我们的数据才算发送出去了!

    在这里插入图片描述

  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息;

  • 数据封装成帧后发送到传输介质上,到达目的主机后每层协议在剥削掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理,这个过程就叫做分用,可以理解为封装的反过程。

    在这里插入图片描述

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

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

相关文章

砝码法律咨询公司:创始人的智慧与团队的力量

在法律服务领域,有这样一支团队,他们以其独特的视角和专业的服务,正在逐渐改变着人们对家庭法律服务的认识。他们就是天津砝码法律咨询公司的团队,由一群对法律充满热情的专业人士组成,以其创始人的智慧为引领,致力于为家庭提供全面的法律服务。本篇新闻稿将深入介绍砝码法律的…

Pix2Pix理论与实战

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 我的环境: 1.语言:python3.7 2.编译器:pycharm 3.深度学习框架Pytorch 1.8.0cu111 一、引入 在之前的学习中,我们知道…

Haar小波下采样模块

论文原址:Haar wavelet downsampling: A simple but effective downsampling module for semantic segmentation - ScienceDirect 原文代码:HWD/HWD.py at main apple1986/HWD (github.com) 介绍 深度卷积神经网络 (DCNN) 通…

搞定ESD(九):静电放电之PCB设计

文章目录 一、PCB叠层设计优化ESD性能1.1 PCB叠层设计对ESD性能影响机理分析1.2 PCB叠层设计优化改善ESD问题案例二、PCB布局设计优化ESD性能2.1 PCB布局静电放电案例(一)2.2 PCB布局静电放电案例(二)三、PCB布线设计优化ESD性能3.1 环路面积最小化设计3.1.1 芯片供电电源滤…

springboot中一些注解

springboot中一些注解 1:项目启动时会去扫描启动的注解,一般是启动时就想要被加载的方法: 2:springBoot中MSApplication启动类的一些其他注解: EnableAsync:这是一个Spring框架的注解,它用于开启方法异步调用的功能。当…

2017年认证杯SPSSPRO杯数学建模B题(第一阶段)岁月的印记全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 跨年龄人脸识别模型的建立与分析 B题 岁月的印记 原题再现: 对同一个人来说,如果没有过改变面容的疾病、面部外伤或外科手术等经历,年轻和年老时的面容总有很大的相似性。人们在生活中也往往能够分辨出来两…

2.【SpringBoot3】用户模块接口开发

文章目录 开发模式和环境搭建开发模式环境搭建 1. 用户注册1.1 注册接口基本代码编写1.2 注册接口参数校验 2. 用户登录2.1 登录接口基本代码编写2.2 登录认证2.2.1 登录认证引入2.2.2 JWT 简介2.2.3 登录功能集成 JWT2.2.4 拦截器 3. 获取用户详细信息3.1 获取用户详细信息基本…

爬虫小案例—雪球网行情中心板块数据抓取

雪球网行情中心网址:https://xueqiu.com/hq 目标:市场一览板块、热股榜板块、新股预告板块、关注排行榜板块 源代码如下: import datetimeimport requestsheaders {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKi…

一周时间,开发了一款封面图生成工具

介绍 这是一款封面图的制作工具,根据简单的配置即可生成一张好看的封面图,目前已有七款主题可以选择。做这个工具的初衷来自平时写文章,都为封面图发愁,去图片 网站上搜索很难找到满意的,而且当你要的图如果要搭配上文…

【JavaEE进阶】 关于⽇志框架(SLF4J)

文章目录 🌳SLF4j🌲⻔⾯模式(外观模式)🚩⻔⾯模式的定义🚩⻔⾯模式的优点 🍃关于SLF4J框架🚩不引⼊⽇志⻔⾯🚩引⼊⽇志⻔⾯ ⭕总结 🌳SLF4j SLF4J不同于其他⽇志框架,它不是⼀个真正…

构建高效外卖系统:技术实践与代码示例

外卖系统在现代社会中扮演着重要的角色,为用户提供了便捷的用餐解决方案。在这篇文章中,我们将探讨构建高效外卖系统的技术实践,同时提供一些基础的代码示例,帮助开发者更好地理解和应用这些技术。 1. 技术栈选择 构建外卖系统…

自动化运维神器—ansible详解

一、ansible简介 1.ansible定义 ansible是目前最受运维欢迎的自动化运维工具,基于Python开发,集合了众多运维工具(SaltStack puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功…

[Java并发基础]多进程编程

Java并发基础:多进程编程 在Java编程中,多进程编程是一种并发编程的方法,它允许我们同时执行多个独立的进程。每个进程都有自己的内存空间和执行环境,它们可以独立运行,相互之间不会干扰。 文章目录 Java并发基础&…

【算法详解】力扣415.字符串相加

一、题目描述 力扣链接:力扣415.字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串…

BP蓝图映射到C++笔记1

教程链接:示例1:CompleteQuest - 将蓝图转换为C (epicgames.com) 1.常用的引用需要记住,如图所示。 2.蓝图中可以调用C函数,也可以实现C函数 BlueprintImplementableEvent:C只创建,不实现,在蓝图中实现 B…

C++提高编程---模板---类模板

目录 一、类模板 1.模板 2.类模板的作用 3.语法 4.声明 二、类模板和函数模板的区别 三、类模板中成员函数的创建时机 四、类模板对象做函数参数 五、类模板与继承 六、类模板成员函数类外实现 七、类模板分文件编写 八、类模板与友元 九、类模板案例 一、类模板 …

373. 查找和最小的 K 对数字

373. 查找和最小的 K 对数字 题目链接:373. 查找和最小的 K 对数字 代码如下: //参考leetcode官方题解:https://leetcode.cn/problems/find-k-pairs-with-smallest-sums/solutions/1208350/cha-zhao-he-zui-xiao-de-kdui-shu-zi-by-l-z526 …

软件测试的需求人才越来越多,为什么大家还是不太愿意走软件测试的道路?

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

【ARMv8M Cortex-M33 系列 5 -- RT-Thread .rti_fn 段简介】

文章目录 .rti_fn 段的作用 .rti_fn 段的作用 在 RT-Thread 实时操作系统中,.rti_fn 代码段通常用于存放初始化函数。RT-Thread 的启动过程中包括了一系列的初始化步骤,这些初始化函数被分配到特定的代码段中,以便操作系统在启动时按照预定的…

【动态规划】【C++算法】801. 使序列递增的最小交换次数

作者推荐 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 本文涉及知识点 动态规划汇总 数组 LeetCode801使序列递增的最小交换次数 我们有两个长度相等且不为空的整型数组 nums1 和 nums2 。在一次操作中,我们可以交换 nums1[i] 和 num…