title: 《网络协议》01. 基本概念
date: 2022-08-30 09:50:52
updated: 2023-11-05 15:28:52
categories: 学习记录:网络协议
excerpt: 互联网、网络互连模型(OSI,TCP/IP)、计算机通信基础、MAC 地址、ARP & ICMP、IP & 子网掩码、CIDR 表示方法、子网、超网、路由、网络 & 互联网 & 因特网、ISP、网络分类、上网方式、公网 & 私网(NAT,端口映射)。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png
网络协议从入门到底层原理。
互联网(internet)的出现,彻底改变了人们的生活方式,足不出户就可以购物、聊天、看电影、买车票、上班等。
数据是如何从一个设备传递到另一个设备的?
什么是协议?
C/C++ 跨平台原理:
使用平台相关的编译器生成对应平台的可执行文件。
Java 跨平台的原理:
C/C++ 编译之后可直接生成平台对应的可执行文件。
Java编译之后生成字节码文件。对于操作系统来说,不是可执行文件。
其中,后端使用 Java 的一种结构如下:
客户端向服务器请求:
http://IP地址:端口号/项目
例:
http://10.10.125.41:8080/qq/login/...
为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型 OSI 参考模型(Open System Interconnect Reference Model)。
网络请求过程:不管什么协议,都是经过下列的 包装 + 解包 过程。
先不考虑无线连接的问题。
右边出现的 3 个 ARP 包,实际上是一次完整的发送请求、接收响应的过程。
ICMP 包同理。
同轴电缆(Coaxial),连接同一网段。
集线器(Hub),连接同一网段。
集线器相比同轴电缆唯一的优点:连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备的通信。
网桥(Bridge)。还是连接同一网段。
能够通过自学习得知每个接口那侧的 MAC 地址,从而起到隔绝冲突域的作用。
交换机(Switch)。依旧是连接同一网段。
若全球所有设备都用交换机连接:
路由器(Router)。路由器含有网关(Gateway),网关也有 IP 和 MAC 地址。
主机在发数据之前,首先会判断目标主机的 IP 地址跟它是否在同一个网段:
每个网卡都有一个 6 字节(48 bit)的 MAC 地址(Media Access Control Address)。
MAC 地址全球唯一,固化在网卡的 ROM 中,由 IEEE802 标准规定。
OUI 查询:可以根据 OUI 查询出对应的厂商。
40-55-82-0A-8C-6D
40:55:82:0A:8C:6D
4055.820A.8C6D
当 48 位全为 1 时(
FF-FF-FF-FF-FF-FF
),代表广播地址。
查看 MAC 地址(Windows):
ipconfig /all
修改 MAC 地址:
更改适配器选项 -> 属性 -> 配置 -> 高级 -> 网络地址
这里修改 MAC 地址只是以这个值作为 MAC 地址上网,网卡的 MAC 地址无法修改。
有时可通过修改 MAC 地址蹭网。
通过 ARP 广播获取的 MAC 地址,属于动态(dynamic)缓存。
存储时间比较短(默认是 2 分钟),过期就自动删除。
查看ARP缓存:
arp -a [
删除ARP缓存:
arp -d [
增加一条缓存信息(静态缓存):
arp -s
ARP(Address Resolution Protocol,地址解析协议)
RARP(Reverse Address Resolution Protocol,逆地址解析协议)
ICMP(Internet Control Message Protocol,互联网控制消息协议)
IP 地址(Internet Protocol Address):互联网上的每一个主机都有 IP 地址。
这里先讨论 IPv4。
IP 按字节分为 4 部分:
IP 地址由两部分组成:
网络 id 相同的主机处在同一网段。
通过子网掩码(subnet mask)可以计算出网络 ID
主机所在的网段 = 子网掩码 & IP地址
IP 地址:192.168.1.10
子网掩码:255.255.255.0
1100 0000 . 1010 1000 . 0000 0001 . 0000 1010
& 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
----------------------------------------------------
1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
网段:192.168.1.0
例:
IP 地址: 130.168.1.10
子网掩码: 255.255.0.0
网段: 130.168.0.0
该网段最多有 256*256-2 个 IP 地址
130.168.0.0 代表网段
130.168.255.255 代表广播
网段和广播无法分配 IP 地址
可以尝试用广播 ping 某个网段的全部主机。
IP 地址分为 5 类。
255.0.0.0
,网络 ID 以 0
开头。255.255.0.0
,网络 ID 以 10
开头。255.255.255.0
,网络 ID 以 110
开头。1110
开头。1111
开头。只有 A/B/C 类地址用来分配给主机。
默认子网掩码是 255.0.0.0
,网络 ID 以 0
开头。
256 * 256 * 256 - 2 = 2^24 - 2 = 16777214
。默认子网掩码是 255.255.0.0
,网络 ID 以 10
开头。
256 * 256 - 2 = 2^16 - 2 = 65534
默认子网掩码是 255.255.255.0
,网络 ID 以 110
开头。
256 - 2 = 254
没有子网掩码,网络 ID 以 1110
开头。
保留为今后使用,以 1111
开头。
CIDR(Classless Inter-Domain Routing),无类别域间路由
子网掩码的 CIDR 表示方法:
192.168.1.100/24
,代表子网掩码有 24 个 1,也就是 255.255.255.0123.210.100.200/16
,代表子网掩码有 16 个 1,也就是 255.255.0.0计算工具:https://www.sojson.com/convert/subnetmask.html
子网划分:借用主机位作子网位,划分出多个子网。
子网划分可以分为:
子网划分的步骤:
为什么要进行子网划分?
等分成 4 个子网的广播地址:
如果一个子网地址块的长度是原网段的 (1/2)^n
,那么
假设上图是对 192.168.0.0/24 进行变长子网划分
- C 网段:子网掩码是 255.255.255.128/25
- B 网段:子网掩码是 255.255.255.192/26
- A 网段:子网掩码是 255.255.255.224/27
- D 网段:子网掩码是 255.255.255.252/30
- E 网段:子网掩码是 255.255.255.252/30
超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段。
示例:
192.168.0.0/24
、192.168.1.0/24
为一个网段:192.168.0.0/23
(子网掩码往左移动1位)思考:对于上面的例子,192.168.0.255/23 这个 IP 地址,可以分配给计算机使用吗?
由下图知,主机位不全为 0 或 1,所以可以。
192.168.0.255/24 与 192.168.1.255/23 则不能分配给计算机。
子网掩码向左移动 2 位,可以合并 4 个网段。
如上图,将 192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24 合并为 192.168.0.0/22 网段。
思考:192.168.1.0/24、192.168.2.0/24 两个网段,能通过子网掩码向左移动 1 位进行合并吗?
答:不能。
例如:
例:
25.100.0.0/16 是 A 类子网:
根据 25 判断出这是个 A 类网络,默认子网掩码 8 位。
由于该网段子网掩码 16 位,比默认多,所以是子网。
200.100.0.0/16 是 C 类超网:
根据 200 判断出这是个 C 类网络,默认子网掩码 24 位。
由于该网段子网掩码 16 位,比默认少,所以是超网。
在不同网段之间转发数据,需要有路由器的支持。
默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由和动态路由告诉它。
让 4 台主机之间可以互相通信:
路由器 0 的路由表:
路由器 1 的路由表:
让 4 台主机之间可以互相通信:
路由表:
这里仅仅是简述一下数据包的传输过程,之后介绍网络分层时,会再次详细讲解数据包的传输过程。
源 IP、目标 IP 没有变;源 MAC、目标 MAC 一直在变。
如图,从 192.168.1.10/24 往 192.168.2.10/24 虽然可以 ping 通,但是丢失了第一个数据包。
原因:计算机0 往路由器发送了 ARP 包,路由器收到后回复了 ARP 包,从而计算机0 就开始发送 ICMP 包,路由器0 收到 ICMP 包后准备发往计算机1,但是路由器还不知道计算机1 的 MAC 地址,所以要往计算机1 发送 ARP 包,因此就把 ICMP 包给丢了,所以第一次 ping 会超时。
Network
)internet
)Internet
)全世界最大的互联网:因特网(Internet),将全世界所有的计算机都连接在一起。
I
开头的 Internet 特指因特网。ISP(Internet Service Provider),Internet 服务提供商,比如移动、电信、网通、铁通等。
我们平时拉的宽带都是通过 ISP 连接到 Internet 的。
平时见到左边的下载列表,其实是给使用不同 ISP 的用户对应的选择。
按照不同的分类方式,可以将网络分为以下几类:
按照网络的范围进行分类,可以分为:局域网、城域网、广域网等
局域网(Local Area Network,LAN)
城域网(Metropolitan Area Network,MAN)
广域网(Wide Area Network,WAN)
ADSL(Asymmetric Digital Subscriber Line),电话拨号上网。
光猫(Optical Modem),光调制解调器,进行数字信号和光信号的转换。
IP 地址也分为:公网 IP、私网 IP(内网)。
为什么要分公网、私网?
IP 地址不够用。
便于管理。
公网 IP(Public)。
私网 IP(Private),主要用于局域网。
下面是保留的私网网段:
NAT(Network Address Translation)。
私网 IP 想访问 Internet 需要进行 NAT 转换,借助公网 IP 上网。这一步可以由路由器完成。
特点:
分类:
端口(0 ~ 65535)是每个软件的一个通讯进出口。
类似于 NAT。
端口映射,就是将内网主机的一个端口映射到外网主机的一个端口。当用户访问外网 IP 的这个端口时,外网主机自动将请求映射到内网对应的机器上。
无奈夜长人不寐,数声和月到帘栊。
——《捣练子令 · 深院静》(五代)李煜