概览
1. 网络发展
-
独立模式: 计算机之间相互独立
-
网络互联: 多台计算机连接在一起, 完成数据共享
- 网络互联:使用交换机
- 局域网:通过交换机和路由器连接在一起
- 广域网:
组网方式:公网上,网络节点组成,每一个节点,可以是:
所谓局域网和广域网只是一个相对概念,广域网也可以看做一个比较大的局域网。
- 网络互联:使用交换机
2. 网络协议初识
- 协议是一种约定,计算机之间的传输媒介是光信号和电信号,通过频率和强弱来表示0和1这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式。
- 本质上是数据格式的定义,知名的数据格式,大家都遵循的规范,属于协议。
- 序列化 / 反序列化:相对比较小众,不属于网络通用
2. 1 OSI七层模型
一种网络分层的设计方法论,比较复杂且不实用,落地时几乎都是TCP/IP 四层/五层模型
由高到底:
- 应用层:应用程序
- 表示层:展示不同表现形式的信息
- 会话层:通过会话管理网络连接,建立和断开
- 传输层:确保数据传输的可靠性
- 网络层:地址管理与路由选择
- 数据链路层:互联设备之间传送和识别数据帧
- 物理层:界定连接器和网线的规格
2.2 TCP/IP五层模型(或四层模型:不算物理层)
- TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
- TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
TCP/IP五层模型图示:
- 对于一台主机,他的操作系统内核内实现了从传输层到物理层的内容。主机应用程序在应用层 —— 五层的封装分用
- 对于一台路由器,他实现了从网络层到物理层 —— 下三层的封装分用
- 对于一台交换机,他实现了从数据链路层到物理层 —— 下两层的封装分用
- 对于集线器,他只实现了物理层。
2.3 封装分用的理解
- 不同的协议层对数据包有不同的称谓,在传输层叫做段,在网络层叫做数据报,在链路层叫做帧。
- 应用层应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装。
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
- 封装:发送数据时,从高到低的顺序,按照对应网络分层的协议包装数据
- 分用:接收到数据时,从低到高进行对应网络分层的协议解析
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理.
- 封装:发送数据时,从高到低的顺序,按照对应网络分层的协议包装数据
2.4 网络中的地址管理
2.4.1 认识IP
- IP地址是在IP协议中, 用来标识网络中不同主机的地址
- 分为A-E五大类,部分范围是局域网IP,部分范围是广域网IP
- 对于IPv4来说, IP地址是一个4字节, 32位的整数
- 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255
作用:
- 网络号:前三个部分组成用以标识网段
- 主机号:最后一个部分用以标识主机
- 局域网内(局域网IP):网段唯一,同一个网段,主机号唯一
- 公网(公网IP):公网IP唯一
- IP地址描述的是路途总体的起点和终点 —— 给人用的,网络主机的逻辑地址。
2.4.2 认识MAC
MAC地址用来识别数据链路层中相连的节点
- 和网卡硬件绑定的,全球唯一,出厂时就确定了,不能修改
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
作用:
- 网络数据传输定位网卡硬件位置。一个主机可能有多个网卡,电脑硬件定位数据发送的目的位置只能使用MAC。
- MAC地址描述的路途上的每一个区间的起点和终点 —— 给电脑硬件用的,网络主机的物理地址
3. 网络传输流程
3.1 理解网络数据传输
-
IP、MAC起的作用
-
封装分用:
- 发送数据从高到低封装
- 接受数据从低到高分用
-
结合IP、MAC,理解网络数据传输,本质上是一跳一跳的传输数据
-
接受数据报的主机:可能在一些情况下(广播,转发),目的MAC不是我,也能收到数据
3.2 通信五元组
—— 源IP、源端口号、目的IP、目的端口号、协议号
-
IP:标识主机,给人用
- 源IP:发送数据的主机
- 目的IP:接收数据的主机
-
端口号:标识某个主机进程
- 源端口:标识发送数据的进程
- 目的端口:接收数据的进程
-
协议号:进程要封装、解析数据报的数据格式
3.3 DNS协议
- DNS是应用层协议
- DNS底层使用UDP进行解析
- 浏览器会缓存DNS结果,主机/路由器存在DNS缓存
域名查询的方式:
- 树形结构从下向上进行查找(缓存、域名服务器)
- 特殊的IP、域名:本机IP为127.0.0.1,本机域名为localhost
3.4 网络数据传输流程
3.4.1 网络互联的方式
主机ARP缓存表存有目的MAC:
流程:
- 主机1查找本机ARP缓存表,根据ARP协议,找到MAC
- 数据报由主机1,发送到集线器 。数据报中源MAC(主机1),目的MAC(主机3),真实的数据报
- 集线器转发数据到除主机1的其他所有相连主机(主机2,主机3)
- 主机2接收:数据报中,目的MAC不是我,丢弃
主机3接收:数据报,目的MAC是我,接收。目的IP是我,交给对应端口进程处理
主机ARP缓存表中找不到目的MAC:
流程:
- 主机1查找本机ARP缓存表,发现找不到
- 主机1发送广播数据报。 非真实数据,只是要求对应主机返回MAC的数据。
源MAC:主机1
目的MAC:FF:FF:FF:FF:FF:FF,以太网帧首部的硬件地址为该地址表示广播。 - 集线器转发到主机2,主机3
- 主机2接收:要求的IP不是我,丢弃
主机3接收:要求的IP是我,返回我的MAC - 主机1收到主机3的返回数据(IP,MAC),更新自己的ARP缓存表
- 主机1发送真实的数据到主机3
源MAC/ 源IP:主机1的MAC/IP
目的MAC/目的IP:主机3的MAC/IP
使用集线器的缺陷:
- 网络冲突,这样构成的网络区域叫冲突域/碰撞域
- 数据报中有目的MAC,集线器还是会转发到其他所有端口
3.4.2 局域网交换机组网的方式
流程:
- 主机1查找本机ARP缓存表,如果找不到,发送广播数据报。
- 交换机转发到其他所有端口(广播)
- 主机2丢弃,主机3返回自己的MAC
- 交换机知道主机3的MAC,主机1直到主机3的MAC(更新ARP缓存表)
- 主机1发送真实的数据给交换机。
源MAC:主机1
目的MAC:主机3 - 交换机查找自己的MAC地址转换表,通过MAC找端口,发送到对应端口
- 主机3接收:目的MAC是我,目的IP也是我
说明:
- 前四步和集线器流程一样,根据IP找MAC
- 后3步是交换机通过MAC找对应端口,直接发送给目的MAC主机,不会影响其他主机。
3.4.3 局域网交换机+路由器组网的方式
路由器:
-
模式1:
-
模式2:
传输流程:
- 通过目的IP+子网掩码,计算出目的主机是否和本机在同一个网段
通过IP和子网掩码按位与的操作,得到网络号,这样在发送数据报时,目的IP和子网掩码计算获得网段,可以判断是否和本机处于同一个网段 - 如果是,和之前交换机组局域网流程一致
- 如果不是,表示我主机1处理不了,要发送给网关转发
- 数据报发送给网关设备
源IP:192.168.1.x 目的IP:192.168.2.y
源MAC:主机1的MAC 目的MAC:路由器网卡1的MAC - 路由器接收到数据报,分用:物理层到网络层,所以可以获取目的IP
- 路由器查找自己的ARP缓存表(IP找MAC)
- 如果找不到,路由器发广播
- 有了MAC,直接发到主机2
3.4.4 广域网网络数据传输流程
主机1:发送http://www.baidu.com网络数据报
流程:
-
DNS协议:域名转IP,本机DNS缓存中找===> 向上查找,如果根域名服务器找不到,表示公网上没有该域名主机
-
找到IP,数据报IP部分,PORT部分都有了
源IP:主机1的IP 目的IP:百度服务器的IP
源MAC:主机1的MAC 目的MAC:? -
根据目的IP计算是否和主机1在同一网段
主机1的IP+子网掩码计算出主机1的网段;目的IP+子网掩码计算出目的主机的网段,比较两个网段是否为同一网段 -
不是同一个网关:发送数据报到网关
找网关的MAC,在本机的ARP缓存表中,基于ARP协议(IP映射为MAC),通过网关IP找MAC
4.1 如果找不到,发送询问MAC的广播数据报,此时源MAC/IP为主机1,目的MAC:FF:FF:FF:FF:FF:FF,目的IP:网关(路由器1网卡1),最后网关会返回自己的MAC
4.2 如果找到,发送http数据报到网关(路由器1),此时:
-
交换机转发:在MAC地址转换表(MAC映射端口),通过目的MAC找端口,不存在数据的封装、分用
-
路由器接收、分用数据报
局域网IP不能在公网上使用要使用公网IP来收发数据
分用:可以拿到数据报中IP,PORT,MAC
路由:路由表(信息(很多公网IP+坐标)、复杂算法),计算目的IP方向:数据报下一个发送到哪个网络设备,离目的IP更近
NAT:局域网IP映射公网IP
NAPT:局域网IP+局域网端口(该IP主机进程绑定的) ===> 映射为公网IP+公网端口(路由器上的进程端口)
-
路途中的设备:
-
百度服务器:
-
路途上的设备:
-
路由器1接收响应数据: 分用,修改,封装
-
主机1接收数据报,分用