目录
网络发展史
独立模式
网络互联
局域网 LAN
1. 基于网络直连
2. 基于集线器(Hub)组建
3. 基于交换机(Switch)组建
4. 基于交换机和路由器(Router)组建
广域网 WAN
网络通信基础
IP 地址
1. 概念
2. 格式
端口号
1. 概念
2.格式
认识协议
1. 概念
2. 作用
3. 协议分层
3.1 什么是协议分层
3.2 分层的作用
3.2.1 上层不需要了解下层的细节(封装)
3.2.2 灵活的调整/替换某层的协议
4. 五元组
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 五层(或四层)网络模型 [真实世界的情况]
6.1 物理层:
6.2 数据链路层:
6.3 网络层:
6.4 传输层:
6.5 应用层:
7. 网络设备所在分层
7.1 对于一台主机:
7.2 对于一台路由器:
7.3 对于一台交换机:
7.4 对于集线器:
8. 网络分层对应
9. 网络数据传输的基本流程 (封装和分用)
9.1 应用层
9.2 传输层
9.3 网络层
9.4 数据链路层
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)的情况
1) 物理层 接收光信号/ 电信号/ 电磁波
// 猫: (调制解调器)调制: 把你要传输的信息放到光电信号中; 解调: 从光电信号中把信息取出来
// 它需要把收到的信号进行解调, 得到了一串1010 二进制序列 (以太网帧)
// 接下来就会把数据传给它的上一层 : 数据链路层
2) 数据链路层
// 数据链路层的以太网协议, 就会针对这个数据进行解析
// 去掉 帧头和 帧尾
// 然后将载荷部分取出来, 交给上层 : 网络层
3) 网络层
// 网络层的 IP 协议, 就会继续针对这个数据进行解析, 去掉 IP 报头
// 然后将载荷部分取出来, 继续交给上层 : 传输层
4) 传输层
// 根据 IP 报头中的字段, 就知道当前这个载荷是一个 UDP 数据报, 就交给传输层的 UDP 协议, UDP 针对数据报继续进行解析, 去掉 UDP 报头
// 然后将载荷部分取出来, 继续交给上层 : 应用层
5) 应用层
// UDP 报头中, 有一个字段 : 目的端口, 根据目的端口找到关联的应用程序, 就交给这个程序即可
// 其中, 主机 A , 从上到下, 依次添加报头的过程, 称为封装; 主机 B , 从下到上, 依次解析报头的过程, 称为 分用
// 封装就相当于在打包快递, 分用相当于是在拆快递
// 每次网络数据传输都要经历这些过程