【Java】初识网络编程

文章目录

  • 前言
  • ✍一、互联网的发展
    • 1.独立模式
    • 2.网络的出现
      • 局域网LAN
      • 广域网WAN
  • ✍二、网络编程概述
  • ✍三、网络编程中的术语介绍
    • IP地址
    • 端口号
    • 协议
    • OSI七层模型
    • TCP\IP四层模型
  • ✍四、协议的层级之间是如何配合工作的

前言

在这里插入图片描述

在本文中,会对网络编程的一些术语进行解释,例如什么是IP,什么是协议,什么是端口号。并且会对计算中各个协议的交互有一个初步的介绍

✍一、互联网的发展

1.独立模式

最开始时,计算机之间是相互独立的,每个计算机中的数据不能互通,想要对不同的数据进行操作,就需要到存储该数据的计算机上进行操作,非常麻烦。

2.网络的出现

随着时代的发展,越来越需要计算机之间相互通信,共享软件数据,就有了网络互联

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

数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。
根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。

局域网LAN

局域⽹,即 Local Area Network,简称LAN。

Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。

局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。

局域⽹组建⽹络的⽅式有很多种:

  1. 网线直连
    在这里插入图片描述

  2. 由集线器组建
    在这里插入图片描述

  3. 由交换机组建
    在这里插入图片描述

  4. 由交互机和路由器组建
    在这里插入图片描述

广域网WAN

⼴域⽹,即 Wide Area Network,简称WAN。

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

在这里插入图片描述

✍二、网络编程概述

计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络编程的目的:传播交流信息、数据交换、通信。

  1. 想要达到什么效果需要什么

  2. 如何准确定位网络上的某台主机。IP地址+端口。定位到计算机上的某个资源。
    找到这台主机,如何传输数据

✍三、网络编程中的术语介绍

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地址⽤于标识主机⽹络地址,端⼝号可以标识主机中发送数据、接收数据的进程。
简单说:端⼝号⽤于定位主机中的进程。
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)。

格式
端⼝号是0~65535范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收网络数据。

协议

协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。

协议(protocol)最终体现为在⽹络上传输的数据包的格式。

协议分层

在不同的机器上通过网络进行传输文件时,涉及到的操作非常多,非常复杂,如果使用单一的协议来对问题进行解决时,这个协议需要考虑的问题非常多,一旦某块出现问题,修改起来可能会涉及到别的部分。那么我们将解决一个问题需要的操作交给几个协议来完成,降低耦合,增强网络编程的健壮性

在这里插入图片描述
协议分层的优点

  1. 各层之间互相独立。
    每层不需要知道其他层是如何实现的,仅需要知道实现某个功能需要调用哪个api即可。
  2. 易于维护和实现。
    这种结构的存在使得处理一个复杂而庞大的问题变得更加容易,使整个系统分割成多个独立的小系统
  3. 灵活性好。
    当不需要某个功能时,可以删去实现该功能对应的层级,而其他层级的功能不受影响,
  4. 实现功能的标准化。
    在书写每一层的代码时,就会详细的给出该层对应的功能。

缺点
当然协议分层也存在着缺点

  • 由于分层过于严密,导致不能越级调用底层的接口,降低了开发的效率

OSI七层模型

OSI定义了网络互连的七层模型(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),如下图所示:
在这里插入图片描述

TCP\IP四层模型

在这里插入图片描述
在这里插入图片描述

  • 应用层(Application Layer)
    为应用程序或用户请求提供各种请求服务。 OSI参考模型最高层,也是最靠近用户的一层,为计算机用户、各种应用程序以及网络提供接口,也为用户直接提供各种网络服务。

  • 传输层(Transport Layer)
    数据通信。 建立主机端到端的链接,为会话层和网络层提供端到端可靠的和透明的数据传输服务,确保数据能完整的传输到网络层。

  • 网络层(Network Layer)
    IP选址及路由选择。 通过路由选择算法,为报文或通信子网选择最适当的路径。控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。

  • 数据链路层(Data Link Layer)
    提供介质访问和链路管理。 接收来自物理层的位流形式的数据,封装成帧,传送到网络层;将网络层的数据帧,拆装为位流形式的数据转发到物理层;负责建立和管理节点间的链路,通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。

  • 物理层(Physical Layer)
    管理通信设备和网络媒体之间的互联互通。 传输介质为数据链路层提供物理连接,实现比特流的透明传输。实现相邻计算机节点之间比特流的透明传送,屏蔽具体传输介质和物理设备的差异。

严格意义上只存在七层结构和四层结构,TCP/IP实际上是四层结构,包括应用层,传输层,网际层和网络接口层,我们常说的五层结构只具有教学意义,只是为了能讲清楚其中原理,实际上现实中并不存在五层结构。

✍四、协议的层级之间是如何配合工作的

简单来说,就是上层协议调用下层协议,下层协议服务于上层协议,也就是一个 封装与分用 的过程。

我们举例来说明这个过程究竟是怎样的

以A在抖音上向B发私信这个过程解释封装和分用的流程

  1. 应用层
    A于5月8日下午4:00抖音上向B发送“你好,可以加个微信吗?",
    在这里插入图片描述

抖音里会有一个应用层协议,会将要传输的 发送人、接受人、发送信息、发送时间等协议规定需求组织成一个字符串 ,注意:网络上传输的数据本质上是(二进制的)字符串(二进制的bit流)
A的账号ID为1685 B的账号ID为3694
"你好,可以加个微信吗?"转换成二进制为11100100 10111101 10100000 11100101 10100101 10111101 11101111 10111100 10001100 11100101 10001111 10101111 11100100 10111011 10100101 11100101 10001010 10100000 11100100 10111000 10101010 11100101 10111110 10101110 11100100 10111111 10100001 11100101 10010000 10010111 00001010

在这里插入图片描述
本身发送的是一个结构化的数据(包含很对属性,很多字段),但在计算机中传输就要转换成二进制序列,这个过程就叫做序列化
而由二进制序列转换成结构化的数据,这个过程叫做反序列化

以上应用层协议并非真实的,只是为了方便介绍举例而已,切勿当真!!!

不同应用的应用层协议不相同!!!

在应用层中,会将信息打包成”应用层数据包“,调用api传递给下层。

  1. 传输层
    已经有了”应用层数据包“,通过调用应用层(操作系统内核)的api(Socket api)将数据传递给应用层 (进入操作系统内核)
    在传输层拿到这个数据包后,会对这个数据包进行进一步的封装,构造成”传输层数据包“。
    在传输层中,有两个经典的协议:TCP、UDP
    假设此处是UDP协议
    就会在“应用层数据包”前增加一个“报头”
    在这里插入图片描述
    构造好“传输层数据包”之后,再次调用api来将“传输层数据包”交给网络层。
    这个过程同样是系统已经封装好api供我们使用,不需要关注其中的细节。
  2. 网络层
    网络层中典型的协议是IP协议
    在这里插入图片描述

注意:在对数据包进行封装时,他们并不关心数据包中是什么内容,只是简单的封装机器,添加好各自负责的报头,就继续调用下层api将其转递给下层

此时拥有了”网络层数据包“调用api将其传给”数据链路层“
4. 数据链路层
”数据链路层“在拿到数据包后,继续对数据包进行封装
”数据链路层“中一个经典的协议是 以太网
在这里插入图片描述

上述数据此时已经进入到网卡驱动中了,接下来就要真正的发送出去了

  1. 物理层

以太网数据帧,本质上还是“二进制序列”
硬件设备要将 二进制数据转换成 光信号\电信号\电磁波、才会真正发送

上述层层的增加数据报头的操作就是封装

上述这些数据,并非是由A直接到B,而是先到达和A连接的交换机\路由器。
数据经过交换机\路由器一系列的转换后,最终才会到达B

在数据经过转换机\路由器后,数据又会经由一系列的转换(所谓的去报头)最终到达B
这个过程就是所谓的分用

分用

  1. 物理层
    物理层收到一系列光信号,把这些信号转换成0101的二进制数据,将这些二进制数据交给数据链路层
    在这里插入图片描述

  2. 数据链路层
    数据链路层通过以太网协议,对数据进行解析(这个过程就是针对报头的内容进行解析,例如拿到发送方和接收方的信息,),解析后拿到载荷,将载荷交给网络层
    在这里插入图片描述

  3. 网络层
    IP协议拿到了IP数据包,按照协议的格式,对数据包再进一步的解析,拿到载荷再传给下一层

  4. 传输层
    UDP拿到UDP数据包,再对数据包中的内容进一步解析,解析出一些信息(要交给哪个端口号)
    在这里插入图片描述

  5. 应用层
    qq拿到应用层数据包
    按照qq内部的协议,来进行解析,拿到结构化数据(也就是反序化)
    最后将这些结构化数据显示到界面上
    这时B就收到了来自A的”你好,可以加个微信吗?“
    自此爱情的齿轮就开转动!
    在这里插入图片描述


以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞

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

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

相关文章

动态规划——路径问题:931.下降路径最小和

文章目录 题目描述算法原理1.状态表示(经验题目)2.状态转移方程3.初始化4.填表顺序5.返回值 代码实现CJava 题目描述 题目链接:931.下降路径最小和 关于这⼀类题,看过我之前的博客的朋友对于状态表示以及状态转移是⽐较容易分析…

5分钟了解下HDFS

随着大数据时代的到来,传统的数据存储和管理方式已经无法满足日益增长的数据处理需求。HDFS(Hadoop Distributed File System)作为Apache Hadoop项目的一部分,以其高度的容错性、可扩展性和高吞吐量,成为了处理大规模数…

抖音APP运用的AI技术拆解

1.推荐系统(RS) 用户画像:根据用户的信息(如地区、性别、年龄、收藏、关注......)进行分析,构建用户画像,对用户进行分类; 行为分析:将用户的显形行为数据(如…

搜维尔科技:OptiTrack是基于LED墙虚拟制作舞台的最佳选择

OptiTrack因其绝对精度、易用性、可靠性以及与现场工具的完美集成而被选中&#xff0c;仍然是全球首屈一指的基于 LED 墙的虚拟制作舞台的选择。 当今虚拟制作阶段的低延迟、超精确摄像机跟踪标准 /- 0.2 毫米 位置精度1 < 10 毫秒 系统延迟 /- 0.1 度 旋转精度2 电影…

Linux 操作系统网络编程1

目录 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型 1.1.2 网络数据传输过程 2 传输层通信协议 2.1 TCP 2.1.1 TCP的3次握手过程 2.1.2 TCP四次挥手过程 2.2 UDP 3 网络编程的IP地址 4 端口 5 套接字 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型…

Linux cmake 初窥【3】

1.开发背景 基于上一篇的基础上&#xff0c;已经实现了多个源文件路径调用&#xff0c;但是没有库的实现 2.开发需求 基于 cmake 的动态库和静态库的调用 3.开发环境 ubuntu 20.04 cmake-3.23.1 4.实现步骤 4.1 准备源码文件 基于上个试验的基础上&#xff0c;增加了动态库…

优思学院|精益六西格玛黑带培训的内容有哪些?【附思维导图】

引言 在现代企业中&#xff0c;精益六西格玛黑带&#xff08;或称六西格玛黑带&#xff09;处于实施六西格玛方法的最前线。然而&#xff0c;他们的职责远不止执行者的角色。黑带既学习六西格玛的工具&#xff0c;又主导项目以改进绩效指标。在更长远的角度看&#xff0c;他们…

擎天科技与禅道合作,打造统一的项目管理平台

统一、全面的项目管理平台能够帮助企业优化管理流程&#xff0c;提升业务效率。擎天集团选择与禅道软件合作&#xff0c;打造统一的项目管理平台&#xff0c;在降低自研软件的研发成本、打破团队信息孤岛、保障数据全面性等方面效果显著&#xff0c;大大提高了团队沟通协作效率…

25852-47-5,MAc-PEG-MAc通常作为高分子材料的交联剂,以提高材料的力学性能和稳定性

【试剂详情】 英文名称 Methacrylate-PEG-Methacrylate&#xff0c;MAc-PEG-MAc 中文名称 甲基丙烯酸酯-聚乙二醇-甲基丙烯酸酯 CAS号 25852-47-5 外观性状 由分子量决定&#xff0c;固体或者液体。 分子量 0.4k&#xff0c;0.6k&#xff0c;1k&#xff0c;2k&#xf…

基于51单片机的温度检测自动调节设计—温度上下限报警自动控制

基于51单片机的温度自动调节 &#xff08;仿真&#xff0b;程序原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.DS18B20检测温度给单片机处理&#xff1b; 2.LCD1602显示实时温度、温度上下限&#xff1b; 3.三个按键可设置温度上下限&#xff1…

【项目】使用Yolov8 + tesseract 实现“营业执照”信息解析(OCR) + 输入可为图片或者pdf + 完整代码 + 整体方案 + 全网首发

本项目可用于毕业设计参考、实验等,营业执照分为横版和竖版,整体检测+识别效果如下所示: 说明:图片来源于网络,如有侵权,请联系作者删除。 目录

【JUC】并发编程 Synchronized 锁升级原理

Synchronized如何实现同步/互斥的效果&#xff1f; monitorenter&#xff1a; 将锁对象对象头中Mark Word的前30bit替换成指向操作系统中与其关联的monitor对象&#xff0c;将锁记录位状态改为10 monitorexit&#xff1a; 将锁对象对象头中Mark Word进行重置&#xff0c;重新恢…

蓝桥杯练习系统(算法训练)ALGO-946 Q神的足球赛

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 足球赛上&#xff0c;只见Q神如闪电般的速度带球时而左&#xff0c;时而右&#xff0c;时而前&#xff0c;时而后&#xff…

第二证券|摘星脱帽行情火爆 超40只ST股候场

5月8日&#xff0c;ST中嘉、*ST明诚强势涨停&#xff0c;2家公司年内均请求吊销危险警示。其间ST中嘉自4月29日以来&#xff0c;已接连录得5个涨停板&#xff1b;*ST明诚自4月23日以来9个交易日录得8个涨停板。 年报季向来是几家欢喜几家愁的时间&#xff0c;有公司披星戴帽&a…

【优选算法】——Leetcode——LCR 179. 查找总价格为目标值的两个商品

1.题目 2. 解法⼀&#xff08;暴⼒解法&#xff0c;会超时&#xff09;&#xff1a; 1.算法思路&#xff1a; 2.图解 3. 代码实现 3. 解法⼆&#xff08;双指针-对撞指针&#xff09;&#xff1a; 1.算法思路&#xff1a; 2.图解 3.代码实现 1.C语言 2…

如何快速学习VCU电控开发

本课程基于实际项目案例和岗位需求技能制定教学大纲&#xff0c;以任务驱动方式引导学员&#xff0c;让学员快速掌握VCU开发知识。首先从VCU开发必备知识点和MATLAB/Simulink软件建模工具的使用入手&#xff0c;夯实学员基础。再通过策略设计、模型搭建和测试标定来指导学员完成…

AI图书推荐:使用FastAPI框架构建AI服务

《使用FastAPI构建生成式AI服务》&#xff08;Building Generative AI Services with FastAPI (Early Release) &#xff09;是一本由Ali Parandeh编写的书籍&#xff0c;计划于2025年3月首次出版&#xff0c;该书以实践为导向&#xff0c;指导读者如何开发具备丰富上下文信息的…

【k8s多集群管理平台开发实践】十二、开发总结及注意事项【完结】

文章目录 简介总结前面11章节所实现的功能&#xff1a; 一.完善集群更多功能1.1.可以扩展更多的功能 二.该系列课程代码地址三.技术栈及开发经验3.1.开发过程中所使用到的一些技术栈 四.开发过程中需要注意的事项五.反馈与交流 简介 该系列文章主要是介绍了多k8s集群平台开发的…

【前端】CSS基础(1)

文章目录 前言一、CSS基础1、 CSS是什么2、 CSS基本语法规范3、 代码风格3.1 样式格式3.2 样式大小写3.3 空格规范 4、 CSS引入方式4.1 内部样式表4.2 行内样式表4.3 外部样式 前言 这篇博客仅仅是对CSS的基本结构进行了一些说明&#xff0c;关于CSS的更多讲解以及HTML、Javasc…

iOS MRC那句话

混编时使用MRC文件需要使用这句话 -fno-objc-arc在下图中显示的位置添加