1、网络划分
(1)局域网
局域网 ,某个小范围组建的网络,内部可以传输数据; 典型代表 :家用路由器;
(2)广域网
广域网 :多个局域网构建的大型网络; 公认的广域网,一般是通过网络运营商提供的网络服务来进行网站访问的;
能否访问到对应主机,使用Ping 命令来检验;
能够Ping 通,说明能够访问!
2、网络通信
(1)IP地址
1. 概念:IP 地址是指互联网协议地址,又译为网际协议地址; 2. 格式:IP 地址是一个32 位的二进制数,通常被分割为4 个 8位二进制数 (也就是4 个字节),常用 点分十进制表示,即 a.b.c.d格式(a,b,c,d 都是0~255 之间的十进制整数);
3. 作用:用于标识网络中唯一的一台主机;
4. 组成:网络号 + 主机号
网络号 :用来标识网段,保证相互连接的两个网段具有不同的标识;主机号 :用来标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;
通过合理设置 网络号 和 主机号,就可以保证在相互连接的网络中,每台主机的IP 地址都是唯一的,那么,如何划分网络号和主机号呢?
IP地址分类:A~E 五类
从上到下表示,A类,B类,C类,D类,E类,如下图所示 :
各类地址的表示范围:
注意:
- 局域网
IP 是内部才可以使用(内部唯一),不同的局域网IP 可能重复; - 广域网
IP 是全局唯一; - 本机
IP :127.0.0.1
特殊IP:
将IP 地址中的主机地址全部设为0 ,就成为了网络号,代表这个局域网; 将IP 地址中的主机地址全部设为1 ,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;
上述分类中,存在IP 地址浪费的问题,因此,为了避免浪费,引入了 子网掩码;
子网掩码:与IP 地址格式相同,也是32 位二进制数;其中,左边为网络位,用二进制数字“1” 表示,1 的数目等于网络位的长度;右边为主机位,用二进制数字“0” 表示,0 的数目等于主机位的长度;
作用:
- 划分
A,B,C 三类IP 地址子网; - 网络通信时,子网掩码结合
IP 地址,可以计算获得网络号(划分子网后的网络号 )及主机号(划分子网后的主机号 ),一般用于判断目的IP 与本IP 是否为同一个网段;下面为计算方式:
计算方式:
- 将
IP 地址和子网掩码进行“按位与 ”操作,得到的结果就是网络号; - 将子网掩码二进制按位取反,再与
IP 地址位与计算,得到的就是主机号;
(2) MAC地址
- 作用:用来标识网络设备的硬件物理地址;
- 网络通信,即网络数据传输,本质上是网络硬件设备来传输数据,硬件要发送数据到另一个硬件上,只认识硬件的物理地址(
MAC 地址); - 主机有一个或多个网卡(多数情况只使用一个网卡);
(如使用WiFi 就是使用无线网卡来接收发送数据;使用网线,就是用有线网卡来接收发送数据); - 一个网卡具有全球唯一的
MAC 地址(出厂时设置好)
IP地址 VS MAC地址
IP地址:标识整个路途的起点与终点,供用户使用的逻辑地址; MAC地址:标识每一跳的起点与终点,供网络硬件设备使用的物理地址 ;
网络数据传输是一跳一跳的传输过程,如下简单所示:
对于从B到F,源MAC 就是主机B 的MAC ,目的MAC 就是路由器F 的MAC ;
特殊的MAC地址
- 广播数据报的
MAC 地址为: FF:FF:FF:FF:FF:FF
(3)端口号
- 作用:用于标识主机中的进程;
- 格式:端口号是
0~65535 范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送和接收网络数据;
(4)网络协议
网络协议 :网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则;(如怎么样建立连接、怎么样互相识别等),只有遵守这个约定,计算机之间才能相互通信交流。 通常由三要素组成: (1)语法 :数据与控制信息的结构或格式(如规定公共场所使用普通话); (2)语义 :需要发出何种控制信息,完成何种动作以及做出何种响应; (3)时序 :事件实现顺序的详细说明,先干什么,再干什么…
协议最终体现为在网络上传输的数据包的格式!
知名协议的默认端口:
系统端口号范围为 0 ~ 65535 ,其中:0 ~ 1023 为知名端口号;
- 80端口:
http 协议 - 443端口:
https 协议 - 22端口:
ssh 协议
(5)五元组
在TCP/IP 协议中,用五元组 来标识一个网络通信;
五元组包括:
- 源
IP :标识源主机; - 源端口号:标识源主机中该次通信发送数据的进程;
- 目的
IP :标识目的主机; - 目的端口号:标识目的主机中该次通信接收数据的进程;
- 协议号:标识发送进程和接收进程双方约定的数据格式;
类似于发快递:
查看五元组信息:
- windows:
netstat -ano | findstr 过滤字符串 - linux:
netstat -anp | grep 过滤字符串
3、网络分层两种方式
网络分层的好处 :便于扩展和维护
两种划分方式:
方式1: OSI 七层模型
从低到高分别有(从下到上):
- 物理层:网络/
WiFi 传输 0,1 数据 - 数据链路层:识别数据帧
- 网络层:地址与路由选择
- 传输层:确保数据传输的可靠性
- 会话层:建立会话
- 表示层:接收端的展示方式
- 应用层:应用程序所处的分层
特点:并没有实际落地,属于理论上的模型;
方式2: TCP/IP 五层(四层)模型
从低到高分别有:
分层 | 代表硬件设备或软件 | 代表协议 |
---|
物理层 | 网线、电磁波、集线器 | 传输 0 ,1 数据 | 数据链路层 | 交换机 | 以太网帧,ARP (介于网络层与数据链路层的协议) | 网络层 | 路由器 | IP 协议 | 传输层 | 主机(操作系统) | UDP , TCP 协议 | 应用层 | 应用程序 | HTTP ,HTTPS ,SMTP (邮电协议) |
网络设备所在分层
- 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是
TCP/IP 五层模型的下四层; - 对于一台路由器,它实现了从网络层到物理层,也即是
TCP/IP 五层模型的下三层; - 对于一台交换机,它实现了从数据链路层到物理层,也即是
TCP/IP 五层模型的下两层; - 对于集线器,它只实现了物理层;
注意点:
- 这里的交换机和路由器是传统意义上的,也称为二层交换机,三层路由器;
- 网络通信时,经过的所有网络设备,不同的设备在相同的网络分层,都需要使用一致的协议;
4、封装和分用
发送数据时,需要把数据包装成某个协议的格式,再发送;(一个网络设备,按从高到低的顺序,使用对应分层的协议来进行包装数据);
下图为数据封装的过程:
接收数据时,需要把数据按照某个协议格式来解析,再使用; (一个网络设备,按从低到高的顺序,按对应分层的协议解析,使用数据) 过程与封装相反;
5、网络设备
(1)集线器
集线器是工作在物理层的网络设备,发送到集线器的任何数据,都只是简单的将数据复制并转发到其他所有端口;
(2)交换机
交换机:内部维护了一个MAC 地址转换表(每一台主机与交换机相连时,交换机就纪录主机的MAC和连接的端口),MAC 地址转换表:记录主机MAC地址与端口的映射关系;
发送数据报时,发送端主机都需要先根据网络分层从上到下封装(从高到低),如下所示:
如果封装到数据链路层,不知道目的MAC ,怎么办?
解决方案 :以广播的方式,发送数据到其他所有主机(此时是知道目的IP 的),此时目的IP 的主机再返回自己的MAC 地址给交换机(如,在群里找人聊天 );
发送数据时,分两种情况:
因此,首先需要判断发送端主机(源主机 )与接收端主机(目的主机 )是否属于同一网段?
判断方式:使用子网掩码 (1)子网掩码+源ip 就是源主机的网络号 ; (2)子网掩码+目的ip 就是目的主机的网络号 ; (3)判断 源主机网络号=目的主机的网络号 ,相等就是一个网段,否则就不是;
(3)主机&路由器
主机与路由器中包含一种技术:ARP缓存表 ;
ARP缓存表作用:纪录IP地址与MAC地址的映射关系;
使用场景:
- 源主机与目的主机不在同一个网段,使用源主机中的
ARP 缓存表(通过网关的IP 找网关的MAC ); - 源主机与目的主机在同一个网段,也可以使用源主机中的
ARP 缓存表(通过目的主机IP 找目的主机MAC );
路由器:
- (1)路由器具有一个
wan 口(连接公网,具有公网IP ); - (2)路由器搭建了一个局域网,但具有多个不同网段(这些不同网段的主机,处于一个局域网),由路由器多个
LAN 口来划分;
此时,当源主机发送数据到目的主机时,有以下三种情况:
(1)源主机与目的主机处于同一网段
(2)源主机与目的主机处于同一个局域网,但不同网段
(1)(2)两种情况,使用ARP缓存表就可以找到目的主机(通过目的IP找对应的MAC地址);
(3)源主机与目的主机处于不同的局域网(公网上的其他主机)
此时路由器也可能不知道目的IP 的主机在哪里,就需要NAPT 技术转换局域网IP 和端口为路由器公网IP 和端口;
路由功能:规划路线(路由器中存在一个路由表,纪录IP 和坐标点,用于计算目的IP 的最短路径);
路由器小结:
- (1)划分子网(一个局域网,划分为不同网段);
- (2)
ARP 缓存表:纪录路由器所在的局域网所有主机的IP 和MAC 地址; - (3)具有
wan 口,绑定公网IP ,目的主机不在局域网内,使用NAPT 技术,将源IP 和端口从局域网主机的转换为路由器公网的IP 和端口; - (4)路由功能:如果目的
IP 是公网主机,通过路由功能就能够计算出那个方向更近;
补充:冲突域与广播域
冲突域 :同一时间,多台主机同时发送数据,如果产生冲突,这个范围就是冲突域;
表现 :
- 集线器:所有端口构成一个冲突域;
- 交换机:一个端口构成一个冲突域;
广播域 :发送广播数据报(MAC地址全为FF ),能到达的范围; 表现:
- 集线器:所有端口处于一个广播域;
- 交换机:所有端口处于一个广播域;
- 路由器:
LAN 口(不同网段),隔离广播域;
6、网络套接字
套接字分类:
- 流套接字:传输层使用
TCP 协议 - 数据报套接字:传输层使用
UDP 协议 - 原始套接字:传输层协议自定义
Java 编程时,应用层协议自定义(以上三个)!
7、广域网数据传输流程<?>
应用层重点协议:DNS协议,全球DNS 服务器/DNS 缓存,构成了一个树形结构(多个根节点,每个根节点就是一棵树);
DNS 协议:通过域名找IP (从下到上来查找)
因为IP 地址不方便记忆,且不能表达地址组织信息,于是就有了域名,可以通过域名系统来映射域名和IP 地址;
如在浏览器地址栏输入URL(www.baidu.com),就会有以下步骤过程:
步骤过程1:
通过DNS 协议,查找 www.baidu.com 这个域名对应的IP 地址;
步骤过程2:
首先需要判断下一跳设备是那个?
方法:通过子网掩码计算,目的主机与源主机是否处于同一网段? 如果是同一网段,下一跳设备就是目的主机; 如果不是同一网段,下一跳设备就是网关路由器; 然后,需要设置目的MAC为下一跳设备的MAC(此时源MAC为源主机的MAC) ;
如何设置目的MAC? 基于本机ARP 缓存表,通过网关IP 查找MAC 地址;
- 交换机接收到数据报:转发到目的
MAC 对应的端口(路由器相连的端口),此处是基于交换机的MAC 地址转换表,通过MAC 找端口;
步骤过程3: 路由器接收到数据报
路由器接收到数据报,做以下事情:
- 先从下到上分用:物理层到网络层(路由器是工作在下三层);
- 基于
NAPT 协议,将源IP 和源端口号(局域网源主机的IP 和端口)修改为路由器公网的IP 和端口; - 基于路由功能,根据目的
IP ,计算出下一跳设备是那个设备,且到目的主机的方向那个更近;
2,3 步骤目的IP 不在路由器局域网内,路由器也不知道这个主机在哪;
- 从上到下封装:修改源
IP 为路由器公网IP ,源端口为路由器公网端口;修改源MAC 为路由器的MAC ,目的MAC 为下一跳设备的MAC ;
步骤过程4: 路途中经过的其他多个设备
与步骤过程3类似
步骤过程5:目的主机接收到数据报
目的主机接收到数据报,需要做以下事情:
- 从下到上分用:
分用到网络层:目的IP 与我的一致,就再次分用; 分用到传输层:根据目的端口将数据报交给对应端口的进程(如tomcat )来处理; 分用到应用层:tomcat 程序根据应用层HTTP 协议来进行解析; 此时的数据报:
- 源
IP :路由器公网IP - 源端口:路由器端口
- 目的
IP :目的主机IP - 目的端口:目的主机
tomcat 端口
tomcat 处理请求tomcat 返回响应
返回响应时,从上到下封装,再发送数据到起点(先发送数据给路由器,路由器查找局域网内的主机,将数据发送给对应主机);
此时数据报:
-
源IP :百度服务器IP -
源端口:百度服务器进程的端口 -
目的IP :路由器的公网IP -
目的端口:路由器的端口
小结
步骤 :
(1)源主机:从上到下封装; (2)集线器转发数据报到其他所有端口; (3)目的主机:从下到上分用;
步骤 :
(1)源主机:从上到下封装; (2)交换机转发数据报到对应的一个端口; 基于下一跳设备的MAC ,通过交换机中MAC 地址转换表,查找对应端口; (3)目的主机:从下到上分用;
步骤 :
(1)源主机:从上到下封装,到链路数据层,发现主机源IP 与目的IP 处于不同网段时(子网掩码计算而来),此时,下一跳的设备就要设置为网关设备(目的设备设置为网关设备,即就是网关路由器),采用本机ARP 缓存表通过网关IP 查找MAC ;
(2)路由器 先分用:获取目的IP 再封装:修改源MAC ,目的MAC (3)目的主机:从下到上分用; 其中,从源主机到网关设备(路由器),涉及有 :
- 目的
IP :目的主机的IP - 源
MAC :源主机的MAC - 目的
MAC :路由器的MAC
其中,从网关设备(路由器)到目的主机,涉及有 :
- 目的
IP :目的主机的IP - 源
MAC :路由器的MAC - 目的
MAC :目的主机的MAC
|