【建议收藏】通俗易懂图解网络知识 - 第一篇
大家好,我是追麾(hui)。
关于网络的知识,我这里主要是从 OSI 分层,网络协议等相关的知识,大家一起来学习,觉得不错,记得点赞,转发,在看哦。
谈谈对 OSI 七层模型和 TCP/IP 四层模型的理解?
所谓七层模型和四层模型是前辈们为了增强通用型和兼容性,设计出来的层次结构,每一层都遵守一定的规则。
物理层:通过光缆,网线等物理方式把电脑连接起来,是传递比特流,并且规定了电平,速度,电缆针脚。
数据链路层:把比特流封装成数据帧的格式,帧是数据链路层的传送单位。电脑连接起来之后,数据都是经过网卡传输,而网卡定义了世界唯一的 mac 地址,通过广播的形式向局域网所有的电脑发送数据,根据数据中的 mac 地址和自身的进行对比判断是否发送给自己。数据链路层主要是帧编码和误差纠正控制。
网络层:网络层定义了 IP 协议和子网掩码,通过对 IP 和子网掩码进行运算能确定是否是通一个子网,通过路由器和交换机进行传输。网络层具有寻址和路由选择,连接的建立,保持,终止等功能。
传输层:传输层是端到端的连接,为了确定数据包是从哪个进程发送过来的,就需要端口号,通过端口来建立通信,比如 TCP 和 UDP 属于这一层的协议。
会话层:负责建立,管理,断开表示层实体间的通信会话。
表示层:服务于应用层数据编码和转换功能,保证一个系统的应用层数据发送到另外一个应用层能识别。
应用层:最靠近用户的一层,是为计算机用户提供应用接口,最终供用户的能理解使用的一层。
TCP/IP 模型是四层,对于 OSI 的模型简化。
网络接口层,也叫网络访问层,包含 OSI 模型的物理层和数据链路层,把电脑连接起来。
网络层,也叫做 IP 层,处理 IP 数据包的传输、路由,建立主机间的通信。
传输层,为两台主机设备提供端到端的通信。
应用层,包含 OSI 的会话层、表示层和应用层,提供了一些常用的协议规范,比如 FTP、SMPT、HTTP 等。
总结:物理层通过物理手段把电脑连接起来,数据链路层是对比特流的封装编码,网络层来建立主机对主机的通信,传输层建立端口到端口的通信,表示层处理数据编码和转换,应用层最终负责建立连接,数据格式转换,呈现给用户。
在 OSI 七层参考模型中,每一层都有哪些协议?
物理层协议有:EIA/TIA-232, EIA/TIA-499,V.35, V.24,RJ45, Ethernet, 802.3,FDDI
数据链路层协议有:Frame Relay,HDLC,PPP, IEEE 802.3/802.2
网络层协议有:IP,IPX,AppleTalk DDP
传输层协议有:TCP,UDP
会话层协议有:RPC,SQL,NFS,NetBIOS,names,AppleTalk
表示层协议有:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption
应用层协议有: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 字节,表示 ICMP 消息的类型。
代码:占 l 字节,进一步划分 ICMP 消息的子类型,如对类型 3(目的不可达)又细分为目的网络不可达(代码 0)、目的主机不可达(代码 2)、目的协议不可达(代码 3)、目的端口不可达(代码 4)等。
校验和:占 2 字节,对 ICMP 报文首部和数据进行校验。
第 4 个字段:占 4 字节,内容取决于 ICMP 报文的类型,有的类型不定义该字段。
数据部分:内容和长度取决于 ICMP 报文的类型。
ICMP 消息的类型分为查询报文,差错控制报文
ICMP 代码类型
了解了 ICMP 协议的报文了,我们来看下 ping 命令实现的 ICMP 协议的整个传输流程。ICMP 是 IP 的上层协议,但是 ICMP 也分担了 IP 的一部分功能。下面展示了 ICMP 协议的实现的图解。
参考文献:
《TCP/IP 网络协议分析及应用》
《图解网络硬件》
《计算机网络》
版权声明: 本文为 InfoQ 作者【利志分享】的原创文章。
原文链接:【http://xie.infoq.cn/article/0b3c07fae98add45c5c4965d0】。文章转载请联系作者。
评论