打开抖音互联网会发生什么 | 青训营

141 阅读4分钟
打开抖音互联网会发生什么 | 青训营

域名解析(DNS)

DNS(Domain Name System)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。

DNS域名解析过程

超文本传输协议

HTTP(HyperText Transfer Protocol)是一种无状态协议,HTTP协议本身不对请求响应之间的通信状态进行保存。

HTTP/0.9

  • 该版本极其简单,只支持GET请求
  • 无Header、无状态码等描述数据的信息
  • 服务器响应之后立即关闭连接

HTTP/1.0:

  • 支持的请求方法:GET、POST、HEAD。
  • 每个请求/响应需要单独的TCP连接,导致高延迟。
  • 不支持持久连接,每个请求/响应后需要关闭连接。
  • 请求和响应头部信息较少,较为简单。
  • 不支持流式传输,需要等待整个响应内容下载完毕才能处理。
  • 增加状态码、多字符集支持、多部分发送、权限、缓存、内容编码等

HTTP/1.1:

  • 引入持久连接(keep-alive),允许多个请求和响应可以在同一个TCP连接上复用,减少了连接的开销和延迟。
  • 引入管道化(pipelining),允许客户端在一个连接上发送多个请求而不必等待响应。
  • 引入更多的请求方法(OPTIONS、PUT、DELETE、TRACE等)和状态码。
  • 支持分块传输编码(chunked transfer encoding),用于流式传输和动态内容。
  • 引入更多的头部信息,支持缓存控制、虚拟主机等功能。

HTTP/2.0:

  • 引入多路复用(multiplexing),允许多个请求和响应可以在同一个连接上并行处理,提高性能。
  • 头部采用二进制格式编码,减少了传输的大小。
  • 引入头部压缩,减少了重复头部信息的传输。
  • 支持服务器推送(server push),允许服务器在一个响应中发送多个资源。
  • 改进了流量控制和优先级管理。

HTTP/3.0:

  • 基于QUIC协议,解决了TCP的一些问题,如连接建立时延迟、丢包恢复等。
  • 采用UDP传输,具有更好的性能和连接建立速度。
  • 引入0-RTT连接恢复,加速连接建立。
  • 采用TLS 1.3进行加密,提供更好的安全性。
  • 保留了HTTP/2.0的大部分特性,如多路复用和头部压缩。

网络接入:

  • 互联网

    image-20230813102529565

  • 路由

    • 同网段:配置网段即可默认添加静态路由。获取对应Mac直接发包
    • 跨网段:配置网关路由。获取网关Mac地址发包
  • 路由一定是对称的吗?

    • 路由是网状的,不一定是对称的
  • 路由工作在哪一层协议?

    • 路由一般工作在网络层,像OSPF协议工作在传输层
  • 路由是改的IP地址吗?

    • 路由是改的Mac,找到发包口
  • ARP协议(本质是查找下一跳的Mac,不是请求目标地址)

    • ARP是用来将IP地址解析为MAC地址的协议。主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的映射关系,一般ARP表项包括动态ARP表项和静态ARP表项。

    • 逻辑同网段才能发送ARP

    • ARP请求广播,ARP应答单播

    • 免费ARP

      • 设备主动使用自己的IP地址作为目的IP地址发送ARP请求,此种方式称免费ARP。
    • APR代理

      • 若ARP请求是从一个网络的主机发往同一网段但不在同一物理网络上的另一台主机,那么连接这两个网络的设备就可以回答该ARP请求,这个过程称作ARP代理(Proxy ARP)。

网络传输

  • IPv4:互联网终端节点的唯一标识

  • IPv4不够用:IPv6或NAT

  • 数据包发送

    image-20230813110752416

  • 请求DNS

image-20230813111107238

  • DNS的传输协议UDP

    • UDP协议简单,不可靠连接
    • 想发什么包,就分配一个UDP的头,把payload里面塞数据发出去就好
  • TCP三次握手

TCP 三次握手

sequence number: 表示的是我方( 发送方) 这边, 这个packet的数据部分的第一位应该在整个data stream中所在的位置。

acknowledge number: 表示的是期望的对方( 接收方) 的下一次sequence number是多少。 注意, SYN/FIN的传输虽然没有data, 但是会让下一次传输的packet seq增加一, 但是, ACK的传输, 不会让下一次的传输packet加一。

网络稳定

  • 网络容灾

    • 故障发生、故障感知、自动切换、服务恢复
  • 故障排查

    • 故障明确、故障止损、分段排查

    • 常用命令

      • dig查询DNS问题
      • ping/telnet/nmap查询三层/四层连通性
      • Traceroute排查中间链路
      • iptables
      • tcpdump