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

网络原理(1)(JavaEE)

前言:

        学习网络是计算机的必修课,理解网络的深层原理,可以有助于我们提高日常开发能力。

认识网络:

   ⽹络互连:

        随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。
        ⽹络互连:将多台计算机连接在⼀起,完成数据共享。
 数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。 根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。

局域网LAN:

       局域⽹,即 Local Area Network,简称LAN。Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。

局域⽹组建⽹络的⽅式有很多种
(1)基于⽹线直连
(2)基于集线器组建
(3)基于交换机组建
(4)基于交换机和路由器组建

广域网WAN:

        ⼴域⽹,即 Wide Area Network,简称WAN。通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。

⽹络通信基础

        ⽹络互连的⽬的是进⾏⽹络通信,也即是⽹络数据传输,更具体⼀点,是⽹络主机中的不同进程间,基于⽹络传输数据。
        那么,在组建的⽹络中,如何判断到底是 从哪台主机,将数据传输到那台主机 呢?这就需要使⽤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范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收⽹络数据。
综上: IP是用来区分不同主机的,端口号是用来区分同一台主机上不同的进程的
为了更加网络通信的具体内容,例如如何区分你发送过来的是一个txt格式的文本文件,还是mp4格式的视频等等之类的?
接下来,引入网络通信的相关协议:

认识协议:

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

协议(protocol)最终体现为在⽹络上传输的数据包的格式。
如何让这些不同⼚商之间⽣产的计算机能够相互顺畅的通信?
就需要有⼈站出来,约定⼀个共同的标准,⼤家都来遵守,这就是 ⽹络协议;

协议分层:

        将网络通信一个大协议分成好几个小的协议,而且每个小协议负责一个问题。

        只有相邻的协议之间才能进行交互,也就是上层协议,调用下层协议。下层协议给上层协议提供服务。

        
协议分层带来的好处:
       类似于⾯向接⼝编程:定义好两层间的接⼝规范,让双⽅遵循这个规范来对接。

在代码中,类似于定义好⼀个接⼝,⼀⽅为接⼝的实现类(提供⽅,提供服务),⼀⽅为接⼝的使⽤类(使⽤⽅,使⽤服务):
1.对于使⽤⽅来说,并不关⼼提供⽅是如何实现的,只需要使⽤接⼝即可
2.对于提供⽅来说,利⽤封装的特性,隐藏了实现的细节,只需要开放接⼝即可。

分层模型:

        OSI七层模型:

        即Open System Interconnection,开放系统互连,

        OSI 七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层。
        OSI 七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传输。
        
OSI 七层模型既复杂⼜不实⽤:所以 OSI 七层模型没有落地、实现。
实际组建⽹络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现。

 TCP/IP五层(或四层)模型:

TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求。
1.应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。
2.传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到⽬标主机。
3.⽹络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。
4.数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。
5.物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞 线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。
对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
1.对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层;
2.对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
3.对于集线器,它只实现了物理层;
当我们发送一份数据信息给服务器时,数据传输顺序是:
应用层——传输层——网络层——数据链路层——物理层;
服务器接收数据的顺序是:
物理层——数据链路层——网络层——传输层——应用层;
接下来为了更加深刻理解数据在网络通信中的整体过程,将以更具体的发送QQ消息为例:
1、用户在连天框中输入要发送的内容,点击发送按钮,此时内容会被QQ这样的程序构造成" 应用层数据包"的形式发送。
 应用层的网络协议就描述了该数据包的构造,此处应用层数协议往往是开发QQ程序员自行定义的。
例如:
2、QQ这样的程序就会调用系统提供的API(传输层给应用提供的API),操作系统会提供类似于"发送数据"这样的API,然后应用程序会将上述组织好的"应用层数据包"作为参数传进来,于是应用层数据包就到了系统内核中,进入到传输层的代码中。
        此时传输层会把上述"应用层数据包"进一步进行封装,封装成"传输层数据包"。
        由于传输层有多多种协议,其中主要的两个就是UDP和TCP。
        假设此处使用UDP协议:
        

 3、传输层将数据封装好之后,就会调用网络层提供的API进一步进行封装。

        网络层也有很多协议,最主要的就是IPV4协议(简称IP协议),IP协议就拿到上述的传输层数据包封装成"网络层数据包"。

4、网络层继续调用数据链路层提供的API,把数据交给数据链路层处理,数据链路层常见的协议是"以太网"(平时插网线进行上网):

 5、上述得到的数据就会交给物理层(硬件设备)

网卡会针对上述的二进制数据进行真正的传输操作,将二进制序列转化为电信号、光信号等等。

接收方接收到的信号,就是上述过程的反向操作。

中间的过程可能会经过路由器和交换机,分别针对传输过来的数据封装分用:

 


http://www.kler.cn/a/419067.html

相关文章:

  • digit_eye开发记录(3): C语言读取MNIST数据集
  • Git忽略文件
  • Matlab mex- setup报错—错误使用 mex,未检测到支持的编译器...
  • Nature Methods | 人工智能在生物与医学研究中的应用
  • Linux - nfs服务器
  • 《Vue零基础入门教程》第十四课:列表渲染
  • 【leetcode100】螺旋矩阵
  • 数据资产管理是什么?为什么重要?核心组成部分(分类分级、登记追踪、质量管理、安全合规)、实施方法、未来趋势、战略意义
  • 在 Ubuntu 20.04 上使用 Lux 下载 Bilibili 视频的详细教程
  • Web API - Clipboard
  • Qt PDF 前置课
  • RTC 实时时钟实验
  • oracle RAC各版本集群总结和常用命令汇总
  • C语言——库函数
  • 最大值(Java Python JS C++ C )
  • 课程答疑微信小程序设计与实现
  • 概率论——假设检验
  • 【北京迅为】iTOP-4412全能版使用手册-第十九章 搭建和测试TFTP服务器
  • C++之2048(2.0版)
  • go并发设计模式runner模式
  • 初级数据结构——二叉搜索树
  • 【Linux】MDNS:局域网域名解析
  • 网络安全之IP伪造
  • 【k8s】kubelet 的相关证书
  • java并发面试复习
  • MyBlog(五) -- 用户注册页面完善