gateway是啥设备

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gateway是啥设备相关的知识,希望对你有一定的参考价值。

局域网中,用一个名叫gateway的设备代替了路由器,我知道gateway的意思是“网关”的意思,这个设备比路由器好在哪里?工作原理是什么?

网关

网关曾经是很容易理解的概念。在早期的因特网中,术语网关即指路由器。路由器是网络中超越本地网络的标记, 这个走向未知的“大门”曾经、现在仍然用于计算路由并把分组数据转发到源始网络之外的部分,因此, 它被认为是通向因特网的大门。随着时间的推移,路由器不再神奇,公共的基于IP的广域网的出现和成熟促进了路由器的成长。 现在路由功能也能由主机和交换集线器来行使,网关不再是神秘的概念。现在,路由器变成了多功能的网络设备, 它能将局域网分割成若干网段、互连私有广域网中相关的局域网以及将各广域网互连而形成了因特网, 这样路由器就失去了原有的网关概念。然而术语网关仍然沿用了下来,它不断地应用到多种不同的功能中, 定义网关已经不再是件容易的事。目前,主要有三种网关:

协议网关

应用网关

安全网关

唯一保留的通用意义是作为两个不同的域或系统间中介的网关,要克服的差异本质决定了需要的网关类型。

一、协议网关

协议网关通常在使用不同协议的网络区域间做协议转换。这一转换过程可以发生在OSI参考模型的第2层、第3层或2、3层之间。 但是有两种协议网关不提供转换的功能:安全网关和管道。由于两个互连的网络区域的逻辑差异, 安全网关是两个技术上相似的网络区域间的必要中介。如私有广域网和公有的因特网。这一特例在后续的“组合过滤网关”中讨论, 此部分中集中于实行物理的协议转换的协议网关。

1、管道网关

管道是通过不兼容的网络区域传输数据的比较通用的技术。数据分组被封装在可以被传输网络识别的帧中,到达目的地时, 接收主机解开封装,把封装信息丢弃,这样分组就被恢复到了原先的格式。例如在下图中,IPv4数据由路由器A封装在IPv6分组中, 通过IPv6网络传递给一个IPv4主机,路由器解开IPv6的封装,把还原的IPv4数据传递给目的主机。

管道技术只能用于3层协议,从SNA到IPv6。虽然管道技术有能够克服特定网络拓扑限制的优点,它也有缺点。 管道的本质可以隐藏不该接受的分组,简单来说,管道可以通过封装来攻破防火墙,把本该过滤掉的数据传给私有的网络区域。

2、专用网关

很多的专用网关能够在传统的大型机系统和迅速发展的分布式处理系统间建立桥梁。 典型的专用网关用于把基于PC的客户端连到局域网边缘的转换器。该转换器通过X.25网络提供对大型机系统的访问。 下图演示了从PC客户端到网关的过程,网关将IP数据通过X.25广域网传送给大型机。

这些网关通常是需要安装在连接到局域网的计算机上的便宜、单功能的电路板,这使其价格很低且很容易升级。在上图的例子中, 该单功能的网关将大型机时代的硬连线的终端和终端服务器升级为PC机和局域网。

3、两层协议网关

两层协议网关提供局域网到局域网的转换,它们通常被称为翻译网桥而不是协议网关。 在使用不同帧类型或时钟频率的局域网间互连可能就需要这种转换。

(1)帧格式差异

IEEE802兼容的局域网共享公共的介质访问层,但是它们的帧结构和介质访问机制使它们不能直接互通。如下图:

翻译网桥利用了2层的共同点,如MAC地址,提供帧结构不同部分的动态翻译,使它们的互通成为了可能。 第一代局域网需要独立的设备来提供翻译网桥,如今的多协议交换集线器通常提供高带宽主干, 在不同帧类型间可作为翻译网桥,如下图所示:

现在翻译网桥的幕后性质使这种协议转换变得模糊,独立的翻译设备不再需要, 多功能交换集线器天生就具有2层协议转换网关的功能。
替代使用仅涉及2层的设备如翻译网桥或多协议交换集线器的另一种选择是使用3层设备:路由器。 长期以来路由器就是局域网主干的重要组成部分,见下图。如果路由器用于互连局域网和广域网, 它们通常都支持标准的局域网接口,经过适当的配置,路由器很容易提供不同帧类型的翻译。 这种方案的缺点是如果使用3层设备路由器需要表查询,这是软件功能,而象交换机和集线器等2层设备的功能由硬件来实现, 从而可以运行得更快。

(2)传输率差异
很多过去的局域网技术已经提升了传输速率,例如,IEEE 802.3以太网现在有10Mbps、100Mbps和1bps的版本, 它们的帧结构是相同的, 主要的区别在于物理层以及介质访问机制,在各种区别中,传输速率是最明显的差异。令牌环网也提升了传输速率, 早期版本工作在4Mbps速率下,现在的版本速率为16Mbps,100Mbps的FDDI是直接从令牌环发展来的,通常用作令牌环网的主干。 这些仅有时钟频率不同的局域网技术需要一种机制在两个其它方面都兼容的局域网间提供缓冲的接口,现今的多协议、 高带宽的交换集线器提供了能够缓冲速率差异的健壮的背板,如下图:

如今的多协议局域网可以为同一局域网技术的不同速率版本提供内部速率缓冲,还可以为不同的802兼容的局域网提供2层帧转换。 路由器也可以做速率差异的缓冲工作,它们相对于交换集线器的长处是它们的内存是可扩展的。 其内存缓存进入和流出分组到一定程度以决定是否有相应的访问列表(过滤)要应用,以及决定下一跳, 该内存还可以用于缓存可能存在于各种网络拓扑间的速率差异,如下图:

二、应用网关
应用网关是在使用不同数据格式间翻译数据的系统。典型的应用网关接收一种格式的输入,将之翻译, 然后以新的格式发送,如下图。输入和输出接口可以是分立的也可以使用同一网络连接。

一种应用可以有多种应用网关。如Email可以以多种格式实现,提供Email的服务器可能需要与各种格式的邮件服务器交互, 实现此功能唯一的方法是支持多个网关接口。下图所示为一个邮件服务器可以支持的几种网关接口。

应用网关也可以用于将局域网客户机与外部数据源相连,这种网关为本地主机提供了与远程交互式应用的连接。 将应用的逻辑和执行代码置于局域网中客户端避免了低带宽、高延迟的广域网的缺点,这就使得客户端的响应时间更短。 应用网关将请求发送给相应的计算机,获取数据,如果需要就把数据格式转换成客户机所要求的格式,见下图所示。

三、安全网关
安全网关是各种技术有趣的融合,具有重要且独特的保护作用,其范围从协议级过滤到十分复杂的应用级过滤。防火墙主要有三类:

分组过滤
电路网关
应用网关

注意:三种中只有一种是过滤器,其余都是网关。
这三种机制通常结合使用。过滤器是映射机制,可区分合法的和欺骗包。每种方法都有各自的能力和限制,要根据安全的需要仔细评价。

1、包过滤器

包过滤是安全映射最基本的形式,路由软件可根据包的源地址、目的地址或端口号建立许可权, 对众所周知的端口号的过滤可以阻止或允许网际协议如FTP、rlogin等。过滤器可对进入和/或流出的数据操作, 在网络层实现过滤意味着路由器可以为所有应用提供安全映射功能。作为(逻辑意义上的)路由器的常驻部分, 这种过滤可在任何可路由的网络中自由使用,但不要把它误解为万能的,包过滤有很多弱点,但总比没有好。
包过滤很难做好,尤其当安全需求定义得不好且不细致的时候更是如此。这种过滤也很容易被攻破。包过滤比较每个数据包, 基于包头信息与路由器的访问列表的比较来做出通过/不通过的决定,这种技术存在许多潜在的弱点。首先, 它直接依赖路由器管理员正确地编制权限集,这种情况下,拼写的错误是致命的, 可以在防线中造成不需要任何特殊技术就可以攻破的漏洞。即使管理员准确地设计了权限,其逻辑也必须毫无破绽才行。 虽然设计路由似乎很简单,但开发和维护一长套复杂的权限也是很麻烦的, 必须根据防火墙的权限集理解和评估每天的变化,新添加的服务器如果没有明确地被保护,可能就会成为攻破点。
随着时间的推移,访问权限的查找会降低路由器的转发速度。每当路由器收到一个分组, 它必须识别该分组要到达目的地需经由的下一跳地址,这必将伴随着另一个很耗费CPU的工作: 检查访问列表以确定其是否被允许到达该目的地。访问列表越长,此过程要花的时间就越多。
包过滤的第二个缺陷是它认为包头信息是有效的,无法验证该包的源头。 头信息很容易被精通网络的人篡改, 这种篡改通常称为“欺骗”。
包过滤的种种弱点使它不足以保护你的网络资源,最好与其它更复杂的过滤机制联合使用,而不要单独使用。

2、链路网关

链路级网关对于保护源自私有、安全的网络环境的请求是很理想的。这种网关拦截TCP请求,甚至某些UDP请求, 然后代表数据源来获取所请求的信息。该代理服务器接收对万维网上的信息的请求,并代表数据源完成请求,如下图。实际上, 此网关就象一条将源与目的连在一起的线,但使源避免了穿过不安全的网络区域所带来的风险。

这种方式的请求代理简化了边缘网关的安全管理,如果做好了访问控制,除了代理服务器外所有出去的数据流都被阻塞。 理想情况下,此服务器有唯一的地址,不属于任何内部使用的网段。这绝对使无意中微妙地暴露给不安全区域的信息量最小化, 只有代理服务器的网络地址可被外部得到,而不是安全区域中每个联网的计算机的网络地址。

3、应用网关

应用网关是包过滤最极端的反面。包过滤实现的是对所有穿过网络层包过滤设备的数据的通用保护, 而应用网关在每个需要保护的主机上放置高度专用的应用软件,它防止了包过滤的陷阱,实现了每个主机的坚固的安全。
应用网关的一个例子是病毒扫描器,这种专用软件已经成了桌面计算的主要产品之一。它在启动时调入内存并驻留在后台, 持续地监视文件不受已知病毒的感染,甚至是系统文件的改变。 病毒扫描器被设计用于在危害可能产生前保护用户不受到病毒的潜在损害。
这种保护级别不可能在网络层实现,那将需要检查每个分组的内容,验证其来源,确定其正确的网络路径, 并确定其内容是有意义的还是欺骗性的。这一过程将产生无法负担的过载,严重影响网络性能。

4、组合过滤网关

使用组合过滤方案的网关通过冗余、重叠的过滤器提供相当坚固的访问控制,可以包括包、链路和应用级的过滤机制。 这样的安全网关最普通的实现是象岗哨一样保护私有网段边缘的出入点,通常称为边缘网关或防火墙。 这一重要的责任通常需要多种过滤技术以提供足够的防卫。下图所示为由两个组件构成的安全网关:一个路由器和一个处理机。 结合在一起后,它们可以提供协议、链路和应用级保护。

这种专用的网关不象其它种类的网关一样,需要提供转换功能。作为网络边缘的网关,它们的责任是控制出入的数据流。 显然的,由这种网关联接的内网与外网都使用IP协议,因此不需要做协议转换,过滤是最重要的。
保护内网不被非授权的外部网络访问的原因是显然的。控制向外访问的原因就不那么明显了。在某些情况下, 是需要过滤发向外部的数据的。例如,用户基于浏览的增值业务可能产生大量的WAN流量,如果不加控制, 很容易影响网络运载其它应用的能力,因此有必要全部或部分地阻塞此类数据。
联网的主要协议IP是个开放的协议,它被设计用于实现网段间的通信。这既是其主要的力量所在,同时也是其最大的弱点。 为两个IP网提供互连在本质上创建了一个大的IP网, 保卫网络边缘的卫士--防火墙--的任务就是在合法的数据和欺骗性数据之间进行分辨。
参考技术A 网关的英文名字是Gateway,最初的意思是连接两个协议差别很大的计算机网络时使用的设备。通过网关可以将不同体系结构的计算机网络连接在一起,例如IBM的SNA服务器要和DEC公司的网络交流信息,就可以通过网关来实现,它完成复杂的协议转换工作,并将数据重新分组发送。在OSI中,网关属于最高层(应用层)的设备。网关本身不具有Cache(缓存),只是协议的转换或者转发。
网关(Gateway)以及网桥(Gate Bridge)均指不同网络之间的通讯接口设备和程序,只不过两者针对的网络层次不同。网关是网络连接设备的重要组成部分,它不仅具有路由的功能,而且能在两个不同的协议集之间进行转换,从而使不同的网络之间进行互联。例如:一个Netware局域网通过网关可以访问IBM的SNA网络,这样使用IPX协议的PC就可和SNA网络上的IBM主机进行通信。现在Internet技术上越来越少用这两个词汇,而由Router (路由器)统指此类接口设备和程序。

如果搞清了什么是网关,默认网关也就好理解了。就好像一个房间可以有多扇门一样,一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。
 如何设置默认网关

  一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。

  1. 手动设置

  手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况,比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲,一旦因为迁移等原因导致必须修改默认网关的IP地址,就会给网管带来很大的麻烦,所以不推荐使用。

  在Windows 9x中,设置默认网关的方法是在“网上邻居”上右击,在弹出的菜单中点击“属性”,在网络属性对话框中选择“TCP/IP协议”,点击“属性”,在“默认网关”选项卡中填写新的默认网关的IP地址就可以了。

  需要特别注意的是:默认网关必须是电脑自己所在的网段中的IP地址,而不能填写其他网段中的IP地址。

  2. 自动设置

  自动设置就是利用DHCP服务器来自动给网络中的电脑分配IP地址、子网掩码和默认网关。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了DHCP服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的IP地址。这种方法适用于网络规模较大、TCP/IP参数有可能变动的网络。

  另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和DHCP有相似之处.
参考资料:互联网本回答被提问者采纳
参考技术B 网关(Gateway)又叫协议转换器,是一种复杂的网络连接设备,可以支持不同协议之间的转换,实现不同协议网络之间的互连。网关具有对不兼容的高层协议进行转换的能力,为了实现异构设备之间的通信,网关需要对不同的链路层、专用会话层、表示层和应用层协议进行翻译和转换。
所以说,网关是一个智能超群的路由器,一个智能超群的网桥,一个智能超群的中继器。
若要使两个完全不同的网络(异构网)连接在一起,一般使用网关,在Internet中两个网络也要通过一台称为网关的计算机实现互联。这台计算机能根据用户通信目标计算机的IP地址,决定是否将用户发出的信息送出本地网络,同时,它还将外界发送给属于本地网络计算机的信息接收过来,它是一个网络与另一个网络相联的通道。为了使TCP/IP协议能够寻址,该通道被赋予一个IP地址,这个IP地址称为网关地址。

网关主要用于不同体系结构的网络或者局域网与主机系统的连接。在互连设备中,它最为复杂,一般只能进行一对一的转换,或是少数几种特定应用协议的转换。网关一般是一种软件产品。目前,网关已成为网络上每个用户都能访问大型主机的通用工具。

API Gateway 中 AWS Firehose PutRecordBatch 的映射模板应该是啥样的?

【中文标题】API Gateway 中 AWS Firehose PutRecordBatch 的映射模板应该是啥样的?【英文标题】:What should the mapping template look like for AWS Firehose PutRecordBatch in API Gateway?API Gateway 中 AWS Firehose PutRecordBatch 的映射模板应该是什么样的? 【发布时间】:2019-08-02 11:30:46 【问题描述】:

我已经成功设置了一个 API,它使用 PutRecord 使用这些说明(https://aws.mannem.me/?p=1152 - 注意:它说不安全但我仍然点击了,因为我需要它)。

我正在尝试为 PutRecordBatch 设置一个 API(基本上允许一次写入多个记录),但我不断收到

"__type": "序列化异常"

根据数小时的研究,当传入的 API 调用格式与集成请求中注明的映射模板不匹配时,API 网关会引发该错误。我正在努力弄清楚如何修复我的映射模板。

这是我的映射模板:


    "StreamName": "$input.path('DeliveryStreamName')",
    "Records": [
           #foreach($elem in $input.path('$.Records'))
              
                "Data": "$util.base64Encode($elem.Data)",
              #if($foreach.hasNext),#end
            #end
        ]

这是我要发送的测试数据:


    "DeliveryStreamName": "test",
    "Records": [
        "Data": "SampleDataStringToFirehose"
    ,
    
        "Data": "SampleDataStringToFirehose2"
    ]

【问题讨论】:

【参考方案1】:

太笨了,但是映射模板有一个错误:末尾有一个额外的逗号

"数据": "$util.base64Encode($elem.Data)",

这是导致问题的原因。下面是正确的版本:


    "DeliveryStreamName": "$input.path('$.DeliveryStreamName')",
    "Records": [
           #foreach($elem in $input.path('$.Records'))
              
                "Data": "$util.base64Encode($elem.Data)"
              #if($foreach.hasNext),#end
            #end
        ]

【讨论】:

【参考方案2】:

你的例子对我帮助很大,所以我想补充它,以防万一其他人遇到我的具体情况。

在我的例子中,我需要发送一个 JSON 对象而不是一个简单的字符串,类似于:


   "DeliveryStreamName": "test",
   "Records": [
       "Data": "foo": "bar", "count": 321
    ,
    
       "Data": "foo1": "bar1", "count": 10
    ]

在这种情况下,我在您的示例中使用模板时发生的情况是对象以非 JSON 格式存储,不适合进一步分析。

通过对模板的简单调整,您可以存储格式正确的 JSON 对象:


    "StreamName": "$input.path('DeliveryStreamName')",
    "Records": [
           #foreach($elem in $input.path('$.Records'))
              
                #set($jsonPath = "$.Records[$foreach.index].Data")
                "Data": "$util.base64Encode($input.json($jsonPath))"
              #if($foreach.hasNext),#end
            #end
     ]

【讨论】:

以上是关于gateway是啥设备的主要内容,如果未能解决你的问题,请参考以下文章

手机上网出现 Gateway received an linvalid response from the upstream gateway 是啥意思 怎么解决?

socket到底是啥?网关(Gateway)是啥?网络通信的核心是啥?

gateway ip是啥

gateway ip是啥

504 Gateway Timeout 是啥意思

API Gateway 中 AWS Firehose PutRecordBatch 的映射模板应该是啥样的?