简介
- 基本介绍 主要是协议层的一些基本概念相关的介绍。
- 惊群详解 当多个进程或线程在同时阻塞等待同一个事件时,事件发生会唤醒所有进程。
- 流量控制 用来控制网络的流量,尤其是在某些测试场景下比较有效。
- 网络加速 包括了基于网卡、SMP 等方式可以加快网络处理。
- 隧道技术 一种封装技术,利用一种网络协议来传输另一种网络协议。
- 超时重传 为了保证可靠性,在 TCP 的三次握手、数据传输、链接关闭阶段都有响应的重传机制。
- 防火墙配置 通过 Netfilter 和 iptables 可以实现数据包过滤、网络地址转换和数据报文处理等功能。
TCP/IP
- 协议简介 关于 TCP 协议的详细介绍,包括握手过程、滑动窗口、拥塞控制等等。
- TimeWait 这是 TCP 协议中比较特殊的状态,目的是为了防止干扰,但在高性能场景下会有异常。
- socketfs 内核中用户程序与网络协议栈之间的接口层。
- 连接队列 很多的处理状态会在内核中维护队列。
内核解析
- 网卡驱动 主要介绍网卡如何接收数据,然后又是如何交给上层处理。
- loopback 主要是网络状态查看,例如正在监听的端口信息。
- 相同网络端口 尤其是对于本地代码来说,目的地和源端分别采用相同的 IP 地址和端口会不会有问题。
其它
负载均衡
Nginx
异步框架的 Web 服务器,也可用作反向代理、负载均衡、HTTP 缓存等,采用 BSD 协议发布。
- 基本概念 包括基本的安装配置、常用模块以及相关的报错信息。
- 状态监控 主要是通过 ngxtop 进行监控,有部分插件同时提供了更详细的监控指标。
- 日志解析 可以配置灵活的日志信息,关键的访问日志,可以以此统计错误、请求 QPS 等信息。
- 源码解析 详细介绍相关的代码处理逻辑,同时包含了 Nginx 中的模块处理方式。
- 通用网关 CGI 定义了客户端和服务器程序之间传输数据的标准,可以参考 Flask 示例,以及 uWSGI 的 C 实现。
- HTTPS 配置 配置证书从而确保服务的安全性。
DNS
首先 www.google.com
并不是一个域名,这样的格式被称为主机名,也就是 Full Qualified Domain Name, FQDN;而 google.com
才是一个域名,在这个域内有很多主机,例如 www
、ftp
、email
等等。
DNS 就是一整套用来解析主机名的方案。
- 基本概念 详细介绍 DNS 的基本概念,包括了不同记录类型的介绍。
- 常用工具 详细介绍最常见的 dig nslookup 等命令行工具的使用,以及 BIND 服务器搭建。
- 配置文件 也就是
/etc/resolv.conf
配置文件的使用,包括了参数的详细配置。 - 协议详解 关于 DNS 协议的详细内容介绍。
- dnsmasq 一个小巧且方便配置 DNS 和 DHCP 的工具,通常用于本地服务。
- cares 提供了简单的异步 DSN 解析,很多开源工具使用。
其它
常用协议
简单介绍一些与网络相关的通讯协议。
- ICMP 工作在第三层,用来解析网络路由情况。
- SNMP 简单网络管理协议,用于网络设备之间交换管理信息。
- ARP 通过解析网络层地址来找寻数据链路层地址的网络传输协议。
- P2P 不同于传统的 C/S 服务模型,每个节点都可以作为客户端和服务端。
- Socks5 详细介绍代理协议。
- HTTP 基于 TCP 的基础协议,互联网的基础,还有基于此的 Proxy 代理服务器以及 HTTPS 协议。
- HTTP2 对应 HTTP 的升级版本,支持多路复用、优先级、流量控制、服务器推送、HPACK 压缩 等。
- WebSocket 简单通用的长连接二进制协议,可以基于 HTTP 转换,还可以参考 Golang 中的使用。
- Telnet 非常简单古老的远程终端协议,一些简单设备上还在使用,不过建议使用 SSH 类似协议。
- Protobuf 用于序列化和反序列化的工具库,采用二进制编码,还可以参考 序列化详解 。
- FTP 比较古老的协议,通常用于网络传输文件等,这里介绍协议以及软件的使用。
常用命令
- curl 除了常见的发送 HTTP 相关请求,还可以统计耗时等,其它常用命令还有 wget、netcat 。
- tcpdump 在 Linux 中最常用的抓包工具。
- wireshark 用来更方便的分析网络包,还可以查看如何分析 TLS/SSL 相关报文。
- openssl 除了是一个常用的依赖库之外,还是常用的命令行工具。
- nmap 网络扫描和主机检测的非常有用的工具,可以用来收集信息、漏洞探测或安全扫描。
杂项
- Vegeta 一个压测工具。