• 网络初识——JavaEE


    网络初识

    局域网和广域网

    局域网:通过网线把主机连接起来就是一个局域网。一般组建局域网,都会使用一些转发设备:交换机,路由器。
    在这里插入图片描述
    上面这种就是借助交换机组成局域网。

    基于路由器组建局域网,就像图片这样:
    在这里插入图片描述
    基于路由器组建局域网是最常见的组网设备。

    比较大的局域网就是广域网

    IP地址

    IP 地址:描述了网络上的一个主机的位置。IP 地址本质上是一个 32 位的整数,由于 32 位的整数,不方便人来记忆和读,一般常见的操作都是把这 32 位的整数,按照每个字节,分成四个部分,中间用 . 来分隔,也就是 点分十进制。

    特殊的 IP 地址: 127.0.0.1 一个特殊的 IP 地址,环回 IP,表示自己这个主机。

    端口号

    端口号:描述了一个主机上的 某个应用程序(就类似于学校里面收快递的时候,收件人的电话)。端口号本质上是一个 2 个字节(16位)的无符号整数,也就是 0 - 65535,3306 MySQL 默认的端口号。

    协议

    协议很重要,本质上就是约定,发出来的数据是啥样的格式,,接收方按照什么格式来接收。

    网络通信的时候,本质上传输的是:光信号和电信号。通过光信号的频率(高频率/低频率)。电信号的电平(高电平/低电平)来表示 0/1。

    协议拆分

    网络通信这个过程很复杂,里面有很多很多细节。如果只通过一个协议来约定所有的细节,这个协议就会非常庞大、复杂。更好的办法就是把一个大的复杂的协议,拆成多个小的,更简单的协议,每个协议,负责一部分工作。

    好处

    1. 每层协议不需要理解其他层协议的细节(更好的做到了封装)。就像打电话的人,不需要理解电话的工作原理,就能完成打电话的操作。制造电话的人,也不需要成为语言大师。
    2. 把对应层的协议替换成其他协议(更好的耦合)。就像打电话的人,可以使用有线电话,也可以使用无线电话。打电话的人,可以使用汉语,也可以使用英语。

    网络协议分层

    1. OSI 七层网络模型。实际使用当中是简化版本,就是 TCP/IP 五层(四层)模型。
    2. 五层模型:物理层,数据链路层(网卡层),网络层,传输层,应用层(程序员关注实现的内容)。
    3. 说四层模型的时候,就是不讨论物理层,因为 物理层 是硬件方面的。

    如下图:
    在这里插入图片描述
    具体层的功能:

    1. 物理层:网络通信中的硬件设备。
    2. 数据链路层:完成相邻连个设备之间的通信。具体的节点和节点之间的路线和通信方式。
    3. 网络层:负责点到点之间的通信,网络中任意节点和任意节点之间的通信。网络层负责规划出最优路线。
    4. 传输层:负责端到端之间的通信,起点到终点,只关注结果,不关注过程是怎么走的。
    5. 应用层:和应用程序密切相关的,你传输的这个数据,是干啥用的,不同的应用程序就有不同的用途。

    网络设备所在的分层

    1. 一台主机就对应了 物理层 到 应用层 五层。
    2. 一台路由器主要就是 物理层 到 网络层(主要是实现了物理层,数据链路层,网络层)。
    3. 一台交换机主要就是 物理层 到 数据链路层(主要实现了物理层,数据链路层)。

    封装

    描述了不同的分层的协议之间,是如何相互配合的。就是将应用层的内容,封装为传输层的内容。封装的时候就是将上面放上一些辅助的信息。封装的时候不需要考虑脏数据。

    应用层

    举例

    1. 比如用 QQ 来发送消息,用户A 输入内容之后,点击发送键。
    2. QQ 应用程序,就根据用户输入的内容,把数据构成一个应用层的协议报文。
    3. 应用层协议就调用操作系统提供的 API(socket API),把应用层的数据交给传输层(就进入操作系统内核了)。

    假设构造成的协议:
    在这里插入图片描述

    传输层(操作系统内核)

    1. 根据刚才传输过来的数据,基于当前使用的传输层协议,来构造出一个传输层的协议报文。
    2. 传输层最典型的协议:UDP,TCP。
    3. 拿到数据的时候,要进行打包封装,主要就是为了可以贴上辅助转发的标签信息。然后就会把传输层的数据报交给网络层。

    构造成的数据报,TCP 数据报 = TCP 报头 + 数据载荷(Payload,也就是一个完整的应用层数据):
    在这里插入图片描述

    网络层(操作系统内核)

    拿到了完整的传输层数据报,就会在根据当前使用的网络层协议(例如 IP),再次进行封装,把 TCP 数据报构造成 IP 数据报,还是添加一个协议报头。仍然是字符串拼接的过程。紧接着,当前的 网络层协议,就会把这个 IP 数据报,交给数据链路层。

    数据报格式如下:
    在这里插入图片描述
    IP 数据报 = IP 协议报头 + 载荷(完整的 TCP/UDP 的数据报)。

    IP 数据报当中也有很多重要的信息:其中最重要的就是 源IP 和 目的IP。相当于发件人的地址,和收件人的地址。

    数据链路层(驱动程序)

    在刚才的 IP 数据报基础上,根据当前使用的数据报链路层的协议,给构成一个,数据链路层的数据报。典型的数据链路层的协议,叫做 “以太网” ,就会构造成一个 “以太网数据帧”。

    数据报格式如下:
    在这里插入图片描述
    以太网数据帧:

    1. 帧头 + IP 数据报 + 帧尾 帧头里面的信息是: 接下来要传给的设备地址是啥。
    2. 随着数据往下一个设备转发,帧头中的地址一直在时刻发生改变。

    数据链路层,又会把这个数据交给物理层。

    物理层(硬件设备,网卡)

    物理层做的工作,

    1. 就是根据刚才的以太网数据帧(其实就是一组 0 1),把这里的 0 1 变成 高低电平,通过网线传输出去。
    2. 或者把这里的 0 1 变成 高频/低频 的电磁波,通过 光纤/无线 的方式传播出去。
    3. 此时就离开主机了,前往下一个设备。下一个设备可能是 路由器/交换机/其他设备。

    分用

    物理层

    1. 分用就是封装的逆过程。
    2. 分用的时候,数据最先进入的是物理层。
    3. 主机 B 的网卡感知到一组 高电平 和 低电平,然后就会把这些店铺翻译成 0 1 的一串数据。
    4. 然后这一串 0 1 就是一个完整的以太网数据帧。然后 物理层 就把数据交给 数据链路层。

    数据链路层

    拿到的数据报如下:
    在这里插入图片描述

    负责对这个数据进行解析,去掉帧头和帧尾,取出里面的 IP 数据报。然后交给 网络层协议。

    网络层协议(IP 协议)

    拿到的数据报如下:
    在这里插入图片描述
    网络层协议(IP 协议):又会对这个数据进行解析,去掉 IP 协议报头,取出里面的 TCP 数据报,再交给传输层。

    传输层(操作系统内核)

    拿到的数据报如下:
    在这里插入图片描述又会对这个数据进行解析,去掉 TCP 报头,取出里面的 TCP 数据报,再交给应用层。

    应用层(应用程序)

    拿到的数据报如下:
    在这里插入图片描述
    就会调用 socket API 从内核中读取到这个应用层的数据报,再按照应用层协议进行解析,然后根据解析结果显示到窗口中。

    封装和分用的过程中要经历的内容

    在封装和分用这个过程中,会有无数个路由器和交换机。不论有多少个设备,都是下面这两种方法。

    经历交换机

    经历交换机的话,就差不多是这种情况:
    在这里插入图片描述

    经历路由器

    在这里插入图片描述

  • 相关阅读:
    Mybatis 08
    中关村科幻产业创新中心 “科技赋能文化旅游,洞见哈萨克斯坦”数字旅游展盛大开幕
    阿里云添加端口
    玩转Mysql系列 - 第24篇:如何正确的使用索引?
    初步探索 superset新增导出excel功能
    写一个函数del,用来删除动态链表中指定的节点
    恭喜获奖得主 | 互动有礼获赠 Navicat Premium
    VF01销售开票发票金额控制增强
    MATLAB | 三个趣的圆相关的数理性质可视化
    HCIP-R&S By Wakin自用笔记(2)OSPF之OSPF回顾、虚连接
  • 原文地址:https://blog.csdn.net/sjp151/article/details/125621624