网络初识——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 从内核中读取到这个应用层的数据报,再按照应用层协议进行解析,然后根据解析结果显示到窗口中。

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

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

经历交换机

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

经历路由器

在这里插入图片描述

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lockey-s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值