网路基础——网络分层模型(两主机的通信过程)

时间:2024-04-14 16:50:10

一.网络分层模型

1.链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆的物理接口细节。

2.网络层:有时也称作互联网层。主要解决IP的问题,在TCP/IP协议族中,网络层协议有:
①IP协议(网际协议)
②ICMP协议(Internet Control Message Protocol,Internet互联网控制报文协议):用于探路,检测对方主机是否与我的主机相通,如ping命令。
③IGMP协议(Internet Group Management Protocol,Internet组管理协议):将IP进行分组,广播时用到。
④ARP(Address Resolution Protocol,地址解析协议):将IP转为物理地址。
⑤RARP(Reverse Address Resolution Protocol,反向地址解析协议):将物理地址转为IP地址。

3.传输层:主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协
议:TCP (Transmission Control Protocol传输控制协议)和UDP(User Datagram Protocol用户数据报协议)。

4.应用层:负责处理特定的应用程序细节。

二.数据的封装和拆装

位于TCP/IP四层模型各个层的数据通常用一个公共的机制来封装:定义描述元信息和数据包的部分真实信息
的报头的协议,这些元信息可以是数据源、目的地和其他的附加属性。当信息在不同的层之间传递时,都会在每一个层被封装上协议的特有头部。而当我们收到数据时会一层层的剥离头部,直至取出数据。

比如以HTTP协议发送的数据包为例:
网路基础——网络分层模型(两主机的通信过程)
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

三.以太网帧格式

源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值,分别对应IP、ARP、RARP。帧末尾是CRC校验码。

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片,ifconfig命令的输出中也有“MTU:1500”。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。
网路基础——网络分层模型(两主机的通信过程)

四.两主机的通信过程

网路基础——网络分层模型(两主机的通信过程)
假如一个局域网内有PC1,PC2,PC3三台主机,PC1要与IP为192.168.1.101的主机建立链接。建立链接首先要知道目的电脑的物理地址,为了知道目的地址,则会先发送一个ARP包,上面是PC1发送的ARP,下面是PC2回复的ARP。过程如下:
1.发送ARP(ARP填写目的IP与源IP,目的物理地址(不知道的情况下填FF)与源物理地址)到交换机,交换机再群发到当前局域网内的每一台主机。
2.局域网内的每一台主机通过物理地址判断是否接收。因为ARP目的物理地址是FF,所以PC2,PC3都会接收消息。
3.PC2,PC3去掉以太网头部以后就跑到网络层了,并把数据递交到网络层。
4.网络层开始解析ARP包,取出目的IP。网络层主要解决IP的问题,那么它只需要解析IP就行了。因为目的IP与PC2的IP相同,所以PC2会回复一个ARP包给PC1,这时PC1通过PC2回复的ARP包就知道了PC2的信息物理地址。而PC3因为IP不匹配则会丢弃消息。
5.PC1知道PC2的物理地址后就可以通信了。

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到获取物理地址的作用。
网路基础——网络分层模型(两主机的通信过程)

每台主机都维护一个ARP缓存表,可以用 arp ‐a 命令查看。缓存表中的表项有过期时间(一般为20分钟),
如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。