【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.mfbz.cn/a/606227.html

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

相关文章

MySQL变量的声明与使用

set userName 刘德华; SELECT userName : 刘青云; SELECT userName as 读取到的userName变量值; set x5,y7; SELECT x y as 57的结果; set dx0.55,dy2; SELECT dx dy; set result(select dx dy) SELECT result; set cityName1Kabul; SET cityName2Qandahar; SET cityName3…

【Qt 开发基础体系】字符串类应用和常用的数据类型

文章目录 1. Qt 字符串类应用1.1 操作字符串1.2 QString::append()函数1.3 QString::sprintf()函数1.4 QString::arg()函数 2. 查询字符串2.1 函数 QString::startsWith()2.2 函数 QString::contains()2.3 函数 QString::toInt()2.4 函数 QString::compare()2.5 将 QString 转换…

RS232引脚方向及意义与接线参考

RS232引脚方向及定义编号引脚意义方向作为IO使用说明1CD载波检测(Carrier Detect)计算机《调制解调器输入调制解调器通知计算机有载波被侦测到2RXD接收(Receive)计算机《调制解调器 接收数据3TXD发送(Transmit)计算机》调制解调器 发送数据4DTR数据终端设备(DTE)备好(Data Te…

揭秘豆瓣网站爬虫:利用lua-resty-request库获取图片链接

介绍 在网络数据采集领域,爬虫技术在图片获取方面具有广泛的应用。而豆瓣网站作为一个内容丰富的综合性平台,其图片资源也是广受关注的热点之一。本文将聚焦于如何利用Lua语言中的lua-resty-request库,高效地从豆瓣网站获取图片链接。我们将…

RAG 检索的底座:Milvus Cloud向量数据库

在业界实践中,RAG 检索通常与向量数据库密切结合,也催生了基于 ChatGPT + Vector Database + Prompt 的 RAG 解决方案,简称为 CVP 技术栈。这一解决方案依赖于向量数据库高效检索相关信息以增强大型语言模型(LLMs),通过将 LLMs 生成的查询转换为向量,使得 RAG 系统能在向…

MAcA-PEG-MAcA,Methacrylamide-PEG-Methacrylamide可作为高分子链转移剂或高分子乳化剂使用

【试剂详情】 英文名称 MAcA-PEG-MAcA, Methacrylamide-PEG-Methacrylamide 中文名称 聚乙二醇二苯甲醛, 苯甲醛-聚乙二醇-苯甲醛 外观性状 由分子量决定,固体或者液体。 分子量 0.4k,0.6k,1k,2k&am…

发电机组远程管理,提升管控力,降低运维成本

发电机组是指发电机发动机以及控制系统的总称,用来把发动机提供的动能转化为电能。它通常由动力系统、控制系统、消音系统、减震系统、排气系统组成。发电机组远程管理系统利用物联网技术与PLC远程控制模块集成解决方案,在提高发电机组的运行效率、降低运…

用于YouTube推荐的深度神经网络YouTube DNN

这篇论文是最近参加组会看的一篇新论文,论文虽然是2016年出的论文,但是它是YouTube发表的,且是应用在YouTube这样超级大的平台上的一篇工业界的推荐系统的论文,我读完之后也觉得论文有一些可取之处的,所以和大家分享一…

【Chrome实用命令笔记】

文章目录 Chrome实用命令笔记1、chrome基本介绍2. 打开开发者工具(DevTools)方法一:快捷键方法二:右键菜单方法三:浏览器设置 2. 开发者工具面板Elements面板Console面板Sources面板Network面板Performance面板Memory面…

数据结构:图

数据结构:图 前言 在自动化程序分析中,图和树的一些算法起到了至关重要的作用,所以在开始自动化程序分析的研究前,我用了两天复习了一遍数据结构中的图。本章主要内容有图的基本概念,图的存储和图相关的经典算法&…

十二届蓝桥杯Python组1月中/高级试题 第五题

** 十二届蓝桥杯Python组1月中/高级试题 第五题 ** 第五题(难度系数 5,35 个计分点) 提示信息: 平均数:是指在一组数据中所有数据之和再除以这组数据的个数。 如:“1,2,3&#xf…

品鉴中的文化碰撞:如何理解和欣赏不同文化背景下的红酒

红酒作为世界各地广泛生产的产品,具有丰富的文化内涵。不同国家、地区和民族的红酒文化各具特色,反映了当地的历史、传统、习俗和生活方式。在品鉴云仓酒庄雷盛红酒时,理解和欣赏不同文化背景下的红酒是提升品鉴体验的重要一环。 首先&#x…

目前市面上堡垒机厂家有哪些?会帮忙部署吗?

随着大家对于网络安全的重视,越来越多的企业准备采购堡垒机了。不少企业在问,目前市面上堡垒机厂家有哪些?会帮忙部署吗?这里我们小编就来简单为大家回答一下,仅供参考哈! 目前市面上堡垒机厂家有哪些&…

idea开发工具 项目使用Spring框架开发解决yml配置文件不识别问题,解决方案教程

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 问题点,配置文件不识别 解决流程 添加出来的yml配置文件,点击🆗 问题已解决 如果问题没有解决的话,第二种方法 这是识别成功的 技术细节 项目重构Maven环境…

libmodbus使用

安装可以看这个博客&#xff1a; https://blog.csdn.net/hanhui22/article/details/105786762 它的安装可以&#xff0c;但是编译测试看不太懂&#xff0c;我没跟着它的编译&#xff0c;完了后把/lib下的 放到开发板的/usr/lib下 编写代码: #include <stdio.h> #inclu…

VS 编译动态链接库dll及其动态链接库的调用方式

VS 编译动态链接库及其动态链接库的调用方式 1编译动态链接库 (1)Step01: 打开VS (2)Step02: 新建项目 (3)Step03: 选择动态链接库&#xff08;搜索DLL&#xff09; (4)Step04: 新建头文件&#xff08;如MyDLL.h) 该文件编写对外暴露的接口函数&#xff0c;即在该函数内声…

deepspeed入门

一、目录 deepspeed 简介库安装配置deepspeed 实现demo如何配置deepspeed参数案例分析 二、实现 deepspeed 简介 Deepspeed是微软的大规模分布式训练工具。专门用于训练超大模型。主要目标是降低训练期间的内存占用、通信开销和计算负载&#xff0c;从而使用户能够训练更大的…

上班不想用脑子写代码了怎么办?那就试试Baidu Comate啊宝贝

本文目录 前言1、视频编程实战1.1、熟悉代码库中的代码1.2、参考现有代码编写新代码 2、下载使用教程3、使用体验3.1、AutoWork 产品测评3.2、解决有关ajax请求后重定向问题3.3、询问编程相关知识3.3.1、cookie和session的区别与联系3.3.2、数据库中主键外键的相关知识 4、问题…

ARTS Week 26

Algorithm 本周的算法题为 35. 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1:输入: nums [1,…

基于MSOGI的交叉对消谐波信号提取网络MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介&#xff1a; 此模型利用二阶广义积分器&#xff08;SOGI&#xff09;对基波电流和相应次的谐波电流进行取 &#xff0c;具体是通过多个基于二阶广义积分器的正交信号发生器 &#xff08; S&#xf…
最新文章