1.自治系统AS
autonomous system。在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。一个自治系统有时也被称为是一个路由选择域(routing domain)。一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)。-----------------SPTN 自治系统号10(传统域) 自治系统号20(SDN域)
一个自治系统就是处于一个管理机构控制之下的路由器和网络群组。它可以是一个路由器直接连接到一个LAN上,同时也连到Internet上;它可以是一个由企业骨干网互连的多个局域网。在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号。自治系统之间的链接使用外部路由协议,例如BGP.。
自治系统可根据其连接和运作方式分为三类。
一、残余自治系统(stub AS)---客户端自治
又称“末端自治系统”。是指仅与一个其它自治系统相连的自治系统。如果该自治系统的路由策略与其上游的自治系统完全相同,这说明该自治系统其实浪费了一个ASN。这种情况经常发生在互联网路由环境中:表面上的末端自治系统可能实际上与其它未被公共路由显示服务器反映出来的自治系统之间存在着对等互联关系。
残余自治系统只有一条线连到其他的自治系统,资料讯务可能在此起始或终止,资料不可能经过它。一个残余自治系统的示例就是客户网络,它不是数据源就是资料的集水槽。
二、多本家自治系统(multihomed AS)---服务端自治
又称“多出口的自治系统”。具体的例子如(美国)财政和交通部门的专用互联网络。是指与其它的自治系统具有多于一个连接的自治系统。一旦那些连接中的某一个完全失效,这个多出口的自治系统也仍然能保持和互联网络的联系。但是,这类自治系统不允许它所连接的其它自治系统中的一个穿过它来访问其相连的另一个自治系统。
多本家自治系统有二条以上的对外连线,但它不允许资料讯务流经过它。像这种自治系统的示例是,客户自治系统使用二个以上的提供者网络服务,但它的政策是不允许资料过境。
三、过境自治系统(transient AS)---运营商自治
又称“中转自治系统”。是指一个自治系统通过自己来为几个隔离开的网络提供连通服务。即网络A可通过作为中转自治系统的网络B来连接到网络C。所有的ISP都是这类的中转自治系统,因为这本是就是它们的根本业务目的。因为我们认为ISP是在向客户网络“贩售中转服务”,所以使用中转自治系统这个术语来表示。
过境自治系统连接二个以上的自治系统,且允许讯务经过它。提供者网络和骨干就是过境自治系统的实例。
2.BGP结构和功能
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。这个节点可以是一个主机。但通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router)[1] 。
由于可能与不同的AS相连,在一个AS内部可能存在多个运行BGP的边界路由器。同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP 被称为 IBGP(Internal/Interior BGP)。归属不同的AS的对等实体之间运行的BGP称为EBGP (External/Exterior BGP)。在AS边界上与其他AS交换信息的路由器被称作边界路由器(border/edge router)。在互联网操作系统(Cisco IOS)中,IBGP通告的路由的距离为200,优先级比EBGP和任何内部网关协议(IGP)通告的路由都低。其他的路由器实现中,优先级顺序也是EBGP高于IGP,而IGP又高于IBGP。
BGP属于外部网关路由协议,可以实现自治系统间无环路的域间路由。BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP可分为IBGP(Internal BGP)和EBGP(External BGP)。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议。
https://baike.baidu.com/item/%E8%BE%B9%E7%95%8C%E7%BD%91%E5%85%B3%E5%8D%8F%E8%AE%AE/2987527?fromtitle=bgp&fromid=91408&fr=aladdin#reference-[1]-875886-wrap
3.查看域名NS记录的方法
通过nslookup方式查看:
windows或者Linux系统上执行nslookup,回车后输入set type=ns,回车输入想要查询的域名。就可以返回域名对应的ns记录了。这里需要注意,使用不用运营商的子域名和主域名对应的ns记录可能存在区别。例如腾讯云上无法单独对子域名配置ns记录,而阿里云解析可以。所以如果使用了腾讯云DNSpod解析,主域名和子域名对应使用的ns是一样的,只能通过查询主域名得知;而使用阿里云且将子域名单独进行了配置(这里需要在主域名上做下txt验证),则可能子域名的ns记录查询结果和主域名存在差异,子域名可能多了额外的ns,言外之意就是子域名可以另找其他ns用于解析,而不仅仅用主域名的ns。
通过dig命令查看域名ns记录:
dig -t ns 域名
4.wireshake根据域名找到对应的TCP流---实用
ssl.handshake.extensions_server_name eq apkapptoptxdl.vivo.com.cn
5.nginx实现range请求
前提条件:nginx支持ngx_http_slice_module模块
配置文件实例:
#location 块的配置:
location /asd/ {
slice 512k;
proxy_cache cache;
proxy_cache_key $uri$is_args$args$slice_range;
proxy_set_header Range $slice_range;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_valid 200 206 304 301 302 10d;
}
#设置proxy_cache_path
proxy_cache_path /data/nginx_cache/ levels=1:2 keys_zone=cache:100m inactive=300s max_size=5g;
相关参数解释:
Proxy_cache cache 使用名为cache的对应缓存配置
proxy_cache_valid 200 206 304 301 302 10d; 对httpcode为200…的缓存10天
proxy_cache_key 定义缓存唯一key,通过唯一key来进行hash存取
proxy_set_header 自定义http header头,用于发送给后端真实服务器。
proxy_cache_path 缓存文件路径
levels 设置缓存文件目录层次;levels=1:2 表示两级目录
keys_zone 设置缓存名字和共享内存大小
inactive 在指定时间内没人访问则被删除
max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。
配置nginx支持range回源:
add_header Accept-Range bytes;
测试:
curl -I -L -r 0-100 URL #-I表示返回头部;-L表示跟踪调整;-r表示指定range范围
7.https优化之OCSP
OCSP实时查询会增加客户端的性能开销。因此,可以考虑通过OCSP stapling的方案来解决:OCSP stapling是一种允许在TLS握手中包含吊销信息的协议功能,启用OCSP stapling后,服务端可以代替客户端完成证书吊销状态的检测,并将全部信息在握手过程中返回给客户端。增加的握手信息大小在1KB以内,但省去了用户代理独立验证吊销状态的时间。
启用OCSP stapling的方式有很多种,比如在线校验。此方式需要支持服务器能够主动访问证书校验服务器才能生效,并且在每次重启nginx的时候会主动请求一次,如果网络不通会导致nginx启动缓慢。
# 启用OCSP stapling
ssl_stapling on;
# valid表示缓存5分钟,resolver_timeout表示网络超时时间
resolver 8.8.8.8 8.8.4.4 223.5.5.5 valid=300s;
resolver_timeout 5s;
# 启用OCSP响应验证,OCSP信息响应适用的证书
ssl_stapling_verify on;
ssl_trusted_certificate /usr/local/nginx/ssl_cert/cd.crt;
为了更可靠,你也可以人工负责更新文件内容,设定Nginx直接从文件获取OCSP响应而无需从服务商拉取。
# 启用OCSP stapling
ssl_stapling on;
ssl_stapling_file /usr/local/nginx/oscp/stapling_file.ocsp;
# 启用OCSP响应验证,OCSP信息响应适用的证书
ssl_stapling_verify on;
ssl_trusted_certificate /usr/local/nginx/ssl_cert/cd.crt;
nginx配置示例 *.conf文件
# OCSP Stapling
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
resolver 114.114.114.114 8.8.8.8 8.8.4.4 223.5.5.5 valid=300s;
resolver_timeout 5s;
ssl_trusted_certificate chain.pem;
#生成OCSP证书
获取中间链证书:
openssl s_client -connect hrers.com:443 -servername hrers.com -showcerts < /dev/null 2>&1
到的ssl内容中 Certificate Chain 这一节,编号为 0 的证书是站点证书;编号为 1 的证书是中间证书。获取到中间证书BEGIN开始到END结尾
这里获取中间证书的方法还可以到浏览器查看,找到浏览器URL前面的证书验证标识,进入后点击证书---详细信息---授权信息访问---下面可以看到对应的URL地址
获取根证书:
到站点目录下,找到配置的ssl证书,有两段-----BEGIN CERTIFICATE-----,上面的为域名证书,下面的为我们域名的根证书,复制对应根证书
配置OCSP证书:
按照子证书在上的顺序保存,把刚才查询到的中间证书 + 根证书,保存为site.pem格式的证书文件。
配置nginx的OCSP:
配置信息如上
验证OCSP配置:
方法一:openssl s_client -connect hrers.com:443 -servername hrers.com -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"
如果以上命令返回如下内容,说明已经启动了
OCSP response:
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
方法二:https://www.getssl.cn/ocsp
进入上面网页,输入域名检测
8.更多SSL配置选项
https://blog.csdn.net/vencent7/article/details/79190249
9.直播问题的排查,可以参考下排查思路
https://cloud.tencent.com/developer/article/1734074