网络互连
网络互连: 将多台计算机连接在一起, 完成数据共享
数据共享的本质是网络数据传输, 即计算机之间通过网络来传输数, 也叫做网络通信
根据网络互连的规模不同, 将网络划分为局域网和广域网
注意: 局域网和广域网是相对的概念
局域网LAN
又称内网, 局域网和局域网之间在没有连接的情况下, 无法通信
局域网组建网络 (组网) 的方式有多种:
- 基于网线直连
- 基于集线器组建
- 基于交换机组建
- 基于交换机和路由器组建 (二层交换机,三层路由)
广域网WAN
通过路由器, 将多个局域网连接起来, 就形成了广域网
如果属于全球化的公共型广域网, 则称为互联网
IP, 端口号
IP 和 端口号用于定位在网络世界(局域网/广域网)中的位置
IP 用于标识网络主机, 网络设备的地址, 即一台设备的网络地址
- IP 地址是一个32位的二进制数
eg: 01100100.00000100.00000101.00000001
通常以点分十进制的形式表示:
eg: 100.4.5.1端口号用于定位一台主机上的某个进程
- 端口号范围: 0~65535 (2^16 个)
- 其中有个概念叫知名端口号: 0~1023
他们被一些常用软件: QQ, 微信, 浏览器 … 占用
所以如果你要指定某个端口的使用, 最好设定在 1024~65535 的范围内
注意:
一个端口号只能绑定一个进程(一个端口号不能同时被多个进程使用)
但是一个进程可以绑定多个端口号
(比如开一个"QQ游戏软件", 里面有一堆游戏: 妈祖,象棋 …
“QQ游戏软件” 是一个进程,里面的每个单独的游戏占用一个端口
么一个进程就绑定了多个端口)
网络协议
网络协议: 网络通信警告的所有网络设备都必须共同遵守的一组约定, 规则.
通常由三要素组成:
- 语法: 数据和控制信息的结构或格式
- 语义: 请求和响应的格式
- 时序: 事件实现顺序的详细说明
协议最终体现为网络上的数据包的格式
网络协议的作用:
由于存在无数种数据格式: 二进制, 文本, 光信号, 电信号 …
网络协议用来规定通信过程中, 使用什么类型的数据, 用什么方式请求, 用什么类型响应 等等
所以协议就是一组约定,规则, 即大家共同遵守的秩序
五元组
在 TCP/IP 之中, 使用五元组来标识一个网络通信:
- 源IP: 标识源主机
- 目的IP: 标识目的主机
- 源端口: 标识通信中源主机中的发送数据的进程
- 目的端口: 标识通信中目的主机中接收数据的进程
- 协议号: 标识通信双发约定好的 数据格式 (你发二进制的内容, 我接受二进制的内容, 别你发了二进制形式内容, 我以字符格式接收)
协议分层
将网络协议分成几个部分, 每个部分专门处理某些内容
协议分层的作用:
- 对于使用者来说, 不必关注提供方是如何实现的, 只需要使用接口即可
- 对于提供方来说, 利用封装的特性, 隐藏实现细节, 只需要开放接口即可
不同分层之间, 上层应用调用下层接口, 下层接口实现上层应用
协议分层有两个常见划分模型: OSI 七层模型, TCP/IP 五层模型(或者有的地方也说是四层模型)
OSI 七层网络模型
这是只存在于教科书上的网络分层模型(没被真正实现, 只是提出了这样一种七层划分的概念)
应用层: 针对特定应用的协议 (微信, 网页, 邮件 …)
表示层: 设备固有数据格式和网络标准 数据格式的转换
会话层: 通信管理. 负责建立和断开通信连接
传输层: 管理两个节点之间的数据传输, 即 端到端的数据传输 (节点: 网络通信中所有的设备, 主机, 路由, 交换机 …)
网络层: 地址管理和路由选择 (路径选择)
数据链路层: 互连设备之间传送和识别数据帧, 点到点之间的数据传输
物理层: 比特流(0/1)和电子信号之间的转换, 负责光 / 电信号的转换及数据传输
挺抽象的, 了解就好, 重点是学习我们正在用的 TCP/IP 五层模型
TCP/IP 五层模型
有的时候也说是 TCP/IP 四层网络模型, 原因是有人认为物理层是硬件相关的操作, 和我们网络通信有什么关系
(不是), 所以把物理层删掉了, 这里不用太过在意, 知道是怎么回事就好.
这里有个便于记忆的点: TCP/IP 就是把 OSI 七层模型中的表示层和会话层合并到了应用层里 (有些大佬认为这仨层都是和应用相关, 没必要分的那么细 …) (考试的时候我死活记不住表示层和会话层 =^= )
应用层: 负责应用程序间的沟通, eg: HTTP, FTP, Telnet …
传输层: 负责两台主机之间的数据传输, eg: TCP, UDP, 保证数据可靠的从源主机发送到目的主机.
网络层: 负责地址管理和路由选择, eg: IP, ICMP, 在IP协议中, 通过 IP 地址标识主机, 并通过路由表来规划两台主机之间的数据传输路线.
数据链路层: 负责设备之间的数据帧的传送和识别. eg: 设备驱动程序及接口卡
物理层 : 负责光/电信号的转换及数据传输.
不好记吧, 总有些取巧的方式 …
先了解几个概念, 网络通信过程中会经过很多设备, 其中的每个设备称为 节点 , 数据从 源主机, 途径许多节点, 发送到目的主机
以微信聊天为例
应用层: 负责源主机和目的主机上的应用程序, 即微信和微信之间的匹配
传输层: 保证源主机和目的主机之间数据传输的可靠性
网络层: 源主机到目的主机之间, 有很多条线路可供网络通信选择, 网络层负责路径规划
数据链路层: 负责相邻节点之间的数据传输
物理层: 数据在设备之间通过光信号(电缆) 传输, 而在设备上以电信号(高低电平 =>01信号) 存储, 物理层负责光/电信号的转换
网络设备所在分层
主机的操作系统内核 实现了从传输层到物理层的内容
路由器 实现了网络层到物理层的内容 (三层路由)
交换机 实现了数据链路层到物理层的内容 (二层交换)
集线器 实现了物理层的内容
此处的路由器和交换机都是指传统意义上的路由器和交换机 (因为目前已经有 四层的路由器 和 三四层的交换机 了, 科技的发展是多么伟大 …)
封装和分用
不同协议层对数据包有不同的称呼, 在传输层叫做 段(segment), 在网络层叫做 数据报(datagram), 在链路层叫做 帧(frame)
应用层数据通过协议栈发送到网上时, 每层协议都要加上一个数据首部(header), 称为 封装(Encapsulation)
首部信息中包含一些类似于: 首部长度, 载荷长度, 数据类型, 上层使用协议 等等的信息
数据封装成帧后发送到传输介质上, 到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理, 这个过程叫做 分用
数据的封装过程
数据的分用过程
IP 地址 (Internet Protocol Adress) 互联网协议地址,又称网际协议地址
作用 : IP 地址时 IP 协议提供的一种统一的地址格式, 它为互联网上的每一个网络和每一台主机分配一个逻辑地址. 依次来屏蔽物理地址的差异.
格式 : 32位二进制数 & 点分十进制
组成 : 网络号 + 主机号
子网掩码
网络号 = 子网掩码 “按位与” IP地址
一般用于判断目的 IP 和本机 IP 是否位于同一网段
MAC 地址 (Media Access Control Address)
用于标识网络设备的硬件物理地址 (用来识别数据链路层中相连的节点)
网络设备及相关技术
集线器
发送到集线器的任何数据, 都会被转发到其他所有端口 (指集线器内部端口)
交换机
内部维护一张 MAC 地址转换符, 该表记录了 MAC 地址与(交换机中的)端口之间的映射. 交换机用于主机和主机间的数据报转发
路由器
作用 :
- 作为网关
- 划分公网和局域网
- 将局域网划分为不同网段的多个子网
- 路由
- 路由即能够找出端到端的路线 (主机到主机)
ARP
ARP 协议 : 介于网络层和数据链路层之间的协议. ARP 协议建立了 IP 地址 和 MAC 地址的映射关系
ARP 寻址 : 在数据链路层, 寻找下一路设别 MAC 地址的过程, 称为 ARP 寻址
ARP 缓存表 : 记录了 IP 地址和 MAC 地址的对应关系. 主机和路由中均有各自的 ARP 缓存表
冲突域 (基于物理层)
主机之间通过网络设备 (集线器, 交换机)的物理端口, 网线相连时, 多个主机在同一时刻同时发送数据报. 如果存在冲突, 则该网络范围为一个冲突域 (碰撞域)
- 集线器的所有端口, 为一个冲突域
- 交换机可分割冲突域. 分割后, 一个端口为一个冲突域
广播域 (基于数据链路层)
广播是指某个网络中的主机, 同时向网络中的其他主机发送数据, 这个数据所能传播到的范围即为广播域
- 集线器的所有端口为一个广播域
- 一个交换机为一个广播域
- 路由器可以隔离广播域, 其划分的一个网段为一个广播域