【TCP/IP五层模型之数据包发送流程】OSI七层模型是一种标准,TCP/IP五层模型是OSI七层模型的一种实现。本文详细介绍主机间的数据包是如何传输的,对于源主机和目标主机之间的数据交流,主要分为两种情况:同网段和不同网段的数据转发。
对于一层物理层设备,通常就是指物理线的连接,两台主机之间直接通过物理线相连,例如网线、双绞线、无线连接、光纤等,这是实现物理层的基本设备。
二层数据链路层设备通常指的就是交换机,不同主机之间的互联,如果不是一对一地连接,通常都需要使用一台交换机。二层的编址方案是MAC地址,交换机中的主机通信是依据MAC地址通信的。
三层物理层使用的是IP地址,ARP协议是IP地址到MAC地址的映射,通过ARP协议可以很方便地通过IP地址获取到目标主机的MAC地址,你可以通过arp –a查看本机的ARP表。
文章图片
一、同网段数据包转发过程
文章图片
如上图,PC1的IP地址是192.168.3.1,MAC地址为0800:0222:2222,PC2的IP地址是192.168.3.2,MAC地址为0800:0222:1111。
首先,PC1应用层的应用程序产生需要发送的数据,向下层传递数据给传输层,传输层将数据发送到网络层,网络层使用IP协议对数据进行封装,并检查目标PC2的地址是否和本机PC1属于同一个网段,若属于同一个网段则进行同网段数据包传输。检查IP地址是否在同一网段的方式是通过比较IP网络段,192.168.3.1和192.168.3.2是C类地址,前24位相同,因此在同一网段。
再将数据向下层传输到二层数据链路层,二层通过ARP协议查看ARP表,ARP是IP和MAC地址映射,即查找是否有PC2的IP192.168.3.2对应MAC地址0800:0222:1111,若找到则将其MAC地址一同封装到数据包中,若没有记录,则通过ARP协议请求MAC地址,最后在物理层直接传输数据包。
二、不同网段的数据包转发过程
文章图片
若源主机IP地址和目标主机IP地址不在同一个网段,如上图,PC1的IP为192.168.3.1,PC2的IP地址为192.168.4.2,C类地址前24位不同,因此不在同一个网段。
不同网段之间的主机通信,需要使用路由器进行转发,PC1先将数据发送到本网的网关,PC1所属网络的网关的IP地址为192.168.3.2。网关查找路由表,路由表记录了网关对应网络的主机IP地址,在这里找到网关192.168.4.1中有目标主机PC的IP地址192.168.4.2,则通过该网关发送数据到PC2。
在这里要注意,在网络层进行IP地址校验的时候,如果发现目标IP地址和源IP地址不在同一个网段,那么到数据链路层的时候,不是请求目标主机的MAC地址,而是获取本网网关的MAC地址并封装到数据包中,在之后的传输中,每经过一个网端,MAC地址都会变。
推荐阅读
- 什么是OSI七层模型和网络五层模型(有什么功能或作用? – 深入浅出HTTP原理)
- 计算机网络编程|计算机网络学习笔记1-网络编程基础
- 计算机网络|计算机网络---TCP/IP网络编程实验
- 计算机网络|计算机网络、网络编程笔记
- 计算机网络|计算机网络 --- 初始网络
- IPD|IPD解读--华为500强的研发第一名,除了钱还有IPD
- 计算机网络|计算机网络期末4小时速成
- Linux|传输层TCP与UDP
- Linux|Linux编程——网络编程