【JavaEE】网络原理

网络原理

1. 网络发展史

1.1 独立模式

每个计算机都相互独立,各个终端无法实现相互通信,当想要运行其他数据时,只能进行更换电脑。

1.2 网络互连

通过网络将多台设备连接在一起,完成数据共享。

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

  • Local标识了这是一种本地网络,是一种局部的网络。

  • 局域网的连接方式:

    1. 基于网线直连

      两两终端之间直接连接网线,通过网线进行通信。

      但是一般电脑只有一个内置的网口,无法进行三台设备之间的连接。

    2. 基于集线器

      通过集线器,这就能够使得多台设备均通过集线器设备,将数据发送到同样连接到集线器的设备上。

    3. 基于交换机

      由于集线器的较差性能,发展出了交换机这种设备,功能与集线器相同,为所有设备提供汇总的端口。

    4. 基于交换器和路由器

      交换机: 处理局域网内部的数据流,优化内部设备之间的通信。

      路由器: 处理不同网络之间的数据流,控制数据包的进出局域网。

      简而言之,就是对于方法三进行一个更高维的扩展,因为这一阶段需要组网的设备更多,需要更多的层级进行分层管理。

2)广域网WAN
  • 即Wide Area Network,简称WAN
  • 通过路由器,将多个局域网连接起来,形成的大范围网络成为广域网
  • 广域网内部的局域网都是广域网的子网

1.3 关于LAN和WAN的几点说明

  1. 广域和局域只是一个相对的概念,区别只是路由器之间是否继续进行组网

  2. 一般情况下说的广域网就是互联网

2. 网络通信基础

通信基础一共有三个部分,分别是:IP、端口、协议

2.1 IP

1)概念

IP地址就像我们收发快递时的地址信息,起一个定位主机网络地址的作用。

2)格式

一般为点分十进制的形式,即形如:"198.168.0.0.1”

3)特殊IP

本机环回测试IP:127.0.0.1

2.2 端口号

1)概念

端口号就像我们收发快递时填的手机号,因为一件包裹不仅仅要确定在哪个地域,还需要定位到具体的人。起一个定位主机中的进程的作用。

2)格式
  • 范围:0~65535

    但是0~1023为知名端口号,这些端口预留给服务端程序绑定广泛使 用的应用层协议。

    所以开发时一般范围在1024~65535之间。

3)注意事项
  • 进程与端口号之间是一对多的形式:

    一个进程可以绑定多个端口号,但是一个端口号只能被一个进程所绑定。

    也就是说,端口号被占就不能再被其他进程使用。

2.3 网络协议

1)概念

协议就像秦始皇统一六国进行普通话的规范,使得各个地域之间都能进行通信,网络协议是经过的所有网络设备都必须共同遵守的约定,起一个保证互相之间遵守同一套标准才能通信的作用。

2)组成
  1. 语法

    类似打电话时双方需要同一种语言。

  2. 语义

    用来说明通信双方应该怎么做。

  3. 时序

    通过同步还是异步时序进行传输。

3)作用
  • 使得各个设备之间都能遵守同一套标准而进行通信

    就像国家对于各种设备都制定了国标,这使得:

    • 每家水厂生产的桶装水都能安装到每种品牌的饮水机上
    • 每家螺母公司只要指定螺帽大小,就能够找到对应大小能够安装的螺母
4)说明
  • 协议最终体现为网络上传输的数据包的形式

3. 五元组

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

  1. 源IP:标识源主机(发货商家地址)
  2. 源端口号:标识源主机中发送数据的进程(发货商家手机号)
  3. 目的IP:标识目的主机(收货人地址)
  4. 目的IP:标识目的主机中接受数据的进程是哪个(收货人手机号)
  5. 协议号:标识发送进程接受进程双方约定的数据格式(使用什么快递公司)

4. 协议分层

4.1 概念

协议是一个复杂庞大的系统,才能够使得所有经过网络的设备都能通过它进行通信。

所以协议就有了分层的必要性,就好像一个公司的员工数越多,它的职能层级也划分越细,只有这样才能使得高层过滤掉一些他不需要看到的信息,便于管理。

4.2 作用

  • 便于维护

    每一层分而治之,使得维护不必要牵一发而动身

  • 便于更新

    同维护作用

  • 便于封装

    是一种面向对象的思想,调用网络进行通信的发送方与接收方不用考虑协议具体是怎么实现的,只用关注需要发送的内容

4.3 OSI七层模型

最初预想的模型,但是由于过于复杂,不便于落实,所以不是主流协议。

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

首先解释为什么是说五层也行,四层也行,归根结底是因为物理层是一个纯硬件的设备,可以将其算作协议的一部分,因为它也参与了通信数据的传输,但是其他四层又都是软件层面的,所以物理层处于边缘。

1)组成
  1. 应用层

    • 负责应用程序间的沟通,就像是收件人收到快递后需要怎么使用
    • 数据包只剩各个数据能够直接使用的程度
    • 开发的工作层
    • 涉及到的是操作系统的api,将这个数据包交给传输层
  2. 传输层

    • 负责数据进行传输的起点与终点,就像是快递从A地出发到B地
    • 主机负责
    • 涉及到的最主要的协议就是UDP、TCP,经过这种协议后会构造一个对应的UDP、TCP数据包
  3. 网络层

    • 负责数据走哪条路线进行传输,就像是快递的路径规划
    • 路由器的工作层
    • 涉及到的最主要的协议就是IP,会构成一个IP数据包

    这一级产生的原因主要是两个主机之间一般会经过一系列的交换机和路由器进行连接,所以就有多条路线能够到达目的地。

  4. 数据链路层

    • 负责相邻结点之间的数据传输,就像是快递大站与大站之间的运输方式,是走公路还是铁路、航线
    • 交换机的工作层
    • 涉及到的最主要的协议就是以太网协议,会构成一个以太网数据帧
  5. 物理层

    • 接受光/电信号数据,就像是快递需要走公路还是铁路、航线
    • 集线器的工作层
    • 涉及到的最主要的就是利用物理层面的硬件,将以太网数据帧转换成光信号/电信号/电磁波信号,分别通过光纤/网线/wifi发送
2) 注意事项
  1. 此处提到的“交换机”、“路由器”都是经典意义上的,在现实生活中,高级的交换机、路由器都可以工作在他们的上一层级

  2. 从应用层到物理层,发送数据的过程就是当前一层级都将上一层级的所有数据当成一个整体进行打包发送。

  3. 接受数据包的过程是从物理层到应用层的逆过程

  4. 第2,3步称为封装和分用

  5. 有些情况下, 比如对于经典路由器/交换机来说,不需要将数据(包裹)进行完全的分用(拆包裹),只需要分用到某一层,然后加上新的信息,直接发送出去。

    数据传输到数据链路层

    • 首先交换机会对于发送过来的网络层数据包进行分用,去掉旧的帧头帧尾


    • 由交换机加上新的帧头帧尾,通过物理层发送出去。

    数据传输到网络层

    • 先经过数据链路层的以太网协议对于数据包进行解析,去掉以太网数据帧头帧尾

    • 再经过网络层的IP协议对于数据包进行解析,去掉IP报头


    • 从本级经过路由器加上新的IP报头

    • 再交给数据链路层的交换机加上新的帧头帧尾

    • 再交给物理层发送数据

5. 封装和分用

这是网络传输中最核心的流程

5.1 封装

  • 封装就是指原始的数据经过网络传输中的各层,由各层的主要工作器件对其进行添加必要信息,使得数据能够根据添加的信息发送到对应的目的地的过程。

    就好比商家不会直接把货物发送出去,是需要先装袋,再装箱,再装袋,再写地址的过程。

  • 封装是在发送阶段要做的事情。

过程:
  1. 应用层对于应用将要发送的数据,形成应用层数据包
  2. 传输层的主机对于应用层数据包按照UDP/TCP协议加上UDP/TCP报头,获得UDP/TCP数据包
  3. 网络层的路由器对于UDP/TCP数据包按照P协议加上IP报头,获得IP数据包
  4. 数据链路层的交换机对于P数据包按照以太网协议加上以太网数据帧头帧尾,获得以太网数据帧
  5. 物理层的物理设备将数据包转换为光信号、电信号、电磁波信号发送出去

5.3 分用

  • 分用就是指原始的数据经过网络传输中的各层,由各层的主要工作器件对其进行删除不必要信息(指报头、帧头帧尾等),使得数据能够直接在应用层进行使用。

    就好比收货人收到货物需要先拆袋,再拆箱,再拆袋的过程。

  • 分用是在接收阶段要做的事情。

过程:
  1. 物理层的硬件设备对于光信号、电信号、电磁波信号进行转换为数据包
  2. 数据链路层的交换机对于数据包进行解析,去掉以太网数据帧头帧尾
  3. 网络层的路由器对于2的数据包进行解析,去掉IP报头
  4. 传输层的主机对于3的数据包进行解析,去掉UDP/TCP报头
  5. 应用层对于4的数据包进行解析,将信息呈现在应用程序中

你可能感兴趣的:(javaEE,网络,java-ee)