OSI 中的数据转发

OSI 中的数据转发过程
书接上回,上次简单的了解了OSI以及各个层次的作用。这次我们了解一下,数据是如何在OSI各个层次之间穿梭,又是如何在网络中传递的。

一、 封装:
我们还是将应用层、表示层、会话层看成一个整体,合并为应用层看待。当数据又应用程序产生之后,面临的问题是什么呢?是传递给谁?如何传递?目标在哪里?这几个问题当中的哪一个呢?举个简单的例子,我们在天猫买了东西,接下来,你会担心对方不知道东西借给谁吗?会担心对方不知道您的收货地址吗?估计不会的,因此,应用层数据产生后,接下来的问题就是确定数据该以何种方式进行转发和控制,这也就是传输层的基本作用了。

传输层提供了多种传输方式,其中TCP和UDP是最常用的,当数据需要保证传递的完整性,有序性或者简单来讲是可靠性的时候,就需要TCP这种协议去为应用程序服务,而面对多种应用程序,TCP如何区分数据是那个应用的呢?总不能把QQ的数据交给优酷打开吧。于是定义了提供TCP或者UDP 与应用程序对接的接口,即端口。同时,应用程序,会通过增加一些说明性的,控制性的内容在数据的前面,即增加头部给数据,此过程就是封装。这时,封装之后的数据就成为了一个分段。

同理,数据经过每一层,向下传递的时候,都会告诉下面一层需要进行何种操作,也就是要进行封装,直到数据成为比特。因此上一层对下一层的控制,体现在封装的内容当中。


二、网关和下一跳

由于网络层进行了网络划分,而路由器则是连接不同网络的边界。因此,对于内部网络而言,路由器则是连接内网与外网的边界,即网关。

网络中,路由器互相连接构成网络拓扑,犹如将不同网络连接而成的地图。因此要实现此地图中任意两点之间的通信,就必须要让图中每个路由器了解完整的网络信息,这就是路由表。因此,不同网络间通信,需网关路由器根据路由表进行路径的选择,然后通过合理的路由器接口将数据转发出去,将数据转发到转发路径中的下一个路由器或者接收者。

我们出行之时,欲达某地,需要在某地换乘公交或者地铁,换乘点就相当于我们的路由器,同时这个换乘点就是到达目标的下一站。从常识来判断,这个换乘点可以是距离起点最近的一站,也可以是距离终点最近的一站,只要是路径上的站点都可以称之为下一站。网络中,数据转发路径上的路由器,依理,亦可以作为转发的下一站路径,称之为下一跳路由器。下一跳也可以是距离起点最近的下一跳,即直连下一跳;同时也可以是转发路径中其他节点路由器,即非直连下一跳。由此观之,网关实际上就是直连的下一跳路由器,网络层是一跳一跳的经过路由器的选择而进行数据转发的。

三、地址解析协议
数据的转发无非是子网内通信,或者不同子网间通信两种情况。

数据的转发最终归结于从接口发出,从接口接收。所以,数据转发发生的时候,确定数据发送的接口以及接收的接口就非常重要。此时就需要地址解析协议了。

子网内部通信双方,处于同一个广播域,若要确认对方接收信息的接口,可直接通过广播进行询问。毕竟对方和我在同一个小区,我只需要在小区内呐喊,确定对方在几号楼几楼就可以了。


不同子网通信,如何确定目标的接口?首先,使用广播直接询问对方地址肯定不合适,因为双方并不在同一广播域。ARP提供了另一种方式---代理ARP。简而言之,就是让处于边界的路由器代替目标响应ARP应答,从而由路由器作为代理,将数据转发至目标。此种做法存在安全隐患,因此通常会将代理ARP功能关闭。此时,若想要实现对于外部数据的访问,就需要指明网关,或者指定下一跳转发地址,让网关或下一跳路由器接收数据的接口代替目标响应一跳跳转发至目标。

原文地址:http://blog.51cto.com/ligtt/2311896

时间: 2024-10-16 05:23:07

OSI 中的数据转发的相关文章

供多处理器系统中的高速缓存同步中使用的转发状态

这里所述的是一种具有五种状态的高速缓存同步协议,该五种状态为:修改.排它.共享.无效和转发(MESIF).所述MESIF高速缓存同步协议包括转发(F)状态,该状态指明单个数据副本,从所述数据副本中能够产生另一个副本.利用F状态下的超高速缓冲存储器行来响应对超高速缓冲存储器行的副本的请求.在一个实施例中,将新创建的副本置于F状态下并将先前处于F状态下的超高速缓冲存储器行置成共享(S)状态或无效(I)状态.由此,如果共享超高速缓冲存储器行,则一个共享的副本就处于F状态下并且剩余的超高速缓冲存储器行副

Qt简单项目——基于TCP的数据转发程序(一)

老师托我做个服务器的程序,用来转发客户之间的消息.客户是ZigBee网络节点和监控中心. 业务描述: 每个ZigBee节点都具有厂别号.编号.每个监控中心也具有厂别号.序号.服务器Ip固定不变,但ZigBee节点和监控中心的Ip地址会动态变动,所以需要一个服务器做数据转发. 业务逻辑: 把ZigBee节点数据转发给监控中心时,根据ZigBee节点的厂别号转发给对应厂别的监控中心.如果是第一次连接服务器,在服务器端的程序上节点列表中显示该节点序号和厂别信息.反则直接转发. 把监控中心数据转发给Zi

单域MPLS vpn数据转发实验分析

MPLS VPN数据详细转发流程示意图: 配置思路: 在自治系统AS100中配置IGP,使得两台PE路由器的lo 0接口路由可达: 两台PE路由器路由可达后,在两台PE路由器之间建立MP-iBGP邻居关系,用来传输VPNV4路由: AS100中所有P路由器和PE路由器运行MPLS,并使用LDP来给非BGP路由分发标签: 在PE路由器和CE路由器之间运行ospf路由协议,使得PE路由器的VRF路由表可以学习到CE路由器的路由: 将PE路由器VRF学习到的路由重分发进BGP,使得对端PE路由器可以通

Haproxy TCP数据转发

在实际项目中需要用到haproxy做TCP转发,下面主要针对haproxy的安装及TCP数据转发配置进行说明 一.安装Haproxy (1)编译安装Haproxy mkdir -p /data01/haproxy tar -zxvf haproxy-1.7.1.tar.gz cd haproxy-1.7.1 make TARGET=linux26 ARCH=x86_64 PREFIX=/data01/haproxy make install PREFIX=/data01/haproxy mkdi

8.HCNA_HNTD——数据转发过程

TCP/IP协议族和底层协议配合,保证了数据能够实现端到端的传输.数据传输过程是一个非常复杂的过程,例如数据在转发的过程中会进行一系列的封装和解封装.对于网络工程师来说,只有深入地理解了数据在各种不同设备上的转发过程,才能够对网络进行正确的分析和检测. 学习目标: 1. 掌握数据封装和解封装的过程 2. 处理数据转发过程中的基本故障 数据可以在同一网络内或者不同网络间传输,数据转发过程也分为本地转发和远程转发,但两者的数据转发原理是基本一样的,都是遵循TCP/IP协议簇. 本示例中,主机A需要访

hive从查询中获取数据插入到表或动态分区

(前人写的不错,很实用,负责任转发)转自:http://www.crazyant.net/1197.html Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中.现在假定有一个已有数据的表staged_employees(雇员信息全量表),所属国家cnty和所属州st是该表的两个属性,我们做个试验将该表中的数据查询出来插入到另一个表employees中. 1 2 3 4 INSERT OVERWRITE TABLE employees PARTITION (cou

PatentTips - 在物联网中进行数据过滤的方法和装置

背景技术 [0001] 本发明涉及物联网,特别涉及在物联网进行数据过滤的方法和装置. [0002] 物联网是新一代信息技术的重要组成部分,特指物物相连的网络.具体地,物联网是指通过各种信息传感设备,如传感器.射频识别(RFID)技术.全球定位系统.红外感应器.激光扫描器.气体感应器等各种装置与技术,实时采集任何需要监控.连接.互动的物体或过程,采集其声.光.热.电.力学.化学.生物.位置等各种需要的信息,与互联网结合形成的一个巨大网络.物联网目的是实现物与物.物与人.所有的物品与网络的连接,以方

nodejs学习之实现http数据转发

此前在做项目的时候,一直用json文件用作模拟数据,后来发现了mock.js,于是就用了mock.js,再后来感觉这些数据再怎么模拟都是静态数据.所以就想用nodejs实现一个数据转发功能,在本地拉取服务端的数据.那时就简易做出了一个针对那个项目的数据拉取功能.而在最近,在看一些博客的时候,想把几个博客的页面内容全部拉取到一个页面来看.所以就把此前数据拉取功能稍作改造封装了一下. 做出的一个简易数据拉取demo:点我看效果 然后大概简述一下demo的实现.当作学习记录. 首先是数据转发模块,我将

内核中用于数据接收的结构体struct msghdr(转)

内核中用于数据接收的结构体struct msghdr(转) 我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,ping另一台主机172.16.48.1.我们使用系统调用sendto发送这个icmp包. ssize_t sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);