当前位置: 首页 > news >正文

(javaEE)网络原理-初识 局域网和广域网 ip地址和端口号 协议 五元组 协议分层 OSI七层模型 网络数据通信的基本流程

目录

局域网和广域网

网络通信基础 

ip地址和端口号:

协议

五元组

协议分层 

OSI七层模型

网络数据通信的基本流程


局域网和广域网

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

局域网和广域网

局域网:路由器,把两个设备连到同一个路由器上,在同一个局域网中了

广域网:通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了⼴域网。

全世界最大的广域网"因特网"The Internet

咱们所使用的广域网,其实就是一个"大一点的局域网

单机时代=>局域网时代=>广域网时代=>移动互联网时代~~

交换机:
交换机可以视为是"对路由器的接口进行了扩展"
家用路由器,一般就是查4个网线(1WAN口连运营商的设备)
交换机不会进行组局域网功能~可以把路由器的接口进行扩展

下面这个图就是路由器和交换机:

很显然交换机的接口更多!!

某个电脑连接到交换机上,等价于连接到路由器上  

这个都是处于同一个局域网当中:两者和插排的感觉是一样的

交换机口不够用还可以接更多交换机,引入更多的插口

路由器接的东西太多了,就处理不过来了
家用的路由器,普通的,一般接20个设备,差不多就是极限了~~

贵的路由器会有更高的负荷:但是路由器还有企业级的路由器(动不动几千块钱)带几百个设备,都没啥压力~~

局域⽹,即LocalAreaNetwork,简称LAN。
Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。
局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况
下,是⽆法通信的。
局域⽹组建⽹络的⽅式有很多种:
(1)基于⽹线直连
(2)基于集线器组建
(3)基于交换机组建
(4)基于交换机和路由器组建
⼴域⽹WAN
⼴域⽹,即WideAreaNetwork,简称WAN。
通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部
的局域⽹都属于其⼦⽹

如果有北、中、南等分公司,甚⾄海外分公司,把这些分公司以专线⽅式连接起来,即称为“⼴域
⽹”。
如果属于全球化的公共型⼴域⽹,则称为互联⽹(⼜称公⽹,外⽹),属于⼴域⽹的⼀个⼦集。
有时在不严格的环境下说的⼴域⽹,其实是指互联⽹。
所谓"局域⽹"和"⼴域⽹"只是⼀个相对的概念。⽐如,我们有"天朝特⾊"的⼴域⽹,也可以看做
⼀个⽐较⼤的局域⽹。

网络通信基础 

ip地址和端口号:

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用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和端口号就成功的找到了所对应的应用程序

端口号
概念:
在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。
简单说:端口号用于定位主机中的进程。
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。
格式:
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数
据。
协议

认识协议:程序已经收到数据了,程序如何理解数据的含义

网络协议,通信双方对于发送/接受数据格式的约定~~
我的数据怎么发,你收到就得怎么解析~~

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

作用:
为什么需要协议?
就好比见网友,彼此协商胸口插支玫瑰花见面,这就是一种提前前的约定,也可以称之为协议。

也好比是插头和插座的关系,因为协议的存在,两者总是能匹配 保证规格是一样的

计算机之间的传输媒介是光信号和电信号。通过"频率"和"强弱"来表示0和1这样的信息。要想传递
各种不同的信息,就需要约定好双方的数据格式。
计算机生产厂商有很多;
计算机操作系统,也有很多;
计算机网络硬件设备,还是有很多;
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信
就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议;

协议就是一种约定 双方都履行--就是协议

网络通信中协议非常关键
多个主机设备~~
多个主机都能认同并遵守同一套协议,此时通信才是有意义的~~

五元组

 在TCP/IP协议中,用五元组来标识一个网络通信:
1.源IP:标识源主机
2.源端口:标识源主机中该次通信发送数据的进程
3.目的IP:标识目的主机
4.目的端口:标识目的主机中该次通信接收数据的进程
5.协议类型:标识发送进程和接收进程双方约定的数据格式 遵循的是哪种协议

协议分层 

什么是协议分层
协议分层类似于打电话时,定义不同的层次的协议:

拆分:把一个大的协议,拆成若干个小的,功能单一的协议了.
拆完之后,小的协议,太多了!!!甚至有几十个/上百个......

把这些小的协议归类---内聚

分层:只有相邻两层协议之间可以进行交互:
上层协议可以调用下层协议,下层协议可以给上层提供服务.
(协议之间的交互,不能夸层进行)

在这个例子中,我们的协议只有两层;但是实际的网络通信会更加复杂,需要分更多的层次。

分层的作用:
为什么需要网络协议的分层?
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。
在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用
类(使用方,使用服务):
对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。

OSI七层模型
TCP/IP五层(或四层)模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一月层所提供的网络来完成自己的需求。应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机。网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。数据链路层:负责设备之间的数据顿的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。
有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。物理层:负责光/电信号的传递方式。比如现在以太网通用的网纱(双绞线)、早期以太网采用的的同
轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理
层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

物理层规定了网络通信中的一些硬件设施符合的要求~
物理层的协议,就是约定这些硬件设施要符合的要求是怎样的~~

数据链路层
完成两个相邻的设备之间如何进行通信的.通过网线,把电脑连到路由器/交换机上
电脑和路由器/交换机相邻节点/设备
先考虑一小步怎么走

网络层
则是两个任意设备之间如何进行通信,手机/考虑通讯的中间过程是怎样的
这俩设备之间,可能隔着很多的交换机和路由器

传输层
也是两个任意设备之间的通信,不考虑中间过程,只考虑,起点和终点~~

应用层

包裹拿到之后怎样使用~~

物理层我们考虑的比较少。因此很多时候也可以称为TCP/IP四层模型:

主机:工作过程涉及到 从物理层->应用层(通过应用程序满足网络通信的需求~~)

路由器:工作过程涉及到 从物理层-网络层(组建局域网,进行网络数据包的转发)

交换机:工作过程涉及到 从物理层->数据链路层(对路由器的接口的扩展,不需要考虑组网的问题)

真实情况,还不太一样.
真实的路由器交换机功能是更丰富,更强大的.
现代的交换机,很多都有路由器的功能.
路由器也可以开启特殊的模式(mesh),就可以起到"交换机"的效果甚至还有更多的功能你通过WX发一个数据(数据属于应用层)
数据经过某个运营商的路由器,给你解析出来你发的内容
(此时,路由器相当于工作在应用层)

网络数据通信的基本流程

我通过qq,发送hello给对方~~应用程序获取到用户输入.构造一个应用层的数据包

此处假设这样的协议格式:发送者的qq号,接受者的qq,消息的时间,消息正文
这个应用层数据包就会遵守应用层协议,往往是开发这个程序的程序员自己定义的

应用层数据包往往是"结构化数据"(C的结构体,有很多属性)

发送数据的时候,把结构化数据=>字符串/二进制bit流  序列化
接受数据的时候,字符串/二进制比特流=>结构化数据  反序列化

网络传输的数据,本质上都是"字符串"或者"二进制的bit流"

2.应用程序调用传输层提供的接口(API),把数据交给传输层.
传输层拿到数据之后,构造出"传输层数据包"!!!
传输层的协议,主要是两个TCP,UDP

TCP数据包=TCP报头(header)+TCP载荷(payload)

报头:TCP功能相关的属性

载荷:应用层数据包

买一件衣服
卖家发货,把衣服交给快递小哥
一定不是直接把衣服团个球,交给快递小哥,一定是带有包装的!!
有了包装之后,就可以贴标签
贴的这个标签,快递单,包含了这次传输的关键信息!!!
(五元组)
源ip,源端口,目的ip,目的端口,协议类型

3.传输层构造好数据之后,继续调用网络层的api,把传输层的数据包交给网络层
网络层继续进行处理,网络层最主要的协议,IP协议
IP协议继续对上述数据包进行加工=>拼上IP报头

IP数据包=IP报头+IP载荷(整个传输层的数据包)

IP协议本身不关心载荷内容是啥.
TCP协议也不关心载荷内容是啥.

协议类型,其实不只是一份数据,有很多层!!!
其中IP报头里就会记录当前的传输层使用的是哪个协议
传输层报头中,也会记录应用层使用哪个协议(准确的
说是数据交给哪个应用程序)
数据链路层报头中也会记录网络层使用哪个协议

4.IP协议继续调用数据链路层的api,把IP数据包交给数据链路层
数据链路层中,核心协议,"以太网"
以太网这个协议,也会在网络层数据包的基础上进一步加工~

目前为止,数据还在当前主机上转悠,还没出门的~~

谈到网络传输的"基本数据单位"涉及到多个术语~~

以太网数据帧=帧头+载荷+帧尾

5.以太网继续这样的数据交给硬件设备(网卡)
网卡会把上述二进制数据,最终以光信号/电信号/电磁波信号传播出去了~~
数据终于出门了~~

从上层到下层,数据都要进一步加工(添加报头封装(和面向对象的封装,不是一个封装)

接受方法是从下到上依次解析,分用~~封装的逆向过程

分用,数据到达接收方主机,逐层进行解析:
1.数据到达接收方的网卡.光电信号.网卡把光电信号还原成二进制0101
把二进制数据交给上层数据链路层
2.数据链路层按照以太网协议进行解析,把报头和报尾取出来,剩下的载荷,往上传递给网络层

以太网的帧头中就有专门的属性,描述了网络层使用哪个协议

3.网络层拿到这个数据之后,按照IP协议的格式解析.再把载荷数据交交给传输层

IP报头中也有专门的属性,描述了传输层使用哪个协议

4.传输层拿到数据之后,也是类似,按照TCP协议来解析,取出载荷,交给应用层

传输层报头中,通过目的端口号,告知我们数据交给哪个应用月程序

5.QQ应用程序,解析应用层数据,拿到关键信息,展示到界面上,给出提示

不同的应用程序,自然使用不同的应用层协议来解析~~

1.数据到达接收方的网卡.光电信号.网卡把光电信号还原成二进制0101
把二进制数据交给上层数据链路层
物理层数据信号是咋来的,和数据链路层是直接相关的~~
网线/光纤来的数据,数据链路层=>以太网.
wifi来的数据,数据链路层=>802.11协议
2.数据链路层按照以太网协议进行解析 把报头和报尾取出来,剩下的载荷,往上传递给网络层

传输的中间过程中,也是涉及到封装分用的.
交换机,只需要封装分用到数据链路层即可.
主机的数据=>交换机,交换机收到之后,物理层解析,数据链路层解析(没有网络层了),重新构造出新的以太网数居帧,发给下一个设备A
数据链路层中,得到的以太网数据顿的帧头,信息就足以支持交换进行下一步工作

交换机是工作在数据链路层(二层转发)

主机的数据=>路由器.路由器收到之后,物理层,数据链路层,网络层解析(没有传输层),重新构造出新的网络数据包,构造出以太网数据帧,构造出二进制数据,进行转发~~
路由器是工作在网络层(三层转发)

无线用的协议是802.11,和以太网是并列的关系,本质是一样的,同样的封装分用
分装分用啥的帧头帧尾不一样的,~~数据格式不一样,功能略有差别.

是否有设备工作在传输层:这样的设备也有.比如防火墙/网关~~封装分用到传输层~~

也有设备,只工作在物理层的,集线器,网线延长线

http://www.xdnf.cn/news/937063.html

相关文章:

  • (二)原型模式
  • AI短视频创富营
  • Go语言系统监控实战:gopsutil库全面解析与应用
  • nginx部署
  • K8S认证|CKS题库+答案| 8. 沙箱运行容器 gVisor
  • 安装Openstack
  • 编程技巧(基于STM32)第二章 全功能按键非阻塞式实现按键单击、双击和长按
  • 【agent开发】VS Code连接WSL失败解决
  • 实验一:数据选择器实验
  • Go语言中的if else控制语句
  • DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
  • masm32汇编实现扫雷进程注入
  • 第1课、LangChain 介绍
  • 算法-数论
  • Java线程池核心原理与最佳实践
  • 永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
  • 73常用控件_QFormLayout的使用
  • 一个自动反汇编脚本
  • 深度学习入门Day3--鱼书学习(2)
  • 前端十种排序算法解析
  • 电压型PHY芯片MDI接口设计
  • 计算机网络笔记(二十九)——5.1运输层协议概述
  • QT线程同步 QReadWriteLock并发访问
  • xtp+ctp 交易系统接口简介
  • DAX权威指南9:DAX 查询分析与优化1
  • leetcode 386. 字典序排数 中等
  • Python爬虫实战:研究demiurge框架相关技术
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十)
  • pgsql batch insert optimization (reWriteBatchedInserts )
  • Digital IC Design Flow