目录
[局域网 LAN](#局域网 LAN)
[1. 基于网络直连](#1. 基于网络直连)
[2. 基于集线器(Hub)组建](#2. 基于集线器(Hub)组建)
[3. 基于交换机(Switch)组建](#3. 基于交换机(Switch)组建)
[4. 基于交换机和路由器(Router)组建](#4. 基于交换机和路由器(Router)组建)
[广域网 WAN](#广域网 WAN)
[IP 地址](#IP 地址)
[1. 概念](#1. 概念)
[2. 格式](#2. 格式)
[1. 概念](#1. 概念)
[1. 概念](#1. 概念)
[2. 作用](#2. 作用)
[3. 协议分层](#3. 协议分层)
[3.1 什么是协议分层](#3.1 什么是协议分层)
[3.2 分层的作用](#3.2 分层的作用)
[3.2.1 上层不需要了解下层的细节(封装)](#3.2.1 上层不需要了解下层的细节(封装))
[3.2.2 灵活的调整/替换某层的协议](#3.2.2 灵活的调整/替换某层的协议)
[4. 五元组](#4. 五元组)
[4.1 源 IP :](#4.1 源 IP :)
[4.2 源端口号 :](#4.2 源端口号 :)
[4.3 目的 IP :](#4.3 目的 IP :)
[4.4 目的端口号 :](#4.4 目的端口号 :)
[4.5 协议号 :](#4.5 协议号 :)
[5. OSI 七层网络模型 [只是在教科书中]](#5. OSI 七层网络模型 [只是在教科书中])
[5.1 物理层:](#5.1 物理层:)
[5.2 数据链路层:](#5.2 数据链路层:)
[5.3 网络层:](#5.3 网络层:)
[5.4 传输层:](#5.4 传输层:)
[5.5 会话层:](#5.5 会话层:)
[5.6 表示层:](#5.6 表示层:)
[5.7 应用层:](#5.7 应用层:)
[6. TCP/IP 五层(或四层)网络模型 [真实世界的情况]](#6. TCP/IP 五层(或四层)网络模型 [真实世界的情况])
[6.1 物理层:](#6.1 物理层:)
[6.2 数据链路层:](#6.2 数据链路层:)
[6.3 网络层:](#6.3 网络层:)
[6.4 传输层:](#6.4 传输层:)
[6.5 应用层:](#6.5 应用层:)
[7. 网络设备所在分层](#7. 网络设备所在分层)
[7.1 对于一台主机:](#7.1 对于一台主机:)
[7.2 对于一台路由器:](#7.2 对于一台路由器:)
[7.3 对于一台交换机:](#7.3 对于一台交换机:)
[7.4 对于集线器:](#7.4 对于集线器:)
[8. 网络分层对应](#8. 网络分层对应)
[9. 网络数据传输的基本流程 (封装和分用)](#9. 网络数据传输的基本流程 (封装和分用))
[9.1 应用层](#9.1 应用层)
[9.2 传输层](#9.2 传输层)
[9.3 网络层](#9.3 网络层)
[9.4 数据链路层](#9.4 数据链路层)
[9.5 物理层](#9.5 物理层)
网络发展史
独立模式
// 每个计算机之间相互独立, 每个终端各自持有客户数据
网络互联
// 随着时代的发展, 越来越需要计算机之间互相通信, 共享软件和数据, 即以多个计算机协同工作来完成业务, 就有了网络互联
// 网络互联: 将多台计算机连接在一起, 完成数据共享
// 数据共享的本质是网络数据传输, 即计算机之间通过网络来传输数据, 也称为网络通信
// 根据网络互联的规模不同, 可以划分为局域网和广域网
局域网 LAN
// 局域网 (Local Area Network), 简称 LAN
// 局域网内的主机之间能方便的进行网络通信, 又称为内网; 局域网和局域网之间在没有连接的情况下, 是无法通信的
// 局域网组建网络的方式有很多种:
1. 基于网络直连
// 主机之间通过网线相互连接
2. 基于集线器(Hub)组建
// 主机通过集线器连接
3. 基于交换机(Switch)组建
// 主机通过交换机连接
4. 基于交换机和路由器(Router)组建
// 路由器向下连接多个交换机, 交换机向下连接多台主机
广域网 WAN
// 广域网, 即 Wide Area Network, 简称 WAN
// 通过路由器, 将多个局域网连接起来, 在物理上组成很大范围的网络, 就形成了广域网, 广域网内部的局域网都属于其子网
网络通信基础
// 网络互联的目的是进行网络通信, 即网络数据传输, 更具体一点, 是网络主机上的不同进程间, 基于网络传输数据
IP 地址
1. 概念
// IP 地址主要用于标识网络主机, 其他网络设备 (如路由器) 的网络地址. 简单说, IP 地址用于定位主机的网络地址 (描述网络上的一个设备所在的位置)
2. 格式
// IP 地址是一个 32 位的二进制数, 通常被分割为 4 个 "8位二进制数(也就是四个字节)", 通常用 "点分十进制" 的方式来表示, 即 a.b.c.d 的形式
端口号
1. 概念
// 在网络通信中, IP 地址用于标识主机网络地址, 端口号可以标识主机中发送数据,接收数据的进程. 简单说: 端口号用于定位主机中的进程(区分一个主机上不同的应用程序)
// 一个网络程序, 在启动的时候, 都需要绑定一个或者多个端口号, 后续的通信过程都需要依赖端口来进行展开的, (mysql 默认绑定的端口 3306)
2.格式
// 端口号是 0 ~ 65535 范围的数字, 在网络通信中, 进程可以通过绑定一个端口号, 来发送及接收网络数据
认识协议
1. 概念
// 协议, 网络协议的简称, 网络协议是网络通信 (即网络数据传输) 经过的所以网络设备都必须共同遵从的一组约定, 规则. (描述了网络通信传输的数据的含义)
// 协议 (protocol) 最终体现为在网络上传输的数据包的格式
2. 作用
// 让大家都按照同样的标准来研发设备, 大家搞出来的都可以在一起相互通信了
3. 协议分层
3.1 什么是协议分层
// 对应网络协议来说, 靠一个协议解决所有问题,会导致这个协议非常复杂, 因此往往会对这些协议进行分类,分层次定义
// 上层协议, 调用下层协议, 下层协议, 为上层提供服务支持, 这样可以避免层级调用引起的混乱
// 也就是给这些协议搞了明确的层级关系, 避免跨层之间的交互, 降低耦合, 提高这个系统的可读性
3.2 分层的作用
3.2.1 上层不需要了解下层的细节(封装)
3.2.2 灵活的调整/替换某层的协议
4. 五元组
// 在 TCP/IP 协议中, 用五元组来标识一个网络通信:
4.1 源 IP :
// 标识主机
4.2 源端口号 :
// 标识源主机中该次通信发送数据的进程
4.3 目的 IP :
// 标识目的主机
4.4 目的端口号 :
// 标识目的主机中该次通信接收数据的进程
4.5 协议号 :
// 标识发送进程和接收进程双方约定的数据格式
5. OSI 七层网络模型 [只是在教科书中]
5.1 物理层:
// 描述的网络通信中的一些基础设施需要遵守的规范和约定 (网线, 网口等等的物理设施的形状和规格)
5.2 数据链路层:
// 相邻节点(互联设备)之间, 数据如何传输
5.3 网络层:
// 地址管理与路由选择 (路线规划)
5.4 传输层:
// 负责两个节点之间的数据传输. 只关注起点和终点, 不关注中间过程(数据从哪出发, 要到哪里去)
5.5 会话层:
// 通信管理, 负责建立和断开通信连接 (数据流动的逻辑通路), 管理运输层以下的分层
5.6 表示层:
// 设备固有数据格式和网络标准数据格式的转换
5.7 应用层:
// 针对特定应用的协议(拿到这个数据具体要用来干啥)
6. TCP/IP 五层(或四层)网络模型 [真实世界的情况]
// 算上 物理层 就是 五层, 不算就是 四层 (物理层是偏硬件的, 和软件关系不大)
// TCP/IP 是一组协议的代名词, 它包含很多协议, 组成了 TCP/IP 协议簇
// TCP/IP 通讯协议采用了 5 层的层级结构, 每一层都呼叫它的下一层所提供的网络来完成自己的需求
6.1 物理层:
// 负责光/电信号的传递方式
6.2 数据链路层:
// 负责设备之间的数据帧的传送和识别
6.3 网络层:
// 负责地址管理和路由选择
6.4 传输层:
// 负责两台主机之间的数据传输
6.5 应用层:
// 负责应用程序间的沟通
7. 网络设备所在分层
7.1 对于一台主机:
// 它的操作系统内核实现了从传输层到物理层的内容, 即是 TCP/IP 五层模型的下四层
7.2 对于一台路由器:
// 它实现了从网络层到物理层, 即是 TCP/IP 五层模型的下三层
7.3 对于一台交换机:
// 它实现了从数据链路层到物理层, 即是 TCP/IP 五层模型的下两层
7.4 对于集线器:
// 它只实现了物理层
8. 网络分层对应
// 数据传输时, 经过不同的网络节点 (主机, 路由器) 时, 网络分层需要对应
// 以下为同一段内的两台主机进行文件传输:
|-----|------------------------|
| 应用层 | Telnet, FTP 和 e-mail 等 |
| 传输层 | TCP 和 UDP |
| 网络层 | IP, ICMP 和 IGMP |
| 链路层 | 设备驱动程序及接口卡 |
9. 网络数据传输的基本流程 (封装和分用)
// 假设主机 A 给主机 B 发送一个数据, 过程如下:
9.1 应用层
// 根据应用层协议获取构造好的应用层数据包
// 所谓的 "构造应用层数据报" 过程, 就是按照一定格式进行字符串拼接
// 发送方和接收方, 需要达成一致
// 应用程序, 就会调用传输层提供的接口, 把上述数据交给传输层进行处理
9.2 传输层
// 传输层协议有很多, 其中最主要的是 TCP 和 UDP
// 假设使用 UDP 协议, 上面把数据从应用层传到传输层, 交给 UDP, 于是 UDP 协议按照字节的协议格式生成一个 UDP 数据报(UDP 报头和 UDP 的载荷)
// UDP 不关心应用层数据, 只是把应用数据当做一个字符串, 构造出一个 UDP 数据报
// 此时, 传输层会把构造好的 UDP 数据报, 进一步交给网络层
9.3 网络层
// 网络层最主要的协议是: IP 协议
// IP 协议也会根据自己的格式, 构造 IP 数据报 (IP 报头 + UDP 报头 + IP 数据报的载荷)
// IP 报头中最关键的是 源IP 和 目的IP
// IP 协议也不会关心载荷内容是啥, 只是单纯的把载荷当做一个字符串, 在这个基础上拼接上另外一个 IP 报头
// 接下来就需要把数据传输到数据链路层
9.4 数据链路层
// 以太网, 又会针对 IP 数据报, 进行进一步封装, 再添加上数据头和数据尾
// 以太网也不关心载荷是啥, 知识把载荷当做字符串, 进一步的拼接上帧头帧尾, 构造成 以太网数据帧 (帧头 + 以太网数据报的载荷[IP 报头 + UDP 报头 + 载荷] + 帧尾)
// 网络上传输的数据的基本单位, 有很多种术语叫法 (包 [packet], 帧 [frame], 报 [Datagram], 段 [segment])
9.5 物理层
// 上面传输过来的数据, 本质上都是二进制的数据 (一组 0101 构成的数据)
// 硬件设备(网卡) 就需要对上述数据进行转换了, 转换为 光信号/ 电信号/ 电磁波
// 到这里, 主机 A 就完成了发送过程, 然后来看 接收方 (主机 B)的情况
- 物理层 接收光信号/ 电信号/ 电磁波
// 猫: (调制解调器)调制: 把你要传输的信息放到光电信号中; 解调: 从光电信号中把信息取出来
// 它需要把收到的信号进行解调, 得到了一串1010 二进制序列 (以太网帧)
// 接下来就会把数据传给它的上一层 : 数据链路层
- 数据链路层
// 数据链路层的以太网协议, 就会针对这个数据进行解析
// 去掉 帧头和 帧尾
// 然后将载荷部分取出来, 交给上层 : 网络层
- 网络层
// 网络层的 IP 协议, 就会继续针对这个数据进行解析, 去掉 IP 报头
// 然后将载荷部分取出来, 继续交给上层 : 传输层
- 传输层
// 根据 IP 报头中的字段, 就知道当前这个载荷是一个 UDP 数据报, 就交给传输层的 UDP 协议, UDP 针对数据报继续进行解析, 去掉 UDP 报头
// 然后将载荷部分取出来, 继续交给上层 : 应用层
- 应用层
// UDP 报头中, 有一个字段 : 目的端口, 根据目的端口找到关联的应用程序, 就交给这个程序即可
// 其中, 主机 A , 从上到下, 依次添加报头的过程, 称为封装; 主机 B , 从下到上, 依次解析报头的过程, 称为 分用
// 封装就相当于在打包快递, 分用相当于是在拆快递
// 每次网络数据传输都要经历这些过程