极客时间专栏——趣谈网络协议的阅读笔记

时间:Jan. 28, 2019 分类:

目录:

00

01

讲述了一个访问电商网站都用了什么协议

02

网络分层

在三层实质是换了MAC地址

03

ip

CRID

网卡标识

MAC用于子网,IP用于互连

04

DHCP 通过广播UDP包方式从DHCP服务器获取IP信息,然后返回IP信息依然是UDP广播,然后向DHCP服务器发送使用这个IP,由DHCP服务器返回租约信息,在租约的一半时间确定是或否续租;对于多个DHCP发来信息则会选择第一个,拒绝其他的DHCP服务

PEX BIOS将PXE的Client调入内存,像DHCP服务器获取启动文件,并执行,然后获取内核和pxelinux的配置文件,并读取配置,获取内核和inittramfs实现启动操作系统,然后将引导改变到磁盘就可以了

05

物理层

MAC层

06

交换机 对广播进行抑制,防止过量的广播产生

STP协议 将图结构转化为树结构

VLAN 用于虚拟隔离,通过VLAN ID实现,广播只在相同VLANID的网口进行,两个交换机之间是通过Trunk实现

07

icmp协议包括查询报文和差错报文,因为封装了IP地址,所以是三层协议

ping是通过查询报文

traceroute是通过返回差错报文来获取差错报文的内容,包括ttl,mtu等

08

静态路由

  • 转发网关 不会改变IP地址,只是改变mac地址,每次源mac和目的mac都会边
  • NAT网关 源地址也会发生变化,维护通过标识

09

策略路由 可以除了目的地址,还可以根据源地址,入口设备等区分路由表,甚至可以设置多个下一条和权重

动态路由

  • 距离矢量路由算法 获取附近路由器的路由信息,进而获得最短距离,问题是获取快,但是节点挂了还能从邻居获取到路由表,并且发送的信息较大,适用于小型网络
  • 链路状态路由算法 获取附近路由器的链路,进而获得最短距离,更新的时候只会更新变化的链路

  • 内部网关协议 OSPF 基于链路状态路由算法 如果有多个最短路径会进行负载均衡

  • 外部网关协议 BGP

BGP自治网络又分

  • 对外只有一个连接
  • 有多个连接但是拒绝帮助传输数据
  • 有多个连接且可以帮助传输数据

10

UDP

特点

  • 不建立连接
  • 有数据就会进行发送,不会做拥塞控制等

使用场景

  • 用于资源较少,网络较好的内网,或对丢包不敏感的应用
  • 需要广播,多播或者组播
  • 需要处理速度快,可以允许丢包

例子

  • QUIC 在应用层实现快速建立连接,减少重传时延
  • 流媒体 RTMP,基于TCP,所以需要UDP实现自己的视频协议
  • 实时游戏 TCP强顺序会造成卡顿,一般采用自定义UDP协议
  • IoT 小的嵌入式系统维护TCP连接代价大,Thread就是基于UDP
  • 4G网络的GTP-U也是基于UDP

11

TCP解决的是包的顺序问题,丢包问题,连接维护,流量控制,拥塞控制

连接维护通过三次握手四次挥手

12

  • 顺序问题通过ID区分
  • 丢包问题根据数据的ACK确认是否送到;有超时重试超时时间自适应算法,重传策略是讲超时时间设置为之前的2倍;在收到下一个包的ACK会触发快送重传,一次重传三个
  • 流量控制通过接收端响应的速度,调整发送端窗口实现
  • 拥塞控制通过慢启动开始指数增长,到达sshthresh,更有TCP BBR拥塞算法

13

TCP交互 service端通过bind获取端口,listen进行监听,accept返回另一个socket用于数据传输,client端通过connect进行连接

UDP交互 直接调用sendto发送,recvfrom获取

  • task_struct
  • fds 文件描述符数组指针
  • file list内核打开文件列表
  • incore inode内存的inode地址
  • struct socket内核中的socket结构,里边有两个队列

  • 多进程

  • 多线程
  • IO多路复用,一个线程维护多个socket,通过select函数
  • IO多路复用,有事件通知,通过epoll函数,将相关的socker注册callback函数

14

HTTP报文

HTTP2.0

QUIC

15

HTTPS

信任的CA证书放在本地,对获取的Server端证书进行认证,然后进行对称加密通信

16

RTMP

17

HTTP和FTP都存在单一带宽的问题

P2P peer-to-peer,资源分散在并不集中的存储设备上,即peer,当你下载的时候就去这些peer上下载,但是当你下载了,你就成为了peer的一员,别人也就可以在你这里下载了

种子文件 .torrent文件,包括tarcker URL和文件信息

文件信息包括

  • info区 种子有几个文件,文件有多长,目录结构,目录和文件的名字
  • Name字段 顶层目录的名字
  • 每个段的大小 默认是4MB
  • 段哈希值

BT客户端解析tracker地址并连接,tracker返回其他下载者(或者发布者)的IP,BT客户端就可以与其他下载者交互获取数据,但是这会依赖tracker服务器的稳定

DHT协议 可以理解为分布式的tracker

18

DNS

19

传统DNS的问题

  1. DNS缓存 导致请求的IP地址不为对应服务或者请求绕远
  2. 域名转发问题
  3. 出口NAT问题
  4. 域名更新问题 TTL问题
  5. 解析延迟问题

HTTPDNS 不走DNS,而是通过HTTP协议获取DNS地址,需要在APP嵌入,将DNS缓存到本地,缓存时间和DNS更新都可以自行调度,当HTTPDNS不能正常使用进而再调用DNS

20

CDN

21

数据中心

接入层交换机 机架上的交换机,连接机架上的机器

汇聚层交换机 连接接入层交换机

网卡绑定 bond,依赖的LACP协议,需要服务器和交换机都支持

交换机堆叠 实现双活

核心层交换机 连接汇聚层交换机和边界路由器

22

数据中心联络分为公网,专线和VPN方式

VPN 通过隧道的方式在公网仿造点到点的专线,通过一种协议来传输另一种协议,涉及乘客协议,隧道协议和承载协议

IPsec 通过对称加密加密数据,对通过的数据机型hash值计算,保证数据是对端发出,但是走的是路由表,数据包为 外部IP头+IPsec头+内部IP头

MPLS-VPN 通过ATM的标签方式,但是需要运营商支持

ATM 和IP协议同级,是面向连接的,在传输前先建立连接,形成一个虚拟通路,建立连接后包并不会选路,而是按照连接路进行走

MPLS 路由通过标签进行转发,需要路由器支持标签转发,这种路由器内部会维护路由表和标签表

23

2G网络 通过基站接收无线信号转发到核心网,在这个过程中判断是否合法和是否为本地号码,使用的电话网络

2.5G网络 在2G的基础使用的IP网络

3G网络 增加了无线网络的带宽

4G网络 通过E-Node B基站,实现接收的速度提升,在第一次请求的时候通过MME核心控制单元从HSS进行验证,然后SGW从eNodeB获取数据转发到PGW,由PGW通过NAT的方式进行联网,PCRF用作计费和上网策略

异地上网 从外国运营商的eNodeB接入外国的MME从本国的HSS进行验证,然后外国的SGW从eNodeB获取数据转到到本国的PGW,所以还是使用的本国的网络

24

虚拟网卡

网桥

带VLAN的虚拟网卡

25

软件定义网络

Openvswitch 任何经过路由器的包都会根据流表规则处理,对物理层到传输层的数据包都可以设置规则,并且支持创建虚拟网桥,网卡,VLAN划分等功能,对于VLAN可以在一个网桥上划分VLAN

26

Netfilter可以在节点插入hook函数,对数据包做处理,最佳实现就是iptable

iptables的3表5链

安全组如果配置在网桥上,就是网桥上所有机器可以互通,对外限制

SNAT和DNAT 对于TCP通过源/目的IP和源/目的端口标识

27

云中网络QoS分为无类别排队规则和基于类别排队规则

Openvswitch通过分层令牌桶规则

28

GRE 需要硬件设备支持GRE,有局限性 数据包为 外部IP头+GRE头+内部IP头

VXLAN 外部MAC头+外部IP头+外部UDP头+VXLAN头+内层MAC头+内层IP头

29

namespace net实现路由网卡等

cgroup net_cls用于实现流量控制,可以通过tc进行设置

30

Flannel

UDP

VXLAN

31

Calico

32

RPC协议,对于我并不关心

33

SOAP 基于XML的通信协议,解决了RPC协议对业务逻辑需要频繁修改的情况,协议原定使用WSDL,传输使用HTTP,服务发现使用UDDL

34

RESTful是一种接口的设计风格

客户端维护状态,服务端维护资源

实现幂等

35

dubbo通过二进制,RCP协议为Hessian2

dubbo是这个rpc框架包括服务发现,服务均衡负载,接口层面监控。对于rpc中的扩展点比较多。后面会用servicemesh ,传输协议较多选择

Spring cloud是一个完整微服务框架,包括rpc框架,整体链路监控,熔断降级,网关,配置中心,安全验证。主要用http协议传输

36

gRPC 满足二进制和跨语言

Envoy

结束语

放弃完美主义,执行力就是限时限量认真完成