【Java】初识网络编程

news2025/1/15 19:50:33

文章目录

  • 前言
  • ✍一、互联网的发展
    • 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.coloradmin.cn/o/1655992.html

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

相关文章

【npm】解决npm包突然消失MODULE_NOT_FOUND

今天折腾新特性时需要升级nodejs,安装新版后npm离奇消失了。C:\Users\**用户名\AppData\Roaming\npm\node_modules下只有cnpm,没有npm的目录。重装nodejs也不好使。 机智如我,试了下cnpm -v是正常的,而且能看到nodejs,…

start.spring.io不支持java8,idea使用阿里云又报错

做项目的时候,我们可以发现,访问https://start.spring.io/ 创建脚手架项目的时候,最低是java 17了 但是对于很多项目来说,还是在用java8,这该怎么办呢? 值得庆幸的是,阿里云也同样有相同功能的…

掌握MySQL常用的命令

前言 MySQL是一个流行的开源关系型数据库管理系统,广泛应用于各种应用场景。熟练掌握MySQL的常用命令,对于数据库管理员和开发人员来说至关重要。本文将介绍MySQL数据库的一些基础术语、SQL语言分类,以及DDL、DML、DQL和DCL等操作&#xff0…

浅了解UE5

1.什么是UE5 UE5(Unreal Engine 5)是一款由Epic Games开的游戏引擎,它是UE4的后续版本。UE5于2021年5月首次发布,并在2022年正式发布。UE5引入了许多令人兴奋的新功能和改进,以下是一些主要的介绍: 1. 光线…

编程入门(六)【Linux系统基础操作四】

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 🔥前言🚀if else条件控制基本的if语句带else的if语句嵌…

通俗易懂讲解 nginx-rtmp-module 是干嘛的?

文章目录 概述安装 nginx 和 nginx-rtmp-module配置 Nginx启动 Nginx使用示例推流拉流转码鉴权与安全自动录制 概述 nginx-rtmp-module 是一个用于 Nginx 的第三方模块,它扩展了 Nginx 服务器的功能,使其能够处理实时流媒体数据,特别是支持 …

leetcode刷题(5): STL的使用

文章目录 56. 合并区间解题思路c实现 55. 跳跃游戏解题思路c 实现 75. 颜色分类解题思路c 实现 36 下一个排列解题思路c 实现 56. 合并区间 题目: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&a…

仓库管理系统需求调研要点

仓库管理系统需求调研 一、仓库的作用 仓库分类 原材料仓库:用于存放生产所需的原材料和零部件,需要保持原材料的质量和数量稳定。半成品仓库:存放生产过程中的半成品和在制品,需要保持良好的生产流程和及时出库。成品仓库&#x…

tabby多个窗口同时执行插件

一、插件名称 安装插件quick-cmds 二、使用 点击右上角图标,选中命令单机即可。快捷键ALTQ唤出列表,不用每次用鼠标点击右上角,巴适的板。 ctrl enter发送全部

EditReady for Mac激活版:专业视频转码工具

对于视频专业人员来说,一款高效的视频转码工具是不可或缺的。EditReady for Mac正是这样一款强大的工具,它拥有简洁直观的操作界面和强大的功能,让您的视频处理工作事半功倍。 EditReady for Mac支持多种视频格式的转码,并且支持常…

旺店通·企业奇门和金蝶云星空单据接口对接

旺店通企业奇门和金蝶云星空单据接口对接 源系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造面向…

【解决】Android Studio Toast点击不显示

问题描述 开发Android程序过程中,突然发现在Android studio的模拟机上,运行测试程序,Toast弹框不能使用了,但是解决方法非常粗暴和直接:重新加载一个新的虚拟机或清空当前虚拟机的数据,然后再重启。 明显&a…

如何把多个文件(夹)向上移动1层(或多层)(在批量复制前或后进行)

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 假定情况是,我要把下图里的4个文件夹内部的全部文件,合并到04的当前位置来(4个文件夹里面各有5个兔兔的图片&#xff09…

【教学类-53-01】20240509“去掉背景的png彩色图片”转“黑色影子图”

作品展示 背景需求: 刚写完蒙德里安涂色学具,准备开课,转眼班级就“百日咳“”隔离3周,o(╥﹏╥)o 我的AI对话大师只剩1个月的有效期,剩下9万6千次也马上就作废了。 最后一个月可以尽量多用掉一些,我从小…

JVM的垃圾回收

JVM简介 JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。 虚拟机:是指通过软件模拟的具有完整硬件功能、运行在一个完全隔离的环境中完整计算机系统 1.JVM的内存区域划分 jvm是一个java进程 每一个java进程就是一个jvm实例 一个进程运行过程中 就要从操作系…

使用C++ __builtin_expect优化程序性能后,程序体积不改变原因

结论 使用__builtin_expect优化程序性能&#xff0c;开启-O3的情况下&#xff0c;确实程序的体积可能不改变&#xff0c;但是还是会产生优化效果。 测试代码 不使用__builtin_expect #include <iostream>void fun(int a, int b) {// 不使用__builtin_expectif (a <…

前端面试题 | 常考题整理

本文为面试中出现的高频次考题&#xff0c;具体还是要看所有题。 目录 css 1、☆介绍下 BFC 及其应用 3、☆浮动清除 17、☆说几个未知宽高元素水平垂直居中方法 js 9、☆箭头函数与普通函数的区别是什么&#xff1f;构造函数可以使用 new 生成实例&#xff0c;那么箭头…

Hass哈斯数控数据采集网络IP配置设置

机床数据采集&#xff08;MDC&#xff09;允许你使用Q和E命令通过网络接口或选项无线网络从控制系统提取数据。设置143支持该功能&#xff0c;并且指定控制器使用这个数据端口。MDC是一个需要一台附加计算机发送请求&#xff0c;解释说明和存储机床数据的软件功能。这个远程计算…

【Vue】结合ElementUI实现简单数据请求和页面跳转功能

一、准备工作 1、创建一个Vue-cli程序 之前的博客有。各位看官姥爷&#xff0c;可以自查。 2、安装ElementUI 在创建Vue-cli程序的过程中&#xff0c;需要在控制台执行以下指令&#xff1a; #安装 element-ui npm i element-ui -S #安装 SASS 加载器 cnpm install sass-loa…

SD卡和TF卡

SD卡和TF的电信号区别在于 SD比TF多一个地线。 请注意假如TVS结电容过高会导致无法通信&#xff0c;对于高速的通信同样如此&#xff0c;需要控制好ESD的结电容。 SD卡线需要注意50ohm阻抗要求 https://blog.csdn.net/jiangfutao/article/details/124466153 SD卡&#xff1a; …