javaee网络原理初始

本文涉及的产品
云解析DNS,个人版 1个月
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: javaee网络原理初始

本章要点

学习网络编程的基本原理

熟悉网络协议分层

掌握网络编程的协议

网络发展史

独立模式

计算机之间的数据相互独立!

计算机之间不能进行数据分享和连接

网络互联

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。

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

数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。

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

局域网


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

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

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

局域网组建网络的方式有很多种:

image.png


image.png

交换机上的接口都是对等的,一样的!

通过交换机,将多个设备组建了一个局域网!


基于交换机和路由器组建

image.png


路由器中有两个接口LAN口和WAN口!

其中插在LAN口中的设备在一个局域网里

通过WAN口连接到另一个局域网里!

所以这里的A局域网是在B局域网中!


上述的交换机和路由器指的是传统的!

现在的交换机和路由器的功能都大致一样!

交换机有的功能路由器也有!没有明确的界限了!


通过交换机/路由器组建起来的都是局域网!


广域网


广域网,即 Wide Area Network,简称WAN。

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


而广域网和局域网并没有明确的界限!

一般认为,范围较大的局域网就可称作广域网!


全球最大的广域网internet(因特网)

image.png


通信基础

IP地址


描述了网络上一个主机的位置(地址)

IP地址本质是一个32位的整数,不方便记忆,所以我们通常将32位的整数将每个字节划分成一组,分为4组,中间用.分隔开.(点分十进制)

127.0.0.1特殊的IP环回ip,表示自己的主机!

也就是每一组的范围是0-255!一个字节


端口号


描述了主机上的某个程序(电话号码)


本质是16位(2个字节)的无符号整数!

范围为0-65535


3306MySQL默认端口号!


每当我们开启一个程序,系统就会给这个程序随机分配一个端口号!

而服务器需要默认绑定一个端口号,便于用户访问!


认识协议

需要进行有效通信,前提就是明确通信协议!

协议也就是约定!

我们约定好发送的数据是咋样的格式,接收的时候就通过这样的格式解析!

网络通信的时候,本质上传输的是光信号和电信号!

通过光信号的频率(高频率/低频率),电信号的电平(高电平/低电平)来表示是0和1!


学习网络原理就需要研究很多协议!

五元组

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


源IP:标识源主机

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

目的IP:标识目的主机

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

协议号:标识发送进程和接收进程双方约定的数据格式

就如同我们的包裹信息!

image.png


协议分层

对于网络协议来说,往往分成几个层次进行定义。

为啥要进行协议分层呢?

就比如我们写代码,如果要写一个项目的话!需要多人分工合作!

项目不可能一个人就可以独立完成,需要将这个项目拆成多个板块!每个成员负责不同的板块,每个人只需要掌握自己负责的代码就好了,并不需要了解一整个项目,减少成本,更好的封装!


而我们的网络协议也是如此,有很多细节,这个协议也十分庞大!我们不可能把所有细节掌握!所有需要通过协议分层(对应了代码封装),将协议分拆成多个小的协议!而我们不同分工的人,也并不需要掌握全部的网络协议!

image.png


协议分层好处


每层协议不需要理解其他层的协议细节(分装)

打电话的人并不需要知道电话是如何实现的!

实现电话的人也不需要知道打电话的人用啥语言打电话

方便将对应层的协议换成其他协议(更好的解耦合)

打电话的人可以将汉语协议换成英语协议,并不会影响!


网络分层模型

OSI七层网络模型

image.png

我们一般将应用层,表示层,会话层这三层用应用层代替!

也就是简化了7层模型!

OSI七层网络简化版本为TCP/IP五层(四层) 网络模型!

我们程序员有时候又将物理层和数据链路层分为一层,因为偏硬件!所以也能说是四层网络模型!

image.png

可以看到我们普通程序员只要学会应用层的协议就可以进行日常开发了!

传输层和网络层 由编写操作系统的人员实现!

而数据链路层和物理层由编写驱动的人员实现就好了!


TCP/IP五层(四层)网络模型

我们来了解一下具体每层的作用!

从细节到宏观! 底层开始!


物理层

网络通信中的硬件设备!

网线/网卡,针对硬件设备的约定,物理层协议负责的范畴,需要保证所有主机和网络设备之间都是匹配的!


数据链路层

负责完成相邻设备之间网络通信(局部)


网络层

点到点之间的网络通信(全局),大部分是不相邻,

网络层负责规划好这两点之间合适的线路,因为设备之间不止一条线路!


传输层

负责端到端之间的通信,起点和终点,只是关注结果数据是否能到达,不关注过程(宏观)


应用层

和应用程序密切相关,你传输的这个数据是干啥用的,不同的应用程序有不同的用途!


我来类比我们生活中的网购,便于理解上面五层网络协议!


首先应用层就是买家和卖家,买家需要知道买的这个物品有什么用途,才会去购买,卖家也需要他卖的商品的用途,才可以卖出去!

传输层就好比,是商家要确认该商品是否能送到你的手上,选择合适的快递公司,就是快递是否能到达你的位置,不然卖个毛线!

网络层就好比快递公司,拿到商品好,需要规划合适的线路!然后包裹就到了快递小哥手上!

数据链路层这就好比快递小哥送包裹,点到点之间有不同的小哥负责!

物理层硬件设备就好比,公路,传输通道!提供传输基础,能顺利到达买家手上!


我们对应到相应的设备


主机


对应了物理层到应用层,包括了这五层传输协议,把这五层都实现了!


路由器


主要是物理层到网络层(主要实现了,物理层,数据链路层,网络层)


交换机


主要是物理层到数据链路层(主要实现了物理层,数据链路层)


封装和分用

封装和分用是网络分层中的一组重要概念!

这里的封装并不是像java中的封装一样,指的是不同的网络分层协议之间是如何相互配合的!

我们暂且理解为封装就是包快递,分用就是拆快递!


封装

例如我们的微信程序,A给B发送了一条信息,内容是hello!那么A主机是如何进行传输到达B的主机上的呢?


应用层(微信应用程序)


根据A输出的内容,就会将数据构造成一个应用层的协议报文(我们知道协议就是约定,协议报文就是遵守这个约定的一组数据)!

然后微信就会通过微信的内部代码,根据应用层协议,将协议报文封装成应用层数据报文


我们这里需要知道,我们的应用层协议是由程序员编写的不同的应用程序有不同的应用层协议,我们是无法得知里面中的协议内容的,不像其他层(数据链路层,传输层,网络层)已经由操作系统,驱动,硬件编写好了!

image.png

应用层进行封装后,调用操作系统提供的API (socket api),将数据报文传送给了传输层(操作系统内核)


传输层(操作系统内核)


数据到了传输层,根据传输层协议(TCP/UDP),将数据报文构造成了一个传输层协议报文!

我们的传输层协议有很多种(TCP,UDP…)我们这里以TCP协议举例!

image.png

TCP报头信息:

源端口,目的端口端口号(商家和买家的联系电话)


这里的TCP报头+数据载荷, 可以看成是字符串连接,就是将,这里的连接是二级制的连接!然后传输层将TCP协议报文,交给了网络层!


网络层(操作系统内核)


网络层拿到数据后,根据网络层协议(IP),将传输层协议数据,进一步进行封装,加上了一个IP报文,构造成了一个IP数据包!

image.png

IP报头信息:

源IP和目的IP

主机A和主机B的IP地址(商家和买家的地址)


网络层进行封装后将数据交给了数据链路层(驱动程序)!


数据链路层(驱动程序)


数据链路层拿到IP协议报文后,根据数据链路层,将数据进一步封装,构造一个数据链路层的数据报,典型的数据链路层协议是以太网,就会构造成一个"以太网数据帧"!

image.png

帧头信息:

两个相邻设备的地址信息.

我们知道IP报头包含的是起始位置和终点位置的地址,而以太网数据帧头包含的是相邻连个节点的地址,根据传输,该地址信息一直在变化!


帧尾信息:

数据校验和,校验传输的数据是否正确,我们后面在进行介绍!

经过数据链路层进行封装后,将数据传输给了物理层(硬件设备)


物理层(硬件设备)


然后数据就离开了主机A!到了下一个设备,可能是路由器或者/交换机 在到达B主机前要经过一系列的设备,这里我们就不进行研究,我们直接看到达B主机后的操作!


分用

我们的分用,就是封装的逆过程,将刚刚拿到的包裹,进行拆过程!


物理层(硬件设备)


我们的B主机网卡感知到了一组高低电平,就会将电平翻译成0/1二进制,这一串二进制,就是以太网数据帧,然后间以太网数据帧,交给了数据链路层!

image.png

数据链路层(驱动程序)


数据链路层,拿到以太网数据帧后,对数据进行解析,去掉帧头和帧尾!取出IP数据报交给了网络层!



网络层(操作系统内核)


网络层,拿到IP协议报文后,对数据进行了解析,去掉了IP报头,取下TCP报文,交给了传输层

image.png



传输层(操作系统内核)


传输层拿到数据后,对数据进行解析,去掉TCP报头,取下应用层数据!交给应用层处理

image.png


应用层(微信应用程序)


应用层拿到数据,调用操作系统中的socket api读取到操作系统内核中的数据报,解析数据,显示在B对话框中!


还有中间的很多连接设备,要进行封装,分用!

image.png

中间可能有很多的设备,但是无论多复杂,都是对数据进行不停的封装和分用直至传输成功!

目录
相关文章
|
11天前
|
机器学习/深度学习 存储 算法
回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现
本文详细介绍了回声状态网络(Echo State Networks, ESN)的基本概念、优点、缺点、储层计算范式,并提供了ESN的Python代码实现,包括不考虑和考虑超参数的两种ESN实现方式,以及使用ESN进行时间序列预测的示例。
27 4
回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的自适应神经网络:原理与应用
【8月更文挑战第14天】在深度学习领域,自适应神经网络作为一种新兴技术,正逐渐改变我们处理数据和解决问题的方式。这种网络通过动态调整其结构和参数来适应输入数据的分布和特征,从而在无需人工干预的情况下实现最优性能。本文将深入探讨自适应神经网络的工作原理、关键技术及其在多个领域的实际应用,旨在为读者提供一个全面的视角,理解这一技术如何推动深度学习向更高效、更智能的方向发展。
|
8天前
|
机器学习/深度学习 人工智能 算法
深度学习的奥秘:探索神经网络的核心原理
深度学习,一个听起来既神秘又充满魔力的词汇,它如同一扇通往未知世界的大门,背后隐藏着无尽的智慧与可能。本文将以一种通俗易懂的方式,带领读者走进深度学习的世界,探索那些构成神经网络核心的基本原理。我们将从最初的感知机模型出发,逐步深入到复杂的多层网络结构,揭示数据如何在这些网络中流动、变化,最终实现智能决策的过程。通过这篇文章,你将了解到深度学习不仅仅是技术的堆砌,更是对自然界智慧的一种模仿与致敬。
18 1
|
19天前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
45 10
|
23天前
|
存储 安全 算法
密码学原理及其在网络安全中的应用
【7月更文挑战第27天】密码学作为保护信息安全的基石,在网络安全中发挥着不可或缺的作用。通过加密、解密、身份验证、数字签名和哈希函数等技术手段,密码学确保了数据的机密性、完整性和认证性。随着计算能力的不断提升和密码分析技术的不断进步,密码学需要不断创新和发展,以应对新的安全挑战。未来,随着量子计算技术的兴起和后量子密码学的研究深入,密码学将在网络安全领域发挥更加重要的作用。
|
6天前
|
机器学习/深度学习 人工智能 算法
人人都能搞定的大模型原理 - 神经网络
从1950年人工智能初现雏形至今,感知机作为神经网络的基石,引领了从单层到深层神经网络的技术飞跃。20世纪50年代末,弗兰克·罗森布拉特受人脑神经元启发,提出了感知机模型,它能够通过学习调整权重与阈值来识别模式,如手写数字。随着技术进步,感知机演变成更为复杂的层级和卷积神经网络。直至2022年ChatGPT的问世,人工智能的应用进入了公众视野。感知机的学习机制基于监督学习,通过不断调整权重和阈值来提高识别准确性。这种“亚符号”派的技术逐渐发展为拥有数十亿参数的大模型,展示了强大的智能涌现能力。随着AI技术的不断发展,我们正步入一个人机共生的新时代。
|
19天前
|
网络协议 Java 数据处理
(一)Java网络编程之计网基础、TCP-IP协议簇、TCP、UDP协议及腾讯QQ通信原理综述
就目前而言,多数网络编程的系列的文章都在围绕着计算机网络体系进行阐述,但其中太多理论概念,对于大部分开发者而言,用途甚微。因此,在本系列中则会以实际开发者的工作为核心,从Java程序员的角度出发,详细解读Java的网络编程核心内容。
|
1月前
|
XML JSON 安全
Base64编码原理与在网络传输中的应用
Base64编码原理与在网络传输中的应用
|
1月前
|
域名解析 缓存 网络协议
计算机网络——ping命令过程的详解、原理
计算机网络——ping命令过程的详解、原理
|
1月前
|
网络协议 数据安全/隐私保护 网络架构
计算机网络基础概念与网络通信原理
计算机网络基础概念与网络通信原理