基础网络知识
基础网络知识
目录
1. 基础网络知识. 2
1.1 网络知识课程体系. 2
1.2 网络的通讯原理. 2
1.2.1 实现数据传输的条件:. 2
1.2.2 如何实现一个网络环境中多台主机通讯. 2
1.2.3 多个局域网(交换网络)之间如何实现通讯. 3
1.3 网络的基础设备. 4
1.3.1 交换机. 4
1.3.2 路由器(实践操作配置网络设备)***** 4
1.3.3 防火墙. 6
1.3.4 审计设备(认证). 6
1.3.5 无线设备. 6
1.3.6 语音设备. 6
1.4 网络架构体系. 6
1.4.1 网络架构设计方法/划分层次. 6
1.4.2 网络OSI--7层模型. 7
1.5 网络的两个重要协议原理(DNS/ARP). 14
1.5.1 DNS解析原理: 域名 -- IP对应关系. 14
1.5.2 ARP访问原理: IP --- mac对应关系. 15
1.6 常用端口. 22
1.7 IP地址. 23
1.7.1 IP地址详概念说明. 23
1.7.2 IP地址分类说明(IPv4 32-IPv6 128) 23
1.7.3 子网划分方法. 25
1.8 企业上网原理配置说明:. 26
1.9 虚拟主机上网原理(win7 win10--ghost(阉割版)). 27
1.10 系统路由配置说明. 28
1.10.1 静态网段路由配置:. 28
1.10.2 静态主机路由配置:. 28
1.10.3 静态默认路由:. 29
1. 基础网络知识
什么是网络?
实现主机之间通讯交流
1.1 网络知识课程体系
(CCNA --- 7个全天)
学习方法:https://bbs.hh010.com/forum-463-1.html
1.2 网络的通讯原理
1.2.1 实现数据传输的条件:
主机之间需要有传输介质
(网线 光纤线 wifi)
主机上需要有网卡设备
调制过程:将数字(数字信号)二进制信息转换为高低电压(模拟信号)
解调过程:将高低电压转换为二进制信息
不同主机网卡速率不一致,需要进行协商过程(自动协商)
100Mbps =100 000kbps =100 000 000 b 每秒钟 xxns 1 0 bit
A主机 100Mbps 协商方法(木桶原理)
B主机 1Gbps
网络中传输数据的最小单位 bit
网络:传递数据信息 1bit=1/8Byte 100Mb 迅雷下载电影10G == 100Mb/8=12.5MB-损耗=10+Mb
系统中存储数据的最小单位 Byte
磁盘:数据信息存储 Byte 1B=8bit
1.2.2 如何实现一个网络环境中多台主机通讯
1)交换机:实现在一个局域网环境中,实现多台主机可以互联通讯的设备
2)发数据信息需要有数据包结构
目标信息+源信息(mac)+数据信息==基本的数据包结构
3)地址标识:实现多台主机通讯,利用MAC(物理地址 网卡的身份证号码)地址标识主机身份信息 MAC地址特点:全球唯一
MAC地址利用十六进制信息进行表示:
0 1 2 - 9 10 11 12 13 14 15 A B C D E F
4)利用交换机进行通讯需要借助广播方式
PS:如何实现正确的网络通讯,数据的通讯过程一定是有去有回的
利用交换机进行数据通讯时,某些时刻会产生广播信息
交换网络缺点: 当交换网络主机数量过多, 会产生广播风暴问题, 导致影响主机性能
1.2.3 多个局域网(交换网络)之间如何实现通讯
1)路由器: 实现局域网之间(跨网段)主机通讯, 并且可以隔离广播信息
2)发数据信息需要有数据包结构
目标信息+源信息(IP)+数据信息==基本的数据包结构
3)地址标识:在多个局域网环境中, 利用IP(逻辑地址 身份证姓名)地址标识主机身份信息
IP地址:网段地址 + 主机地址 城市省份地址 + 街道房间信息
逻辑地址是全球唯一的? 不能出现重复情况?
利用十进制信息进行标识 0~9
4)利用路由器查询路由表信息进行判断
实现不同局域网之间可以经过路由器通讯, 相同局域网数据经过路由器会进行隔离,需要借助路由协议
什么是网关: 主机需要将数据发送到其它局域网的必经之路
当访问外网不通的时候, 可以先对网关地址连接进行测试
路由协议:
路由协议: 让路由表中可以拥有相应路由条目
1) 静态路由协议: 手动在路由表中添加路由条目信息
优点: 通讯效率较高
缺点: 操作配置复杂度较高
2) 动态路由协议: 自动在路由表中生成路由条目信息
优点: 操作配置简单方便
缺点: 路由条目学习过程(路由收敛过程)会耗费时间, 造成通讯效率较低
1.3 网络的基础设备
1.3.1 交换机
交换机:实现局域网内多台主机之间通讯
识别主机身份:MAC地址 (小名--局域网中有效)
1.3.2 路由器(实践操作配置网络设备)*****
路由器:实现不同局域网多台主机之间通讯
识别主机身份:IP地址(唯一???)(大名---互联网)
路由设备:
准备条件:
需要部署安装网络模拟器 思科模拟器 OK
规划网络设备连接图 OK
简单的网络配置命令
en(enable) ---将用户模式转换为特权模式
conf t(configure terminal) ---将特权模式转换为配置模式
int(interface) g0/0 ---进入到指定接口配置模式
ip add(address) 10.0.1.254 255.255.255.0 ---配置接口地址
no shut(shutdown) ---激活网卡
ctrl+z ---切换到特权模式
思科设备常用查看命令:
show run- ---检查设备的所有配置信息
show ip route- ---查看路由表信息
show ip interface brief(show ip int br) ---检查接口配置信息
华为或H3C:
display cu
路由的几种配置方法以及区别*****
1.静态路由:
静态路由信息(手工添加路由表条目信息)
ip route +去往的目标网段信息+去往目标网段掩码信息+去往目标网段下一跳地址
R1:
ip route 10.0.2.0 255.255.255.0 10.0.12.2
R2:
ip route 10.0.2.0 255.255.255.0 10.0.23.3
ip route 10.0.1.0 255.255.255.0 10.0.12.1
R3:
ip route 10.0.1.0 255.255.255.0 10.0.23.2
2.动态路由:
动态路由信息(rip(简单) eigrp ospf 运营商is-is bgp)
互相学习的过程
R1:rip路由
router rip (语言)
network 10.0.1.0
network 10.0.12.0
R2:rip路由
router rip (语言)
network 10.0.12.0
network 10.0.23.0
R3:rip路由
router rip (语言)
network 10.0.23.0
network 10.0.2.0
3.默认路由:
默认路由信息
R1:
ip route 10.0.2.0 255.255.255.0 10.0.12.2
ip route 10.0.3.0 255.255.255.0 10.0.12.2
ip route 10.0.4.0 255.255.255.0 10.0.12.2
默认路由:
ip route 0.0.0.0 0.0.0.0 10.0.12.2
4.路由表中如何有路由信息
1)自动发现直连路由信息
2)配置静态路由
动态路由信息进行删除:
no router rip
5.补充: linux系统中查看路由表方式
netstat -rn
ip route show
1.3.3 防火墙
1.3.4 审计设备(认证)
1.3.5 无线设备
1.3.6 语音设备
1.4 网络架构体系
1.4.1 网络架构设计方法/划分层次
1) 核心层:
1. 实现和外网运营商线路连接
2. 考虑网络设备冗余能力
2) 汇聚层:
1. 实现网络设备连接汇聚
2. 实现网络通讯安全策略控制 -- ACL
3. 考虑网络设备冗余能力
3) 接入层:
实现终端设备连接网络(电脑 打印机 电话)
1.4.2 网络OSI--7层模型
作用:定义网络通讯标准规范 ISO国际标准认证组织 ISO9000
思科设备--EIGRP(语言)
HW设备---RIP
模型组成:
应用层: 应用程序的协议和接口规范 HTTP SSH(远程连接)
表示层: 将数据进行转码 加密/解密 压缩处理/解压缩
会话层: 建立 维护会话 或终止会话??? A - B
传输层: 分段 重组 确保网络连接通讯过程是可靠的 TCP协议 UDP协议
网络层: 路由协议 确保不同网段主机之间可以传递数据 路由器(3层设备)
数据链路层: 负责将同一局域网中不同主机的数据进行传输--交换机(2层设备)
物理层: 定义一些物理连接介质的标准 网口 网线 光纤 光纤模块
掌握网络数据传递过程(了解)
数据封装过程:
数据 ---应用层 表示层 会话层
TCP头部信息 (源端口/目标端口3306)+数据 ---传输层
IP头部信息 (源IP/目标IP)+TCP头部信息 +数据 ---网络层
MAC头部信息(源MAC/目标MAC)+IP头部信息+TCP头部信息+数据 ---数据链路层
bit流 101010101 ---物理层
数据解封装过程
bit流 101010101 ---物理层
MAC头部信息(源MAC/目标MAC)+IP头部信息+TCP头部信息+数据 ---数据链路层
IP头部信息 (源IP/目标IP)+TCP头部信息+数据 ---网络层
TCP头部信息 (源端口/目标端口3306)+数据 ----传输层
数据 ----应用层 表示层 会话层
补充:源端口取值范围
cat /proc/sys/net/ipv4/ip_local_port_range
图表 1‑2数据传输过程中的封装与解封装过程
TCP/IP模型:(OSI7层模型简化版)
低-高 数据接入层 互联网层 主机到主机层(TCP UDP) 应用层
两个重要协议:(TCP/UDP)
TCP:传输控制协议 面向连接的协议
QQ:在线发送文件(TCP) 局域网线路传输
优势:数据传输安全可靠
劣势:传输效率低
应用:文件传输 邮件服务 页面网站服务
UDP:用户报文协议 无连接的协议
QQ:离线发送文件 (TCP) A ---互联网--腾讯存储服务器(7天)---互联网---B
优势:传输效率高
劣势:传输数据不可靠
应用:视频播放(帧) 语音通话
***** 重要部分 *****
补充:TCP报文结构 TCP头部 + data
1bit 多少端口 0 1 2的1次方=2
2bit 多少端口 00 01 10 11 0 1 2 3 2的2次方=4
3bit 多少端口 000 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 2的3次方=8
16bit 多少端口 2的16次方=65536 1~65535 0
控制位:
syn 请求建立连接控制位 1
ack 连接确认控制位 1
fin 请求断开连接控制位 1
客户端(1万 --- 服务端(1万)(连接的限制--负载过高w)
TCP协议中重要原理
TCP报文结构:
a.源端口地址 返回数据包目标端口地址
b.目标端口地址 要和服务端哪个网络服务建立连接
端口的数值范围: 1-65535 是通过报文结构获知的
根据报文结构 源端口和目标端口各占用16个bit
公式: 2的n次方 n占用了多少比特 占用了1bit
端口范围: 0 1 2种 2的1次方=2 0-1 占用了2bit
端口范围: 00(0) 01(1) 10(2) 11(3) 4种 2的2次方=4 0-3
占用了3bit
端口范围: 000(0) 001(1) 010(2) 011(3) 100(4) 101(5) 110(6) 111(7) 8种 2的3次方=8 0-7 占用了16bit
端口范围: 2的16次方=65536 0-65535 --- 1-65535
PS: 一般0号端口不被使用
c.Sequence Number(序列号)
d.Acknowledgement Number(确认号)
特殊6bit作为报文结构中的控制位:
syn(连接) --- 请求建立连接控制字段
ack(确认) --- 表示确认控制字段
fin(断开) --- 请求断开连接控制字段
说明: 控制字段数值置为1表示控制功能开启 默认为0
TCP三次握手过程 -- 完成网络连接建立
第一次握手: 发送TCP数据报文 客户端 -- 服务端
a TCP数据报文中,需要将syn控制字段改为1
b TCP数据报文中,需要将seq序列号信息发出 seq=x
第二次握手: 发送TCP数据报文 服务端 -- 客户端
a TCP数据报文中,需要将ack控制字段改为1
b TCP数据报文中,同时将syn控制字段改为1
c TCP数据报文中,同时将ack确认号信息发出 ack=x+1
d TCP数据报文中,同时将seq序列号信息发出 seq=y
第三次握手: 发送TCP数据报文 客户端 -- 服务端
a TCP数据报文中,需要将ack控制字段改为1
b TCP数据报文中,同时将ack确认号信息发出 ack=y+1
c TCP数据报文中,同时将seq序列号信息发出 seq=x+1
TCP四次挥手过程完成网络连接断开
第一次挥手: 发送TCP数据报文 客户端 -- 服务端
a TCP数据报文中, 需要将fin控制字段改为1
b TCP数据报文中, 同时将ack控制字段改为1
也包含seq和ack确认号信息
第二次挥手: 发送TCP数据报文 服务端 -- 客户端
a TCP数据报文中, 需要将ack控制字段改为1
第三次挥手: 发送TCP数据报文 服务端 -- 客户端
a TCP数据报文中, 需要将ack控制字段改为1
b TCP数据报文中, 同时将fin控制字段改为1
第四次挥手: 发送TCP数据报文 客户端 -- 服务端
a TCP数据报文中, 需要将ack控制字段改为1
图表 1‑3 TCP报文结构
扩展: 如何抓取网络数据包(抓包软件)
windows: Wireshark
linux: tcpdump命令
TCP 11种状态集转换(了解 -- 架构层面)
作用:
1.以后可以更好排查系统网络问题
2.以后学习网络编程会有帮助
TCP三次握手过程状态变化: 5种变化 (服务端和客户端)
第一历程: 初始状态信息
客户端状态为: closed
服务端状态为: closed
第二历程: 服务端开启相应服务
服务端状态为: closed -- LISTEN
第三历程: 发送建立连接请求(客户端) == 三次握手第一次
客户端发送syn信息
客户端状态为: closed -- syn_sent
第四历程: 接收建立连接请求(服务端) == 三次握手第二次
服务端接受syn信息, 发送确认以及请求建立连接信息(ack syn)
服务端状态为: LISTEN -- syn_rcvd
第五历程: 发送最后确认信息(客户端) == 三次握手第三次
客户端发送ack信息
客户端状态为: syn_sent -- established
第六历程: 接收最后确认信息(服务端)
服务端接收ack信息
服务端状态为: syn_rcvd -- established
结论: 只有服务端和客户端都统一处于established连接建立状态, 才能正常传输数据信息
图表 1‑4 三次握手过程
TCP四次挥手过程状态变化: 5种状态变化(服务端和客户端)
第一个历程: 初始状态信息
客户端状态为: established
服务端状态为: established
第二个历程: 发送断开连接请求(客户端) == 四次挥手第一次
客户端发送fin请求断开连接字段
客户端状态为: established -- fin_wait1
第三个历程: 接收断开连接请求(服务端) == 四次挥手第二次
服务端接受fin请求断开连接字段 发出确认信息(ack=1)
服务端状态为: established -- close_wait
第四个历程: 接收确认断开信息(客户端)
客户端接受服务端发出的确认信息(ack=1)
客户端状态为: fin_wait1 -- fin_wait2
第五个历程: 发送断开连接请求(服务端) == 四次挥手第三次
服务端发送fin请求断开连接字段 同时还会再次发送ack确认字段
服务端状态为: close_wait -- last_ack
第六个历程: 接收断开连接请求(客户端) 发送最后确认信息 == 四 次挥手第四次
客户端接收断开连接请求 同时发送最后确认信息ack=1
客户端状态为: fin_wait2 -- time_wait (等时间 60s 90s 120s???)
第七个历程: 接收最后确认信息(服务端)
服务端状态为: last_ack -- closed
第八个历程: 等待时间结束
客户端状态为: time_wait -- closed
图表 1‑5 TCP 四次挥手过程
问题一: 为什么断开过程是四次? 断开过程可以是三次吗?
生活中: 物流公司oldboy
PS: OSI7层模型 == 公司组织架构
四次断开过程:
阿里巴巴(马云)--- 物流公司oldboy OSI会话层
主管(终止合作)-----主管---询问老板 传输层TCP---会话层
<-- 确认 主管 --- 询问老板 --- 没有纠纷(服务端报文是否发送完毕) -- 确认断开
<-- 断开 主管
三次连接过程:
阿里巴巴(马云)---物流公司oldboy OSI会话层
主管(建立合作) 主管(listen)
<--确认 连接
问题二: 为什么要有time_wait状态?
如何保证数据传输可靠性? 利用ack状态信息
1) 避免last_ack状态信息在系统中产生堆积
2) 在time_wait等待状态不停的发送ack信息
3) 等待时间结束, 自动有time_wait===>closed
补充:(遁去的一种状态变化)
1) 当客户端fin_wait1状态直接接收到(fin ack信息)
2) 客户端状态: fin_wait1 -- closing(替换了fin_wait2)
3) 客户端状态: closing --- time_wait --- closed
1.5 网络的两个重要协议原理(DNS/ARP)
1.5.1 DNS解析原理: 域名 -- IP对应关系
DNS协议原理: 实现建立 域名 -- IP
DNS:域名解析系统 名称---IP
A. DNS是什么
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射
B. 如何得知域名和IP地址的映射关系
ping www.baidu.com
dig www.wuxingge.org +trace
C. 完整解析过程
1)在本地查找解析记录 (缓存 hosts)
C:\Windows\System32\drivers\etc\hosts
2)向LDNS服务器发出域名查找请求
3)LDNS服务器向根域名服务器发送请求
4)根域名服务器会告知顶级域名服务器信息
5)LDNS服务器向顶级域名服务器发送请求
6)顶级域名服务器会告知二级域名服务器信息
7)LDNS服务器向二级域名服务器发送请求
8)二级域名服务器直接告知解析记录信息(A记录信息)
9)LDNS接收到解析记录并进行保存,将记录发送给相应主机
10)主机接收到解析记录并进行保存,使用解析后的地址访问网站服务器
dig www.wuxingge.org +trace
图表 1‑6 DNS完整解析过程
1.5.2 ARP访问原理: IP --- mac对应关系
两台主机直接通讯
多台主机直接通讯
协议原理过程:
01. 发送广播信息(发送ARP请求),获取相应主机MAC地址
02. 相应主机进行响应(发送ARP响应),完善arp表(IP--mac)
03. 减少广播包的产生,可以尽量在局域网中使用单播方式进行通讯
ARP协议类型:
动态类型: 实时(定期)更新arp表和mac表信息 --- 办公网站
静态类型: 手动方式向arp表和mac表中添加信息 --- 机房网络
ARP协议概述说明
如果要在TCP/IP协议栈中选择一个"最不安全的协议",那么我会毫不犹豫把票投给ARP协议。
我们经常听到的这些术语:
网络扫描
内网渗透
中间人拦截
局域网流控
流量欺骗
以上这些属于,基本都跟ARP脱不了干系。大量的安全工具,例如大名鼎鼎的Cain、功能完备的Ettercap、操作傻瓜式的P2P终结者,底层都要基于ARP实现。
听上去这么"逆天"的协议,其实技术原理又简单的难以置信,例如ARP整个完整交互过程仅需要两个包,一问一答即可搞定!但是ARP协议也有它令初学者迷惑的地方,例如由它本身延伸出来的"代理ARP"、"免费ARP"、"翻转ARP"、"逆向ARP",而这些不同种类的ARP,又应用于不同的场景。
在深入到技术原理之前,作为初学者,我们先记住下面三句话:
1)ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。
2)在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目标IP地址的封装,也需要源目标MAC的封装。
3)一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。
接下来,我们通过图解的方式来深入了解ARP协议是如何工作的。
ARP协议原理详述
ARP原理之请求应答
同一个局域网里面,当PC1需要跟PC2进行通信时,此时PC1是如何处理的?
根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,然后发送出去,这里以PC1 ping PC2的过程举例。PC1封装数据并且对外发送数据时,下图中出现了"failed",即数据封装失败了,为什么?
我们给PC1指令-"ping ip2",这就告知了目的IP,此时PC1便有了通信需要的源目IP地址,但是PC1仍然没有通信需要的目的MAC地址。这就好比我们要寄一个快递,如果在快递单上仅仅写了收件人的姓名(IP),却没有写收件人的地址(MAC),那么这个快递就没法寄出,因为信息不完整。
那么,现在PC1已经有了PC2的IP地址信息,如何获取到PC2的MAC地址呢?此时,ARP协议就派上用场了。我们接着上面这张图,继续以下步骤说明,我们看到PC1和PC2进行了一次ARP请求和回复过程,通过这个交互工程,PC1便具备了PC2的MAC地址信息。
接下来PC1会怎么做呢?在真正进行通信之前,PC1还会将PC2的MAC信息放入本地的”ARP缓存表”,表里面放置了IP和MAC地址的映射信息,例如 IP2<->MAC2。接下来,PC1再次进行数据封装,正式进入PING通信。
小结:经过上面的步骤处理,PC1终于把数据包发送出去了,之后便可以进行正常的通信了。看到了吧,ARP的功能和实现过程是如此的简单:它在发送方需要目标MAC地址的时及时出手,通过"一问一答"的方式获取到特定IP对应的MAC地址,然后存储到本地“ARP缓存表”,后续需要的话,就到这里查找。
既然是"缓存"表,意味着它有时效性,并且如果电脑或者通信设备重启的话,这张表就会清空;也就是说,如果下次需要通信,又需要进行ARP请求。在我们的windows/macos系统下,可以通过命令行"arp -a"查看具体信息。
ARP原理之广播请求单播回应
上面的图解过程看上去简单又纯粹,好像我们就已经把这个协议的精髓全部get到,但其实,我们只是刚揭开了它的面纱,接下来我们才真正进入正题。例如,上面的图解过程中,整个局域网(LAN)只有PC1和PC2两个主机,所以这个一问一答过程非常的顺畅。
而实际网络中,这个LAN可能有几十上百的主机,那么请问,PC1如何将这个【ARP请求包】顺利的交给PC2,而PC2又如何顺利的把【ARP回应包】返回给PC1? 我们看下面的图:
为了营造出"几十上百"的效果,这里多添加了2个主机进来,在多主机环境下,PC1现在发出的ARP请求包,怎么交到PC2手里?
这时,ARP协议就需要采用以太网的"广播"功能:将请求包以广播的形式发送,交换机或WiFi设备(无线路由器)收到广播包时,会将此数据发给同一局域网的其他所有主机。
那么,什么是广播?对于初学者而言,我们只需要知道,大部分的广播包,它们有一个共同特征:二层封装时目的MAC是全f(ffff.ffff.ffff)或三层封装时目的IP是全1(255.255.255.255)。可以这样更方便的记住:目的地址最大的,就是广播。
注明:广播根据所在层次可分为二层广播和三层广播,根据发生范围可分为本地广播和定向广播,小伙伴们有兴趣可以自己再去拓展下。
根据上图我们看到,PC1发送的请求广播包同时被其他主机收到,然后PC3和PC4收到之后(发现不是问自己)则丢弃。而PC2收到之后,根据请求包里面的信息(有自己的IP地址),判断是给自己的,所以不会做丢弃动作,而是返回ARP回应包。
ARP请求是通过广播方式来实现的,那么,PC2返回ARP回应包,是否也需要通过广播来实现呢?答案是否定的。大部分网络协议在设计的时候,都需要保持极度克制,不需要的交互就砍掉,能合并的信息就合并,能不用广播就用单播,以此让带宽变得更多让网络变得更快。
那么,ARP回应包是如何处理的?这里需要特别关注ARP请求包的内容,在上面的图解里面,ARP请求包的完整信息是:我的IP地址是IP1,MAC地址是MAC1,请问谁是PC2,你的IP2对应的MAC地址是多少?
简单来说,ARP请求首先有"自我介绍",然后才是询问。这样的话,PC2在收到请求之后,就可以将PC1的IP和MAC映射信息存储在本地的【ARP缓存表】,既然知道PC1在哪里,就可以返回ARP单播回应包。
接下来我们来看下这个ARP广播请求包接下来是如何工作的?
这张图我们需要得到两个信息:
1)被询问者PC2先生成了ARP映射信息,然后才是询问者PC1;
2)PC3和PC4等其他主机,无法收到这个ARP回应包,因为是单播形式。
小结:ARP协议通过"一问一答"实现交互,但是"问"和"答"都有讲究,"问"是通过广播形式实现,"答"是通过单播形式。
ARP数据包解读
为了让大家更好的理解ARP协议以及广播和单播的概念,我们来看一下用Wireshark抓取到的真实网络中的ARP过程,通过数据包的方式来呈现,地址信息如下,部分MAC信息隐去。(建议初学者用GNS3配合Wireshark来抓取协议包进行分析,相比真实网络更加干净,方便分析)
主机1 <---> 主机2
主机1: IP1 10.1.20.64 MAC1:00:08:ca:xx:xx:xx
主机2: IP2 10.1.20.109 MAC2:44:6d:57:xx:xx:xx
ARP请求包
ARP回应包
ARP协议字段解读
Hardware type :硬件类型,标识链路层协议
Protocol type :协议类型,标识网络层协议
Hardware size :硬件地址大小,标识MAC地址长度,这里是6个字节(48bti)
Protocol size :协议地址大小,标识IP地址长度,这里是4个字节(32bit)
Opcode :操作代码,标识ARP数据包类型,1表示请求,2表示回应
Sender MAC address :发送者MAC
Sender IP address :发送者IP
Target MAC address :目标MAC,此处全0表示在请求
Target IP address :目标IP
ARP到底是链路层还是网络层?
这个问题的难度堪比另外一个世界级难题:世界上最好的编程语言是什么?
其实早在20世纪时,W.Richard Stevens在《TCP/IP详解卷一》里面就提到了这个难题。这里给出我个人的协议分层思路,给大家作为参考。
协议到底所属哪一层,可以从应用/功能来考虑,也可以从层次/包封装来考虑。
以ARP协议为例,它的功能最终是获取到MAC信息,服务于链路层,从这点考虑,ARP是链路层协议;但是从层次来看,ARP基于Ethernet协议,IP协议基于Ethernet协议,它们在Ethernet协议里面有独立的Type类型,前者是0x0806,后者是0x0800,既然ARP和IP协议"平起平坐",那么IP是网络层,ARP难道就不是网络层?
小结:基于功能来考虑,ARP是链路层协议;基于分层/包封装来考虑,ARP是网络层协议。(此方法对于ICMP协议同样管用)
1.6 常用端口
SSH |
22 |
TELNET |
23 |
POP3 |
110 |
邮箱 |
25 |
DNS |
53 |
HTTP |
80 |
HTTPS |
443 |
远程服务 |
3389 |
1.7 IP地址
1.7.1 IP地址详概念说明
IP地址作用:实现主机身份标识,用于网络通讯
IP地址组成:网段地址(省份区域) + 主机地址(街道小区房间)
IP地址表示形式:IP报文结构--地址占用32位
10.0.0.200
2的32次方 ~ 0 -- 42.9亿(ipv4)
32bit -- 4组 -- 8位为一组
8bit 2的8次方== 1~256
00000000
00000000 - 0 - 0
00000001 - 1 - 1
00000010 - 10 - 2
二进制 到 十进制转换关系 (求和运算)
00010001
00010000 00000001
16 1 17
11111111
128 64 32 16 8 4 2 1 = 255
十进制 到 二进制转换关系 (求差运算)
192
判断:是否大于等于 --》 求差运算
144 - 128 = 16 - 16 =0
1 0 0 1 0 0 0 0
128 64 32 16 8 4 2 1
图表 1‑7 二进制到十进制转换关系
1.7.2 IP地址分类说明(IPv4 32-IPv6 128)
IPv4---2的32次方 IPv6---2的128次方
第一种分类:按照地址范围进行分类
A类 B类 C类 D类 E类 -- C类
第二种分类:按照地址用途进行分类
公网地址:全球唯一 192.168.1.1
私网地址:重复使用(不同局域网可以重复使用)
10.0.0.0/8 (10.0.0.0 到 10.255.255.255)
172.16.0.0/16 (172.16.0.0 到 172.31.255.255)
192.168.0.0/24 (192.168.0.0 到 192.168.255.255)
169.254.0.0/16 (169.254.0.0 到 169.254.255.255)*系统分配地址
PS:私网地址网段信息不能出现在公网路由器的路由表中
NAT技术:实现私网地址和公网地址的映射 多个公网地址池
第三种分类:按照地址通讯方式分类
单播通讯:单播地址 1 vs 1
广播通讯:广播地址 1 vs n 局域网 所有主机 主机位全为1 广播地址
192.168.20.255
172.16.255.255
主机位全为0 网段地址
192.168.20.0
公式:一个网段中到底有多少个主机
192.168.1.0 ---C类地址---网段中可以有多少个地址
2的n次方 - 3 == 2的8次方 - 3 = 256 - 3 = 253
n表示网段中有多少个主机位
-3 广播地址 网段地址 网关地址(192.168.1.1 192.168.1.254)
组播通讯:组播地址(D类) 1 vs n 局域网 部分主机
图表 1‑8 IP按照地址范围进行分类
1.7.3 子网划分方法
A B C
172.16.1.0 255.0.0.0 子网掩码
掩码:标识地址类型
179.16.1.1
NNNNNNN NNNNNNNN HHHHHHHH HHHHHHHH
1111111 11111111 00000000 00000000
A: 255.0.0.0 \8
B: 255.255.0.0 \16
C: 255.255.255.0 \24
172.16.0.0\16 公网地址网段
2的16次方 -3 == 65536 -3 = 65533 10台服务器 65523多于
局域网 --- 6万多个主机 -- 广播
6万多台主机需要访问外网 --- 路由器
划分子网原因:
01. 避免地址的浪费 避免浪费 100地址网段 100地址网段
02. 会产生广播风暴 减小广播问题
03. 路由器负载压力过大 减小路由器负载压力
如何划分子网:
IP地址的子网划分:192.168.1.0/26 26-24=2
第一个步骤:原有地址属于哪个主类地址
第二个步骤:利用子网掩码数值减去相应主类掩码数值,获取子网信息
2的n次方,n表示多少个子网位
第三个步骤:获取子网数量,以及子网网段地址(网络地址)
第四个步骤:获取子网掩码信息
第五个步骤:获取子网地址范围
2的n次方-3
172.16.0.0/16 1个大的,一分为2
172.16.0.0段 172.16.0.1~172.16.127.254
172.16.128.0段 172.16.128.1~172.16.255.254
面试题:给你一个网络地址信息 192.168.10.0/26
请问:
01. 划分多少个子网 26-24-2 2的2次方=4
02. 每个子网的网段地址
03. 每个子网的掩码信息
04. 每个子网地址范围
CCNA
01. 路由交换设备简单配置
02. VLSM子网地址划分
图表 1‑9 子网划分举例说明
1.8 企业上网原理配置说明:
路由器配置:
第一步:获取设备管理IP地址,修改笔记本网卡地址
第二步:外网线路配置(运营商),完成路由或拨号配置(用户名 密码--获取外网IP)
第三步:配置DHCP服务,实现办公环境主机自动获取IP地址
IP地址池信息:192.168.19.1~~192.168.19.200
子网掩码信息:255.255.255.0
网关地址信息:192.168.19.254
DNS地址信息:223.5.5.5
交换机配置:
配置交换机的vlan (v虚拟 lan局域网)
一个交换机所有接口属于一个广播域
交换机的接口类型():
01. 属于vlan接口,标记属于哪个vlan
02. 属于trunk接口,实现不同vlan数据进行传递
图表 1‑10 VLAN工作原理
1.9 虚拟主机上网原理(win7 win10--ghost(阉割版))
NAT:
优势:防止IP地址冲突
劣势:不便于其他物理主机访问虚拟主机
桥接:
优势:便于其他物理主机访问虚拟主机
劣势:容易造成IP地址冲突
仅主机:
优势:网络环境安全
劣势:不能访问外网
图表 1‑11 虚拟主机上网原理
1.10 系统路由配置说明
1.10.1 静态网段路由配置:
centos6:net-tools
route
route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.100
route del -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.100
centos7:iproute(推荐)
ip route
ip route add 192.168.10.0/24 via(经由) 192.168.1.100
ip route del 192.168.10.0/24 via(经由) 192.168.1.100
1.10.2 静态主机路由配置:
centos6:net-tools
route add -host 223.5.5.5/32 gw 10.0.0.254
centos7:iproute(推荐)
ip route add 223.5.5.5/32 via 10.0.0.254
1.10.3 静态默认路由:
centos6:net-tools
route add default gw 10.0.0.254
centos7:iproute(推荐)
ip route add default via 10.0.0.254
图表 1‑12 centos6与centos7的一些路由配置命令对比
面试题:
01. 系统中如何进行路由配置 (3种方式)
02. 指定其它网关实现路由通讯(2种方式 修改网卡文件/利用命令)