写点什么

【建议收藏】通俗易懂图解网络知识 - 第一篇

作者:利志分享
  • 2022 年 6 月 12 日
  • 本文字数:2677 字

    阅读完需:约 9 分钟

大家好,我是追麾(hui)。

关于网络的知识,我这里主要是从 OSI 分层,网络协议等相关的知识,大家一起来学习,觉得不错,记得点赞,转发,在看哦。

谈谈对 OSI 七层模型和 TCP/IP 四层模型的理解?

所谓七层模型和四层模型是前辈们为了增强通用型和兼容性,设计出来的层次结构,每一层都遵守一定的规则。

物理层:通过光缆,网线等物理方式把电脑连接起来,是传递比特流,并且规定了电平,速度,电缆针脚。

数据链路层:把比特流封装成数据帧的格式,帧是数据链路层的传送单位。电脑连接起来之后,数据都是经过网卡传输,而网卡定义了世界唯一的 mac 地址,通过广播的形式向局域网所有的电脑发送数据,根据数据中的 mac 地址和自身的进行对比判断是否发送给自己。数据链路层主要是帧编码和误差纠正控制。

网络层:网络层定义了 IP 协议和子网掩码,通过对 IP 和子网掩码进行运算能确定是否是通一个子网,通过路由器和交换机进行传输。网络层具有寻址和路由选择,连接的建立,保持,终止等功能。

传输层:传输层是端到端的连接,为了确定数据包是从哪个进程发送过来的,就需要端口号,通过端口来建立通信,比如 TCP 和 UDP 属于这一层的协议。

会话层:负责建立,管理,断开表示层实体间的通信会话。

表示层:服务于应用层数据编码和转换功能,保证一个系统的应用层数据发送到另外一个应用层能识别。

应用层:最靠近用户的一层,是为计算机用户提供应用接口,最终供用户的能理解使用的一层。


TCP/IP 模型是四层,对于 OSI 的模型简化。

  1. 网络接口层,也叫网络访问层,包含 OSI 模型的物理层和数据链路层,把电脑连接起来。

  2. 网络层,也叫做 IP 层,处理 IP 数据包的传输、路由,建立主机间的通信。

  3. 传输层,为两台主机设备提供端到端的通信。

  4. 应用层,包含 OSI 的会话层、表示层和应用层,提供了一些常用的协议规范,比如 FTP、SMPT、HTTP 等。

总结:物理层通过物理手段把电脑连接起来,数据链路层是对比特流的封装编码,网络层来建立主机对主机的通信,传输层建立端口到端口的通信,表示层处理数据编码和转换,应用层最终负责建立连接,数据格式转换,呈现给用户。

在 OSI 七层参考模型中,每一层都有哪些协议?

  1. 物理层协议有:EIA/TIA-232, EIA/TIA-499,V.35, V.24,RJ45, Ethernet, 802.3,FDDI

  2. 数据链路层协议有:Frame Relay,HDLC,PPP, IEEE 802.3/802.2

  3. 网络层协议有:IP,IPX,AppleTalk DDP

  4. 传输层协议有:TCP,UDP

  5. 会话层协议有:RPC,SQL,NFS,NetBIOS,names,AppleTalk

  6. 表示层协议有:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption

  7. 应用层协议有:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP

如何知道两台机器是否相通?

判断两台机器是否相通,我们从上面的 OSI 模型中能知道在 IP 层实现就行了,IP 层是实现两台机器的通信,关于 IP 层我们从上面也知道有 IP 协议,IPX 协议等,其实我们只要能知道实现 IP 层协议的一些命令就能知道如何通过命令知道两台机器是否相通。

如何知道两台机器是否相通,我们可以通过 ping 或者 traceroute 命令,ping 和 traceroute 命令基于 ICMP 协议实现。下面我们来分析一下 ping 和 traceroute 命令以及 ICMP 协议。

ping 命令:。它是基于网络层、通过发送和接收数据包来检测两台计算机间的连接状况。当出现网络故障的时候,我们就可以用 ping 命令来预估故障点,如果 ping 命令没有成功,那么就该考虑硬件连接是否出错,比如网卡设置是否正确、比如网线是否连通,再考虑 IP 地址设置是否正确。也可以用于数据包一去一回所需耗的时间。使用命令:Ping IP 地址。

ping 命令就会将目的服务器的 IP 地址,数据大小,往返花费的时间打印到屏幕上。如下图:


traceroute 命令:traceroute 命令是一款充分利用 ICMP 差错报文类型的应用,其主要用作追踪路由信息。它的实现是利用从每个机器节点之间的 IP 报的 TTL 从 1 开始递增同时发送 UDP 包,当出错则接受 ICMP 包的超时错误信息。

我们参考下图,就能清楚的描述 traceroute 的整个过程。


tracerouter 发 UDP,为啥出错会回 ICMP?正常情况下,协议栈能正常走到 UDP,当然正常返回 UDP。但是,你主机不可达,是 IP 层的(还没到 UDP)。IP 层,当然只知道回 ICMP。

ICMP 协议

ICMP 是 Internet Control Message Protocol 的缩写,即互联网控制消息协议。它是互联网协议族的核心协议之一。它是 IP 层中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使网络管理者可以对所发送的问题作出诊断,从而采取适当措施来解决问题。

ICMP 本身是网络层的一个协议,但是它的报文不是直接传送给数据链路层,而是要封装成 IP 数据报,然后再传送给数据链路层。ICMP 的差错和控制信息传输只是要解决 IP 可能出现的不可靠问题,它不能独立于 IP 而单独存在,因此应该把它视为 IP 的一个部分,归于 IP 体系。

ICMP 协议报文

协议报文

ICMP 报文中各字段含义如下。

  1. 类型:占 1 字节,表示 ICMP 消息的类型。

  2. 代码:占 l 字节,进一步划分 ICMP 消息的子类型,如对类型 3(目的不可达)又细分为目的网络不可达(代码 0)、目的主机不可达(代码 2)、目的协议不可达(代码 3)、目的端口不可达(代码 4)等。

  3. 校验和:占 2 字节,对 ICMP 报文首部和数据进行校验。

  4. 第 4 个字段:占 4 字节,内容取决于 ICMP 报文的类型,有的类型不定义该字段。

  5. 数据部分:内容和长度取决于 ICMP 报文的类型。

ICMP 消息的类型分为查询报文,差错控制报文

ICMP报文类型 | 类型的值 | 说明查询报文 | 8 | 回应请求查询报文 | 0 | 应答报文查询报文 | 13 | 时间戳请求查询报文 | 14 | 应答报文查询报文 | 17 | 子网掩码请求查询报文 | 18 | 应答报文查询报文 | 10 | 路由查询查询报文 | 9 | 通告报文差错控制报文 | 3 | 目标不可达差错控制报文 | 4 | 源端控制差错控制报文 | 5 | 重定向差错控制报文 | 11 | 超时差错控制报文 | 12 | 报文参数出错
复制代码

ICMP 代码类型

代码 | 含义0 | 目标网络不可达1 | 目标主机不可达2 | 目标协议不可达3 | 目标端口不可达4 | 需要分段且已设置DF5 | 源路由失败6 | 目的网络未知7 | 目的主机未知8 | 源主机被隔离9 | 目的网络被强制禁止10 | 目的主机被强制禁止11 | 网络不能达到指定的服务类型12 | 主机不能达到指定的服务类型13 | 因管理结构的主机设置了过滤器而不可达14 | 因主机所设置的优先级收到破坏而不可达15 | 因优先级被删除而使主机不可达
复制代码

了解了 ICMP 协议的报文了,我们来看下 ping 命令实现的 ICMP 协议的整个传输流程。ICMP 是 IP 的上层协议,但是 ICMP 也分担了 IP 的一部分功能。下面展示了 ICMP 协议的实现的图解。


参考文献:

《TCP/IP 网络协议分析及应用》

《图解网络硬件》

《计算机网络》

发布于: 刚刚阅读数: 3
用户头像

利志分享

关注

专注架构,go,kafka,clickhouse,k8s 2019.03.05 加入

微信公众号:利志分享 或 talk_lizhi;个人小站:zengzhihai.com,分享技术,职场,人生感悟等。

评论

发布
暂无评论
【建议收藏】通俗易懂图解网络知识-第一篇_利志分享_InfoQ写作社区