草庐IT

【JavaEE】网络原理基础讲解

爱吃大白菜 2024-07-29 原文

目录

1.网络的发展史

1.1网络的由来 

1.2网络互联

1.2.1 独立模式(单机模式)

1.2.2局域网(LAN)

1.2.3广域网(WAN)

2.网络通信基础 

2.1IP地址 

2.2端口号

3.计算机网络协议

3.1网络协议定义

3.2网络协议分层

3.3OSI七层模型

3.4TCP/IP模型(重点)


1.网络的发展史

1.1网络的由来 

很多先进的东西都是先是军用,后来发现这东西太方便了,才普遍下来。

网络是什么来的呢?在没有互联网之前,军队都是通过电报、电话来通信的,这东西有一个缺点就是在使用时容易被拦截。于是,美国人就研究,能不能搞一种通讯,可以防止拦截,此时,互联网这个东西就诞生了。 

1.2网络互联

网络互连:将多台计算机连接在一起,完成数据共享。
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信
根据网络互连的规模不同,可以划分为局域网和广域网。

1.2.1 独立模式(单机模式)

单机模式的含义就是,当我们有两台电脑时,A电脑处理的事情的结果,无法影响到B电脑的数据。就相当于我们打游戏无法进行人人交互(pvp)。

1.2.2局域网(LAN)

局域网,英文名称是Local Area Network,简称LAN
Local 即标识了局域网是本地,局部组建的一种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

 通过网线将若干台电脑链接在一起,这就构成了一个简单的局域网:

 它们不仅仅可以使用网线进行连接,还可以使用集线器、交换机、路由器进行连接,只要是小规模的电脑连接就是局域网(小规模没有具体定义,需要参考具体对象)。

 1.2.3广域网(WAN)

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

 在这个图中,我们可以将各个地区当成局域网,整个图当成一个广域网。如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。有时在不严格的环境下说的广域网,其实是指互联网。 

2.网络通信基础 

2.1IP地址 

🐣概念
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

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1本机环回大部分时候用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

2.2端口号

🐣概念
在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。

简单说:我们可以通过IP地址来定位到这台设备,但是一台设备上有很多进程,我们如果想要知道那个进程发出的请求,我们就要依赖一个东西(端口号)。端口号就是用于定位主机中的进程。就像发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。
🐣格式
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

3.计算机网络协议

3.1网络协议定义

 我们想要让两个网络进行通信,我们就需要达成一些共识,通过这些共识进行通讯。例如,有两个人,一个中国人,一个美国人,他们俩个人说话(都说国语),他们相互说话就很难进行有效沟通,如果他们两个使用同一个语言说话,那他们聊天就会畅通无阻。

 3.2网络协议分层

🐣为什么要分层 ?

网络通信其实是一个比较复杂的过程,需求场景越复杂,那么网络协议就越复杂,它越复杂对于我们的学习成本和维护成本就会增大。因此,我们就将就将复杂的难以通过大脑计算的大协议,一点一点的拆分成我们大脑可以解决的小协议,让每个小协议负责大协议中的一些事物,最终将这些小协议联系到一起完成当前的任务。

 🐣网络协议分层的好处

  1. 最大的好处莫过于可以减小我们大脑的负载。
  2. 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可,减低了学习成本。
  3. 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可,降低每层的耦合度,在后续需要迭代时,对于使用方也无需付出学习成本。

就像我们在打电话时,我们就是使用方,我们无需关注使用方式打电话(座机、无线电话),也不关心电话是如何进行传输我们的聊天的。

 3.3OSI七层模型

 OSI:英文名称是Open System Interconnection,即开放系统互连,它分为七层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现。

3.4TCP/IP模型(重点)

 TCP/IP模型,它从应用层到物理层一个有五层,分别是应用层、传输层、互联网层(网络层)、网卡层(数据链路层)、物理层(硬件),有时候我们也叫它四层协议,因为物理层是硬件,对于我们程序员来说,我们不太关心这个。

 🐣各个协议层任务:

  • 应用层: 只关注程序的作用是什么,如何使用的,网络编程主要就是针对应用层。
  • 传输层:负责两台主机之间的数据传输。只关心两个主机的地址,不考虑如何到达这个地方。例如:就像我在淘宝上买东西,我只关心发货地址和收货地址。
  • 网络层:负责地址管理和路由选择。负责两个地址如何走才是最佳路线。例如:我买的东西收获地址是北京,发货地址是上海,我是通过上海->深圳->北京,还是上海->河北->北京。
  • 数据链路层:负责设备之间的数据帧的传送和识别。例如,快递选择了上海->河北->北京这条路,做出决定:是使用火车还是货车。
  • 物理层:针对硬件设备间的协议,约定了网络通信中的基础的硬件设备的规格,保证主机和网络设备之间得到匹配。

在这些几个协议层当中,我们最关心的就是应用层,其他的层都是操作系统内核封装好的,只要应用层我们需要自己手动实现。 

🐣各个协议层工作流程

我们就以qq发送信息为例, 假设A用户向B用户发送了一个“两年半”,时间在2023-04-04 19:00,

我们以发送方的角度看(粗略步骤,精专不考虑): 

✨1.应用层 

 qq应用程序拿到了上方的数据,进行封装,封装成应用层数据报,他的本质就是数据拼接,在qq的具体情况中,比这要复杂的多。

 在应用层,封装好这个数据报,qq就会通过调用传输层提供中的API将这个数据报传输给传输层。

✨2.传输层

传输层基于应用层发送过来的数据,调用传输层中的API,传输层的API最常用的是TCP和UDP,他会将应用层传输过来的数据包当作荷载进行封装,UDP报头中包含一个特定的字符串(源端口和目的端口)。这里我们用UDP来举例。

UDP会针对应用层发来的数据报再次封装。

 之后传输层将在传输层封装好的数据报发向网络层。

✨3.网络层

这里最典型协议是ip协议,会将传输层数据报继续封装,封装成IP数据报,在原来的数据报上添加一个IP报头,将传输层传输过来的数据报当成荷载。

在IP报头当中,它包含一组数据源ip和目的ip。

 ✨4.数据链路层

数据链路层最典型的协议叫做“以太网”,他会在IP数据报的包头和包尾加上帧头和帧尾。

帧头中主要包括 源MAC地址和目的MAC地址,

MAC是指物理地址,描述一个主机在网络上的位置,他的功能和IP很相似,但是这两个地址分别作用于不同的用途。IP用于网络层的路径规划,MAC用来进行描述数据链路层,两个即将进行传输的相邻节点。

之后,数据链路层会将封装好的数据报方式给物理层。

✨5.物理层

物理层会将上述的“以太网数据帧”的二进制数据转换成高低电平信号/光信号,通过网线或者无线电波的方式传出出去。 


写在最后:

🐣🐣🐣以上就是本文全部内容,如果对你有所帮助,希望能留下你的点赞+关注,我会更加努力的更新内容!非常感谢🧡🧡🧡

若本篇文章有错误的地方,欢迎大佬们指正!

有关【JavaEE】网络原理基础讲解的更多相关文章

  1. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  2. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  5. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  6. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  7. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  8. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  9. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  10. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

随机推荐