Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Cloud 为什么推出自己的服务网关 Gateway ?

Spring Cloud 为什么推出自己的服务网关 Gateway ?

作者头像
CSDN技术头条
发布于 2019-11-19 07:39:03
发布于 2019-11-19 07:39:03
1.7K00
代码可运行
举报
文章被收录于专栏:CSDN技术头条CSDN技术头条
运行总次数:0
代码可运行

Spring 官方最终还是按捺不住推出了自己的网关组件:Spring Cloud Gateway ,相比之前我们使用的 Zuul(1.x) 它有哪些优势呢?Zuul(1.x) 基于 Servlet,使用阻塞 API,它不支持任何长连接,如 WebSockets,Spring Cloud Gateway 使用非阻塞 API,支持 WebSockets,支持限流等新特性

Spring Cloud Gateway

Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

相关概念:

  • Route(路由):这是网关的基本构建块。它由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配。
  • Predicate(断言):这是一个 Java 8 的 Predicate。输入类型是一个 ServerWebExchange。我们可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。
  • Filter(过滤器):这是org.springframework.cloud.gateway.filter.GatewayFilter的实例,我们可以使用它修改请求和响应。

工作流程:

客户端向 Spring Cloud Gateway 发出请求。如果 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。 过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。

Spring Cloud Gateway 的特征:

  • 基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
  • 动态路由
  • Predicates 和 Filters 作用于特定路由
  • 集成 Hystrix 断路器
  • 集成 Spring Cloud DiscoveryClient
  • 易于编写的 Predicates 和 Filters
  • 限流
  • 路径重写

快速上手

Spring Cloud Gateway 网关路由有两种配置方式:

  • 在配置文件 yml 中配置
  • 通过@Bean自定义 RouteLocator,在启动主类 Application 中配置

这两种方式是等价的,建议使用 yml 方式进配置。

使用 Spring Cloud Finchley 版本,Finchley 版本依赖于 Spring Boot 2.0.6.RELEASE。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

经测试 Finchley.RELEASE 有 bug 多次请求会报空指针异常,SR2 是 Spring Cloud 的最新版本。

添加项目需要使用的依赖包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

Spring Cloud Gateway 是使用 netty+webflux 实现因此不需要再引入 web 模块。

我们先来测试一个最简单的请求转发。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server:
  port: 8080
spring:
  cloud:
    gateway:
      routes:
      - id: neo_route
        uri: http://www.ityouknow.com
        predicates:
        - Path=/spring-cloud

各字段含义如下:

  • id:我们自定义的路由 ID,保持唯一
  • uri:目标服务地址
  • predicates:路由条件,Predicate 接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(比如:与,或,非)。
  • filters:过滤规则,本示例暂时没用。

上面这段配置的意思是,配置了一个 id 为 neo_route 的路由规则,当访问地址 http://localhost:8080/spring-cloud时会自动转发到地址:http://www.ityouknow.com/spring-cloud。配置完成启动项目即可在浏览器访问进行测试,当我们访问地址http://localhost:8080/spring-cloud 时会展示页面展示如下:

明页面转发成功。

转发功能同样可以通过代码来实现,我们可以在启动类 GateWayApplication 中添加方法 customRouteLocator() 来定制转发规则。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootApplication
public class GateWayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GateWayApplication.class, args);
    }

    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("path_route", r -> r.path("/about")
                        .uri("http://ityouknow.com"))
                .build();
    }

}

上面配置了一个 id 为 path_route 的路由,当访问地址http://localhost:8080/about时会自动转发到地址:http://www.ityouknow.com/about和上面的转发效果一样,只是这里转发的是以项目地址/about格式的请求地址。

上面两个示例中 uri 都是指向了我的个人网站,在实际项目使用中可以将 uri 指向对外提供服务的项目地址,统一对外输出接口。

以上便是 Spring Cloud Gateway 最简单的两个请求示例,Spring Cloud Gateway 还有更多实用的功能接下来我们一一介绍。

路由规则

Spring Cloud Gateway 的功能很强大,我们仅仅通过 Predicates 的设计就可以看出来,前面我们只是使用了 predicates 进行了简单的条件匹配,其实 Spring Cloud Gataway 帮我们内置了很多 Predicates 功能。

Spring Cloud Gateway 是通过 Spring WebFlux 的 HandlerMapping 做为底层支持来匹配到转发路由,Spring Cloud Gateway 内置了很多 Predicates 工厂,这些 Predicates 工厂通过不同的 HTTP 请求参数来匹配,多个 Predicates 工厂可以组合使用。

Predicate 介绍

Predicate 来源于 Java 8,是 Java 8 中引入的一个函数,Predicate 接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(比如:与,或,非)。可以用于接口请求参数校验、判断新老数据是否有变化需要进行更新操作。and--与、or--或、negate--非

在 Spring Cloud Gateway 中 Spring 利用 Predicate 的特性实现了各种路由匹配规则,有通过 Header、请求参数等不同的条件来进行作为条件匹配到对应的路由。网上有一张图总结了 Spring Cloud 内置的几种 Predicate 的实现。

说白了 Predicate 就是为了实现一组匹配规则,方便让请求过来找到对应的 Route 进行处理,接下来我们接下 Spring Cloud GateWay 内置几种 Predicate 的使用。

通过时间匹配

Predicate 支持设置一个时间,在请求进行转发的时候,可以通过判断在这个时间之前或者之后进行转发。比如我们现在设置只有在2019年1月1日才会转发到我的网站,在这之前不进行转发,我就可以这样配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
       - id: time_route
        uri: http://ityouknow.com
        predicates:
         - After=2018-01-20T06:06:06+08:00[Asia/Shanghai]

Spring 是通过 ZonedDateTime 来对时间进行的对比,ZonedDateTime 是 Java 8 中日期时间功能里,用于表示带时区的日期与时间信息的类,ZonedDateTime 支持通过时区来设置时间,中国的时区是:Asia/Shanghai

After Route Predicate 是指在这个时间之后的请求都转发到目标地址。上面的示例是指,请求时间在 2018年1月20日6点6分6秒之后的所有请求都转发到地址http://ityouknow.com+08:00是指时间和UTC时间相差八个小时,时间地区为Asia/Shanghai

添加完路由规则之后,访问地址http://localhost:8080会自动转发到http://ityouknow.com

Before Route Predicate 刚好相反,在某个时间之前的请求的请求都进行转发。我们把上面路由规则中的 After 改为 Before,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
       - id: after_route
        uri: http://ityouknow.com
        predicates:
         - Before=2018-01-20T06:06:06+08:00[Asia/Shanghai]

就表示在这个时间之前可以进行路由,在这时间之后停止路由,修改完之后重启项目再次访问地址http://localhost:8080,页面会报 404 没有找到地址。

除过在时间之前或者之后外,Gateway 还支持限制路由请求在某一个时间段范围内,可以使用 Between Route Predicate 来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
       - id: after_route
        uri: http://ityouknow.com
        predicates:
         - Between=2018-01-20T06:06:06+08:00[Asia/Shanghai], 2019-01-20T06:06:06+08:00[Asia/Shanghai]

这样设置就意味着在这个时间段内可以匹配到此路由,超过这个时间段范围则不会进行匹配。通过时间匹配路由的功能很酷,可以用在限时抢购的一些场景中。

通过 Cookie 匹配

Cookie Route Predicate 可以接收两个参数,一个是 Cookie name ,一个是正则表达式,路由规则会通过获取对应的 Cookie name 值和正则表达式去匹配,如果匹配上就会执行路由,如果没有匹配上则不执行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
           - id: cookie_route
              uri: http://ityouknow.com
              predicates:
              - Cookie=ityouknow, kee.e

使用 curl 测试,命令行输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl http://localhost:8080 --cookie "ityouknow=kee.e"

则会返回页面代码,如果去掉--cookie "ityouknow=kee.e",后台汇报 404 错误。

通过 Header 属性匹配

Header Route Predicate 和 Cookie Route Predicate 一样,也是接收 2 个参数,一个 header 中属性名称和一个正则表达式,这个属性值和正则表达式匹配则执行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
      - id: header_route
        uri: http://ityouknow.com
        predicates:
        - Header=X-Request-Id, \d+

使用 curl 测试,命令行输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl http://localhost:8080  -H "X-Request-Id:666666" 

则返回页面代码证明匹配成功。将参数-H "X-Request-Id:666666"改为-H "X-Request-Id:neo"再次执行时返回404证明没有匹配。

通过 Host 匹配

Host Route Predicate 接收一组参数,一组匹配的域名列表,这个模板是一个 ant 分隔的模板,用.号作为分隔符。它通过参数中的主机地址作为匹配规则。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
      - id: host_route
        uri: http://ityouknow.com
        predicates:
        - Host=**.ityouknow.com

使用 curl 测试,命令行输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl http://localhost:8080  -H "Host: www.ityouknow.com" 
curl http://localhost:8080  -H "Host: md.ityouknow.com" 

经测试以上两种 host 均可匹配到 host_route 路由,去掉 host 参数则会报 404 错误。

通过请求方式匹配

可以通过是 POST、GET、PUT、DELETE 等不同的请求方式来进行路由。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
      - id: method_route
        uri: http://ityouknow.com
        predicates:
        - Method=GET

使用 curl 测试,命令行输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# curl 默认是以 GET 的方式去请求
curl http://localhost:8080

测试返回页面代码,证明匹配到路由,我们再以 POST 的方式请求测试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# curl 默认是以 GET 的方式去请求
curl -X POST http://localhost:8080

返回 404 没有找到,证明没有匹配上路由

通过请求路径匹配

Path Route Predicate 接收一个匹配路径的参数来判断是否走路由。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
      - id: host_route
        uri: http://ityouknow.com
        predicates:
        - Path=/foo/{segment}

如果请求路径符合要求,则此路由将匹配,例如:/foo/1 或者 /foo/bar。

使用 curl 测试,命令行输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl http://localhost:8080/foo/1
curl http://localhost:8080/foo/xx
curl http://localhost:8080/boo/xx

经过测试第一和第二条命令可以正常获取到页面返回值,最后一个命令报404,证明路由是通过指定路由来匹配。

通过请求参数匹配

Query Route Predicate 支持传入两个参数,一个是属性名一个为属性值,属性值可以是正则表达式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
      - id: query_route
        uri: http://ityouknow.com
        predicates:
        - Query=smile

这样配置,只要请求中包含 smile 属性的参数即可匹配路由。

使用 curl 测试,命令行输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl localhost:8080?smile=x&id=2

经过测试发现只要请求汇总带有 smile 参数即会匹配路由,不带 smile 参数则不会匹配。

还可以将 Query 的值以键值对的方式进行配置,这样在请求过来时会对属性值和正则进行匹配,匹配上才会走路由。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
      - id: query_route
        uri: http://ityouknow.com
        predicates:
        - Query=keep, pu.

这样只要当请求中包含 keep 属性并且参数值是以 pu 开头的长度为三位的字符串才会进行匹配和路由。

使用 curl 测试,命令行输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl localhost:8080?keep=pub

测试可以返回页面代码,将 keep 的属性值改为 pubx 再次访问就会报 404,证明路由需要匹配正则表达式才会进行路由。

通过请求 ip 地址进行匹配

Predicate 也支持通过设置某个 ip 区间号段的请求才会路由,RemoteAddr Route Predicate 接受 cidr 符号(IPv4 或 IPv6 )字符串的列表(最小大小为1),例如 192.168.0.1/16 (其中 192.168.0.1 是 IP 地址,16 是子网掩码)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
      - id: remoteaddr_route
        uri: http://ityouknow.com
        predicates:
        - RemoteAddr=192.168.1.1/24

可以将此地址设置为本机的 ip 地址进行测试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl localhost:8080

果请求的远程地址是 192.168.1.10,则此路由将匹配。

组合使用

上面为了演示各个 Predicate 的使用,我们是单个单个进行配置测试,其实可以将各种 Predicate 组合起来一起使用。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    gateway:
      routes:
       - id: host_foo_path_headers_to_httpbin
        uri: http://ityouknow.com
        predicates:
        - Host=**.foo.org
        - Path=/headers
        - Method=GET
        - Header=X-Request-Id, \d+
        - Query=foo, ba.
        - Query=baz
        - Cookie=chocolate, ch.p
        - After=2018-01-20T06:06:06+08:00[Asia/Shanghai]

各种 Predicates 同时存在于同一个路由时,请求必须同时满足所有的条件才被这个路由匹配。

一个请求满足多个路由的谓词条件时,请求只会被首个成功匹配的路由转发

总结

通过今天的学习发现 Spring Cloud Gateway 使用非常的灵活,可以根据不同的情况来进行路由分发,在实际项目中可以自由组合使用。同时 Spring Cloud Gateway 还有更多很酷的功能,比如 Filter 、熔断和限流等,下次我们继续学习 Spring Cloud Gateway 的高级功能。

所有代码都在这里:https://github.com/ityouknow/spring-cloud-examples

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GitChat精品课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
掌握未来通信技术:5G核心网基础入门
核心网是移动通信网络的大脑,负责对整个网络进行管理和控制。核心网是很多网元设备的统称,并非特指一种网元设备
用户11029103
2024/04/25
4.6K0
掌握未来通信技术:5G核心网基础入门
通信|我是谁?网络ID之永久身份证——IMSI,SUPI(SUCI)
为了维持社会的稳定和辨识各终端用户,网络社会是怎么做到用户区分的呢?毕竟网络是我们人类创建的,所以它也就具备了我们所拥有的特性,网络社会中赋予了各个终端用户永久身份证号——IMSI、SUPI(SUCI)和一堆临时ID(外号)——GUTI、P-TMSI、5G-GUTI等。
琉璃康康
2024/04/02
2.4K0
通信|我是谁?网络ID之永久身份证——IMSI,SUPI(SUCI)
不偷手机,照样隔空盗取验证码!
这段时间,相信大家看了不少关于“手机设置SIM卡密码”的安全提示新闻,但设置了SIM卡密码,其实也只是防止手机丢失情况下对方使用你的手机卡来接收短信验证码。对于短信验证码的安全窃取,犯罪分子还有一种更高超的犯罪手法,只需要在你们小区附近,就可以远程盗取验证码。真是防火防盗防“老王”,防不胜防。
FB客服
2020/11/06
5.3K0
不偷手机,照样隔空盗取验证码!
5G之争
西方针对华为不是一天两天。新西兰、澳大利亚均封杀华为设备、拒绝让华为参加该国建立5G移动网络投标;华为在英国的国际业务也面临所谓“技术担忧”,英国电信近日亦禁止华为参与竞标公司核心5G网络设备的供应合同。
小小詹同学
2018/12/25
6620
5G之争
通信行业术语扫盲
在通信行业也干了一年多了,最近发现自己对通信行业的知识甚是缺乏,很多名词在记住之后很快又会忘掉,所以做一些笔记来记录这些术语。
流川疯
2022/05/10
1.7K0
5G时代,与IMSI安全的梗概「建议收藏」
我们以前担心的手机泄漏个人位置隐私的问题,也就是在2G/3G/4G一直存在的IMSI Catcher问题,终于有望在5G标准里得到彻底解决啦! 这个问题在每次制定新一代网络标准的时候,都要争论一回。这是网络功能性、成本与安全性之间的斗争。在5G的第一版标准,Release15,关于安全的标准[1]中,IMSI加密是最大的亮点。 在2/3/4G网络中,攻击者能通过十分廉价的设备获取你的位置。这是由于手机每次需要联网的时候都要大声喊着,“我是谁谁谁”,攻击者就可以通过手机报告的信息确定手机的大概位置了。专业一点的说,手机所广播的那条“我是谁谁谁”就是手机的IMSI码,全球唯一,就如同你的身份证号。设想,如果满大街都在喊着每个人的身份证号,那么追踪某一个人就变得容易了。 当然实际上,IMSI这么关键的信息不会在你发送的每条信息中都带着。手机还会有一个临时身份证(GUTI/TMSI),平时传递数据都是使用这个临时身份证,手机只有在特殊的场景下会发送自己的IMSI。手机会在哪些场合会发送自己的IMSI呢? 0x01 什么情况下手机会发送IMSI? 情景一:手机接入正常的网络时 手机开机后,先从USIM中读取之前运营商分配的临时身份信息GUTI/TMSI,发送携带该身份信息的信令给基站,请求接入运营商网络。基站收到该消息后便转发给核心网的MME,若MME中可以查询到对应的GUTI/TMSI对应的真实身份,则允许手机接入。若MME查询不到,则需要重新对手机发起真实身份核验的请求“Identity Request”,即要求手机提供真实身份IMSI。 通常触发手机真实身份验证的合理情况有:手机首次入网或手机移动到其它MME覆盖范围后,MME中无法从网络中查询到手机的GUTI/TMSI,故而需要手机上报自己的真实身份。 在这种情景下,攻击者只需采取被动监听就可以捕捉到手机的IMSI。 情景二:手机接入到伪基站网络时 伪基站通过高信号强度压制真实基站把手机吸进来(手机会自动选择信号强度最强的基站),之后强行给连接过来的手机发送身份验证请求消息——“Identity Request”,手机就会乖乖的把自己真实身份报上来。 在该情境下,攻击者采取的是主动攻击,需要打开伪基站,不停的发送“Identity Request”就可以获取周围手机的真实身份。 这种获取IMSI的工具,就称为IMSI Catcher,其中比较出名的一款工具叫Stingray(黄貂鱼),目前被一些执法部门使用。Stingray是一款同时具有被动监听(监听+数据分析)和主动攻击(伪造基站)的IMSI Catcher。通过获取IMSI,TMSI,IMEI可以更好地获取移动终端的数据信息。并且设备非常便携,可以装在飞机、汽车、无人机等交通工具适用以上两种情景,并且该设备还可以测绘基站的分布情况,自行进行数据分析,追踪目标手机位置,监听通信内容,进行DDoS攻击等。
全栈程序员站长
2022/11/16
2K0
5G时代,与IMSI安全的梗概「建议收藏」
如何通过中间人攻击嗅探SIM卡的流量通信
这篇文章我将介绍如何制作中间人(MitM)设置来嗅探SIM卡和后端服务器之间的流量。虽然这不是一项新的研究,但我希望这将帮助一些没有电信基础的人学习移动数据嗅探和虚假基站的知识。但是我只会介绍使用2G和GPRS的SIM卡的方案。希望将来可以带来更多关于3G,4G的文章吧!
FB客服
2018/12/07
3.3K0
如何通过中间人攻击嗅探SIM卡的流量通信
关于SIM和eSIM,看这一篇就够啦!
但是,大家都知道,手机再牛逼,如果没有SIM卡,也是个废柴——既不能打电话,也不能发短信,更不能移动上网。
鲜枣课堂
2019/07/20
7.5K0
深度揭秘:伪基站到底是怎么回事?
它利用通信网络的一些技术漏洞,劫持正常用户的手机通讯,骗取用户信息,强行发送广告、诈骗等信息,以此达到非法目的。
鲜枣课堂
2019/07/22
2.2K0
深度揭秘:伪基站到底是怎么回事?
2G、3G退网倒计时,你的老年机可能要扔了
近日,在RAN#88e全体会议上,3GPP宣布,负责GERAN和UTRAN无线与协议工作的 RAN6工作组正式关闭,该工作组此前一直负责研究2G和3G无线功能,定义涉及 GSM/EDGE 无线接入网络(GERAN)和 UMTS 无线接入网络(UTRAN)的规范及接口等,这也意味着2G和3G技术不再开发,这标志着移动通信行业的一个重要时代结束。
SDNLAB
2020/07/28
6370
走近科学:揭开伪基站的神秘面纱
本文原创作者:敏争 “伪基站”目前已经成为广告、诈骗等垃圾短信的重要实施手段。在经过一轮打击销声匿迹一段时间之后,现在又有抬头之势,有的犯罪集团通过生产、销售“伪基站”设备,年获利可达到几百万。 一、
FB客服
2018/02/06
2K0
走近科学:揭开伪基站的神秘面纱
新兴的5G技术将基于SIM卡的IoT设备置于更大的威胁之中
相较于前几代网络通信技术,5G技术的独特优势无疑将在智能手机和其他广泛使用的互联网移动设备上表现得更为明显。此外,它还极有可能让应用广泛的物联网设备受益,因为它可以很好地提供物联网所需的基础设施,以承载和传输大量数据。
FB客服
2018/07/30
7650
新兴的5G技术将基于SIM卡的IoT设备置于更大的威胁之中
你从4G的这里开始
今天是教师节,愿所有老师教师节快乐。 刚刚浏览了很多学生时代(居然用了这个词🤔)的照片,按理应该是要矫情一波的,然而常理出牌总不会带来意外,那么还是不要矫情了,于此也祝愿自己所有的老师同学朋友在各自的工作岗位上步步高升,生活一切安好。 终于还是决定开始写一些这几年所从事的工作——通信,也算是对这几年的总结和分享,知识只有分享出来才是有意义的存在吧。 毕业就进入到了这个行业,虽然一开始并不知道什么,但是一路走来也慢慢的喜欢上了这种完成各个节点的对接,对各种信令的学习、理解和验证。 这几年走南闯北,第一次领
琉璃康康
2022/04/19
9710
你从4G的这里开始
1G到5G的分野之战,通信洗牌即将开始
有人的地方就有江湖,通信江湖上,充斥着“尔虞我诈”,从模拟信号到数字信号,从1G、2G、3G、4G到如今甚嚣尘上的5G,站对了队是平步青云,站错了队就是“万劫不复”。
镁客网
2019/03/18
7470
1G到5G的分野之战,通信洗牌即将开始
从纯技术角度解析:5G“军备竞赛”中美实力对比
近日,德国表示5G网络建设不会对华为进行区别对待,理由是如果欧洲禁止华为设备,那么欧洲的5G将会落后于中国和美国。自美国颁布禁令以来,各国纷纷站队,中美5G大战瞬间“狼烟四起”,更有甚者将其称之为划时代的“军备竞赛”,只不过核心从传统武器换到了对5G网络的主宰,不论是“战争”还是“竞赛”,这场关于5G的较量已经开启,谁会最终拔得头筹,下面从各个角度来分析。
SDNLAB
2019/05/07
1.3K0
从纯技术角度解析:5G“军备竞赛”中美实力对比
4G改变生活,5G改变社会
最近,关于联想在3GPP组织的投票情况受到社会广泛关注。应该说,作为一个中国企业,在国际标准化组织的投票,相信联想会按照中国阵营利益所在投票。此次联想事件引发如此热议,也从侧面反映出社会对5G标准的关心。 通信标准关系到国家战略 全球性的通信标准不仅是一项技术标准,而是关系到产业发展和国家战略。基于PC和互联网的标准,从架构到核心协议此前均由美国来定义,进而导致美国在整个互联网产业占据绝对优势地位,英特尔、IBM、微软、Google等企业成为全球PC和互联网的主导,在影响世界互联网产业发展的同时,也给美国带
程序你好
2018/07/20
6050
安全研究 | 手把手教你抓取4G通信流量
本篇内容仅供学习交流,不得作为非法用途,本文章谨以协助读者对某些技术专题进行研究。 概述 随着IoT时代的到来,万物互联的场景离我们也唾手可及,随之而来的新技术、新场景也会来带新的挑战。目前国内对4G/5G网络的研究文章较少,并且该领域的研究也有一定的入门门槛。本文介绍了一种实现一个私人LTE网络环境的方法,并以此分析4G网络架构和通信流量。 环境准备 工具介绍 USIM测试卡:可烧录自定义IMSI、Ki、OPC、OP等数据的空白USIM卡。淘宝有售 PCSC读卡器:用来读写USIM卡,GemaltoUS
FB客服
2023/03/30
3.3K0
安全研究 | 手把手教你抓取4G通信流量
科普| 物联网卡最全介绍(四)
API Application Programming Interface,应用程序编程接口 一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一 组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 APN Access Point Name,接入点名称 APN 指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过 哪种接入方式来访问网络。 对于手机用户来说,可以访问的外部网络类型有很多,例如:Internet、WAP 网站、集 团企业内部网络、行业内部专用网络。而不同的接入点所能访问的范围以及接入的方 式是不同的,网络侧如何知道手机激活以后要访问哪个网络从而分配哪个网段的 IP 呢,这就要靠 APN 来区分了,即 APN 决定了用户的手机通过哪种接入方式来访问什么 样的网络。 eSIM Embedded Subscriber Identificaiton Module,嵌入式用户身份识别卡 eSIM 卡的概念就是将传统 SIM 卡直接嵌入到设备芯片上,而不是作为独立的可移除零 部件加入设备中。这一做法将允许用户更加灵活的选择运营商套餐,或者在无需解锁 设备、购买新设备的前提下随时更换运营商。 Embedded Universal Integrated Circuit Card Identity,嵌入式通用集成电路卡识 别码,即 eSIM 卡卡号。 GPRS General Packet Radio Service,通用无线分组业务 由 3GPP 定义,用于连接移动手机用户和公共数据网。在 GSM 网络里,GPRS 共享网络数 据库和无线接入网,并利用 PCU(Packet Control Unit)、SGSN(Serving GPRS Support Node)和 GGSN (Gateway GPRS Support Node) 提供跨移动和固定网的分组交换数据业务。 ICCID Integrate circuit card identity,集成电路卡识别码 即 SIM 卡卡号,相当于手机号码的身份证。 ICCID 为 IC 卡的唯一识别号码,共有 20 位数字组成,其编码格式为:XXXXXX 0MFSS YYGXX XXXX。 IMEI International Mobile Equipment Identity,国际移动设备身份码 国际移动装备辨识码,是由 15 位数字组成的"电子串号",它与每台移动电话机一一对 应,而且该码是全世界唯一的。每一只移动电话机在组装完成后都将被赋予一个全球 唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。 IMSI International Mobile Subscriber Identification Number,国际移动用户识别码 是区别移动用户的标志,储存在 SIM 卡中,可用于区别移动用户的有效信息。其总长 度不超过 15 位,同样使用 0~9 的数字。 LPWA Low Power Wide Area Network,低功耗广域网络 LPWA 是一种能适配物联网业务,具有流量小、连接数量大等特性的新型无线接入技 术,可形成一张广覆盖、低速率、低功耗和低成本的无线接入网络。 MNO Mobile Network Operator,移动网络运营商 MME Mobility Management Entity,移动管理节点 是 3GPP 协议 LTE 接入网络的关键控制节点。 MSC Mobile Switching Center,移动交换中心 2G 通信系统的核心网元之一,是在电话和数据系统之间提供呼叫转换服务和呼叫控制 的地方。 MSISDN Mobile Station Integrated Services Digital Network,移动台综合业务数字网号 码 主叫客户为呼叫数字公用陆地蜂窝移动通信网中客户所需拨的号码;是在公共电话网 交换网络编号计划中,唯一能识别移动用户的号码。 NB-IOT Narrow Band Internet of Things,基于蜂窝的窄带物联网技术 是物联网领域的一个新兴技术,支持低功耗设备在广域网的蜂窝数据连接,具有覆盖 广、连接多、速率低、成本低、功耗低、架构优等特点。 OTA Over-the-Air Technology,空中下载技术 是通过移动通信(GSM 或 CDMA)的空中接口对 SIM 卡数据及应用进行远程管理的技 术。OTA 技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载。 SIM Subscriber Identification Module,用户身份识别卡 SGSN Serving GPRS Support Node,GPRS 业务支持节点 S
目的地-Destination
2023/10/12
6480
3/4G无线接入安全解决方案
伴随着通信网络的高速发展,无线接入从最开始的解决最后一公里的问题,到当今的无线应用已经无所不在。无线接入方式也已从2G、2.5G、3G步入了4G时代。带宽的要求也将不再是主要瓶颈,取而代之的将是安全、稳定、易维护、快速布署及可靠性的要求。
py3study
2020/01/09
2.1K0
洞见RSA2022 | 守护5G终端隐私
在2022RSA大会上,Trusted Connectivity Alliance(TCA)联盟发表了一个名为“Catch Me If You Can: Protecting Mobile Subscriber Privacy in 5G”的议题,该议题主要针对如何在5G中对IMSI进行加密进行探讨。TCA联盟是一个全球性的非营利性行业协会,旨在完善未来网络互联中的信任机制,并希望通过保护资产、用户隐私和网络三者之间的可信连接,推动互联社会的持续发展[1]。在该议题中,TCA对比了IMSI在SIM卡和终端中进行加密的差异点,通过对比TCA认为IMSI在SIM中进行加密拥有更好的效果。
绿盟科技研究通讯
2022/11/14
5240
洞见RSA2022 | 守护5G终端隐私
推荐阅读
相关推荐
掌握未来通信技术:5G核心网基础入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验