本文将讲解计算机网络的模型设计,并从发展-演化的角度角度讲述技术方案的变更,为什么这样设计?希望能带你快速了解掌握计算机网络的核心知识。
定义: 计算机网络是由一些通用的、可编程的硬件互联而成,通过这些硬件,可以传输不同类型的数据,并且可以支持广泛和日益增长的应用。
分类 | 名称 | 范围 | 区域 |
---|---|---|---|
广域网 | WAN(Wide Area Network) | 几十到几千公里 | 跨省、跨国 |
城域网 | MAN(Metro. Area Network) | 5KM-50KM | 城市间 |
局域网 | LAN(Local Area Network) | 1KM以内 | 地区内 |
OSI模型将网络划分为七层
发送时每一层通过添加头部标识包裹,接收时在一层一层解码
为什么要分层设计
为什么OSI模型没有成为标准?
- OSI模型设计之初欲成为全球计算机都遵循的标准
- 但是在市场化过程中困难重重,主要原因是TCP/IP在全球范围成功运行
- 其次还有以下原因
- OSI的专家缺乏实际经验
- OSI标准制定周期过长,按OSI标准生产的设备无法及时进入市场
- OSI模型设计的并不合理,一些功能在多层中重复出现
目前在互联网流行的方案时TCP/IP四层协议模型
物理层的作用:连接不同的物理设备,传输比特流。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。
物理层的设备:
信道:信道是往一个方向传输信息的媒体,一条通信电路包含一个发送信道和一个接受信道。
数据链路层主要作用是 封装成帧、透明传输、差错监测
ipconfig /all
mac ifconfig
以太网
以太网协议的数据帧
目标地址 | 源地址 | 类型 | 帧数据 | CRC |
---|---|---|---|---|
6 | 6 | 2 | 46~1500 | 4 |
通过 MAC地址表 进行数据包的转发。
MAC地址 | 硬件接口 |
---|---|
mac地址1 | 接口1 |
具体流程如下:
当E(路由器)不知道MAC地址对应的接口怎么办?
上面只是讲述相邻物理节点的传输, 如果两台计算机跨域千山万水如何通信?
问题放大一下 就是网络层通信问题
网络层的核心是IP协议, 其他还有ARP协议、RARP协议、ICMP协议
对于上图 计算机A 与计算机B的通信路径有很多种
实际上我们并不需要关心网络是怎样连接的,数据包是怎样走的,这些是网络层解决的,网络层有个重要概念虚拟互联网络。
虚拟互联网络
前面说过 MAC地址 ,它是数据链路的身份证, 在数据链路层只要拥有的 MAC地址, 就可以进行数据帧的传输了。
对于网络层来说 也有一个身份证 即IP地址,
IP地址对于网络来说,与MAC对于数据链路层来说作用是类似的
- | 表示 | 二进制 | 是否可变 |
---|---|---|---|
MAC地址 | 十六进制表示 30-B4-9E-ED-85-CA | 48位 | 固定的 一个网卡从A计算机卸下来安装到B计算机是不变的 |
IP地址 | 点分十进制表示 192.168.11.11 | 32位 | 可变的 一个电脑在不同的地方连接不同的WIFI,IP地址会变化 |
将前面网络传输问题的过程拉平,在分析下 转发的过程被称为 逐跳(hop-by-hop)
与 数据链路层传输需要 查询 MAC地址表 一样, IP协议转发也需 “路由地址表”
目标IP地址 | 下一跳IP地址 |
---|
还是上面一张图, A发送报文给C时,第一跳的过程如下
如何根据IP地址查询mac地址 就是ARP协议做的事情
与数据链路层转发与网络层转发类似, 根据IP找mac地址有ARP缓存表
IP地址 | MAC地址 |
---|
当缓存表没有缓存映射关系怎么办? 也是广播
总结
arp -a
命令可以查询arp缓存表
'
因为ARP协议中包含了IP地址,所以把ARP协议划分到网络层,它是网络层和数据链路层配合使用的一个重要的协议
IP地址长度32位,用点分十进制表示 0~255.0~255.0~255.0~255
如何使用这43亿个IP地址, 因此需要规划和分配IP地址
IP地址非常简单
现实中的网络需要预留一些特殊的主机号和网络号处理一些问题
1.2.3.4
这个A类地址IP,1.0.0.0
表示网络段1.255.255.255
表示广播地址, 不能分配给任何主机,往这个地址发消息就会广播给1.0.0.0
这个网络段的所有主机127.0.0.1
表示本地排除这些特殊网络号和主机号,得到一个可划分的IP地址分类
回环地址
保留地址块:
除A、B、C三类地址外,还有
某公司拥有100名员工,每人配备一个计算机,请问该公司应该申请哪种网络段?
- 根据前面网络分类C类有254个主机,因此申请C类地址最划算
- 假设申请的是
193.10.10.0
假设这个公司有256个员工呢?- 这是C类已经不能满足, B类有 个地址
- 但是如果人人都这样浪费,IP地址很快就不够用了,
- 因此提出子网划分的概念, 将主机号在划分为子网号和主机号
- 这样只需将
192.10.10.1~192.10.10.126
分配给该公司, 只浪费了26个主机号而已
子网号这么多,有没有办法快速判断某个IP的网络号?
IP 193.10.10.6
的子网掩码 255.255.255.128
,两者转换为二进制,
通过与运算,快速算出某个IP所属的子网号, 这里子网号为 192.10.10.0
由于子网划分太复杂,要先知道网络号,再进行子网号划分,我们希望有更简便的方法,因此提出了CICR
相比原来子网划分更加灵活
回到前面的问题 “某公司拥有100名员工,每人配备一个计算机,请问该公司应该申请哪种网络段?” /25
内网地址 | 外网地址 |
---|---|
内部机构使用 | 全球范围使用 |
避免与外网地址重复 | 全球公网唯一 |
三类内网地址
A、B、C类是私有地址(局域网IP),它们在公共互联网中不被路由器转发
标题 | 范围 |
---|---|
A类 | 10.0.0.0~10.255.255.255 |
B类 | 172.16.0.0~172.31.255.255 |
C类 | 192.168.0.0~192.168.255.255 |
思考: 一个家庭只有一个IP地址,那么有很多设备连上互联网呢?公司也有一样的问题
解决方案: 路由器将公网IP通过端口划分给多个主机使用, 通过NAT表转入数据发的收发,进而实现局域网内的设备都能上网
网络地址转换NAT技术
ICMP报文首部
它主要有两种 差错报告报文 和 询问报文
ICMP协议有两个重要的应用ping
命令 和 traceroute
命令
ping
命令就是利用ICMP的询问报文功能。
通常我们遇到网路问题 都是通过ping命令排查
ping 127.0.0.1
如果得不到返回说明协议栈可能出问题了, 要重装系统或重新安装协议栈192.168.0.1
Traceroute可以探测IP数据在网络中走过的路径
它的原理是利用IP协议头部的TTL字段,每经过一个设备TTL-1,
当TTL=0时,网络设备丢弃该报文,同时会上报一个ICMP差错报告报文,
前面讲述IP协议通过逐跳的方式完成数据包的转发, 逐跳依赖的是路由表,那么路由表的数据是怎样来的呢?
需要一个好的算法去解决这件事情
路由的算法可以抽象为图论的算法
实际上网络环境更复杂,路由算法要比图论算法更复杂
路由算法的必要条件
为了处理路由算法问题,就需要对网络进行划分, 于是提出了自治系统概念
自治系统
总结:
协议内容
具体过程
思考: 这种协议有没有什么问题?
假设A - B - C
三个节点, A节点发生了故障
总结:RIP协议的缺点
- 随便相信 “隔壁老王”
- “自己不思考” “视野不够”
- RIP协议适合小型的网络
它解决的是最短路径问题
OSPF协议 包含 链路状态(LS)协议, 先来看一下LS协议
LS协议与RIP协议对比
LS协议 | RIP协议 |
---|---|
向所有的路由器发送消息 一传十、十传百 | 只和相邻路由器交换信息 |
消息描述该路由器与相邻路由器的链路状态 - 距离、时延、带宽、。。。 - 这些数据是可以人为决定的 | 只交换跳数 |
只有链路状态发生变化时,才发送更新信息 | 每隔30s交换路由信息 |
LS协议解决了RIP协议的两个问题
OSPF协议的过程
五种消息类型
一个公司到另一个公司, 一个学校到另一个学校,城市之间,国家之间都是使用BGP协议
思考: 为什在AS之间要使用这个协议
- 互联网规模很大 如使用OSPF协议, 1)每个路由器都要存储很大的数据,2)迪杰斯特拉计算最短路径很慢
- AS内部使用不同的协议 有的使用RIP协议 有的使用OSPF协议
- AS之间需要考虑除网络特性以外的一些因素(政治、安全…)
综上分析:
BGP发言人
总结:
本文作者:郭敬文
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!