- content {:toc}
环境
- Linux/操作系统
- Wireshark件
- Socket 网络编程开发环境
ARP协议
- 逻辑同网段才能发送ARP
- ARP请求广播, ARP应答单播
免费 ARP
ARP(地址解析协议)是一种用于将 IP 地址映射到 MAC 地址的协议。它在局域网中起作用,允许网络设备通过发送 ARP 请求来查找目标设备的 MAC 地址。
“免费 ARP”(Free ARP)是指发送 ARP 请求时不指定目标 IP 地址,而是将目标 IP 地址设置为 0.0.0.0。这种类型的 ARP 请求旨在查询网络中是否存在冲突的 IP 地址。当一个设备收到了一个免费 ARP 请求时,如果发现自己的 IP 地址与请求中的源 IP 地址冲突,它将发送一个 ARP 响应来解决冲突。
免费 ARP 的主要用途是检测和解决 IP 地址冲突问题,因为每个设备都应该具有唯一的 IP 地址。通过发送免费 ARP 请求,设备可以确定是否有其他设备使用了相同的 IP 地址,以便及时处理冲突。
NAT
- 将
ip
和端口都转换 - 提高了 端口的利用率, 毕竟那么多端口, 用不完
NAT(Network Address Translation)是网络地址转换的缩写,是一种在计算机网络中用于将私有网络内部的 IP 地址转换为公网可路由的 IP 地址的技术。
在一个局域网中,通常会使用私有 IP 地址来分配给内部设备,例如以 “192.168.x.x”、“10.x.x.x” 或 “172.16.x.x” 到 “172.31.x.x” 开头的地址。这些私有 IP 地址在公共互联网上是不可路由的,因此无法直接与外部网络进行通信。
NAT 技术允许将多个内部设备的私有 IP 地址映射到一个或多个公共 IP 地址上,以实现与外部网络的通信。NAT 通常由一个网络设备(例如路由器或防火墙)提供支持,它拥有至少两个网络接口,一个连接到内部局域网,一个连接到外部公网。
当内部设备发送数据包到外部网络时,NAT 设备会将源 IP 地址从私有 IP 地址替换为公共 IP 地址,并将该转换信息记录在转换表中。当外部网络返回响应数据包时,NAT 设备会根据转换表将目标 IP 地址从公共 IP 地址转换回原始的私有 IP 地址,并将数据包传递给正确的内部设备。
NAT 技术有以下几个主要作用:
- 节省公共 IP 地址:由于私有 IP 地址在内部网络中可以重复使用,NAT 可以大大减少对公共 IP 地址的需求。
- 提供网络安全:由于内部设备的私有 IP 地址不直接暴露在公网上,NAT 在一定程度上提供了网络安全保护。
- 简化网络配置:通过使用 NAT,整个局域网可以共享一个公共 IP 地址,无需为每个内部设备分配公共 IP 地址。
需要注意的是,使用 NAT 技术的网络中的内部设备一般无法直接从外部网络访问,除非适当配置端口转发或设置 DMZ(Demilitarized Zone)。
TCP
HTTP1.1哪些优化?
- 长连接
- 部分传输
- HOST
- 缓存
https的加密过程
HTTPS(Hypertext Transfer Protocol Secure)是在 HTTP 基础上加入了安全套接层(SSL/TLS)的协议,用于在客户端和服务器之间进行安全的数据传输。以下是 HTTPS 的加密过程:
- 客户端发起连接请求:客户端向服务器发起连接请求,并请求建立加密连接。
- 服务器的证书:服务器将自己的数字证书发送给客户端,证书中包含了服务器的公钥和相关信息。
- 客户端验证证书:客户端收到服务器的证书后,会对证书进行验证。验证包括检查证书的合法性、颁发机构的可信度以及证书是否过期等。如果证书验证失败,客户端会发出警告或终止连接。
- 客户端生成密钥:如果服务器的证书验证通过,客户端会生成一个随机的对称密钥(session key),用于后续的数据加密和解密。
- 密钥交换:客户端使用服务器的公钥对生成的对称密钥进行加密,然后将加密后的密钥发送给服务器。
- 服务器解密密钥:服务器收到客户端发送的加密后的对称密钥后,利用自己的私钥进行解密,得到对称密钥。
- 数据加密:接下来的通信过程中,客户端和服务器使用对称密钥进行数据加密和解密。客户端和服务器的数据通过对称密钥进行加密后传输,保证了数据的机密性。
- 数据传输:在建立加密连接后,客户端和服务器可以安全地传输数据。数据在传输过程中使用对称密钥进行加密和解密,确保了数据的机密性和完整性。
通过以上步骤,HTTPS 实现了对通信过程中的数据进行加密保护,防止敏感信息被窃听或篡改。加密过程中,服务器的数字证书起到了验证服务器身份和传递公钥的作用,而对称密钥的使用则提供了高效的加密和解密机制。
网络提速
- 网络提速-同运营商访问
- 网络提速-动态API(播放/评论接口)路径优化(DSA)
故障排查
先止损再排查
比如推荐算法坏了-> 先不用推荐, 先随机刷刷刷
客户端排查
- 客户端访问其他服务没问题吗?
- 其他客户端访问目标服务没问题吗?
服务端排查
- 服务端监控/指标都正常吗?
- 手动访问一下正常吗?
- 分组件排查
中间链路排查
- 服务端跟客户端确保都没问题
- 中间网络设备有没有问题?(交换机/路由器/网关LB)
- 旁路的DNS有没有问题?
网络故障排查
- dig查询DNS问题
- ping/telnet/nmap查询三层/四层连通性
- Traceroute排查中间链路
- iptables
- tcpdump
课后作业1
UDP socket 实现ack, 感知丢包重传提示: 1.学会UDP socket编程2.先从简单的ack学习,客户端等待ack再发包 3.什么时候客户端认为是丢包? 4.重传怎么考虑效率? 5.能不能不阻塞只穿丢掉的中间的段?
课后作业2
三台同网段内的服务器,模拟实现一个路由器
方法一:Linux操作系统配置法提示: 1.了解Linux的路由配置方式2.确保是同网段直连可达的环境.在三台机器上另外配置IP网段和路由. 3.一台机器做客户端,一台机器做路由器,一台机器做服务端. 4.客户端配置到达服务器的下一跳指向路由器,路由器上配置到达服务端的路由
方法二:用户态socket
编程实现简易route
软件提示:
1.收到指定的包后,做转发2.注意是修改报文的MAC.不是修改IP.
3.实现一个对称路由.这样可以实现TCP交互
4.可以通过ping来验证5.可以支持traceroute吗?
第六次课程
域名系统的问题
- 内网域名的解析也得出公网去获取,效率低下
- 外部用户看到内网 ip地址,容易被 hacker攻击
- 云厂商权威DNS容易出故障,影响用户体验
解决方案, 自建 DNS
常见的开源DNS:bind、nsd、knot、 coredns
DNS 解析的一般步骤:
- 发起解析请求:当用户在浏览器中输入一个域名时,系统首先会检查本地的 DNS 缓存,如果存在对应的解析结果则直接返回。如果本地缓存没有相关记录,系统会发起 DNS 解析请求。
- 查询本地 DNS 服务器:如果本地缓存没有域名解析记录,系统会向本地 DNS 服务器(通常由 ISP 或企业提供)发送解析请求。
- 递归查询过程:如果本地 DNS 服务器不知道域名的解析结果,它会向根 DNS 服务器发起递归查询请求。
- 根 DNS 服务器响应:根 DNS 服务器是整个 DNS 系统的顶级服务器,它并不直接返回域名解析结果,而是告诉本地 DNS 服务器应该向哪个顶级域名服务器(TLD DNS 服务器)发送查询请求。
- TLD DNS 服务器响应:本地 DNS 服务器收到根 DNS 服务器返回的 TLD DNS 服务器地址后,向 TLD DNS 服务器发送解析请求。
- 权威 DNS 服务器响应:TLD DNS 服务器会告诉本地 DNS 服务器要查询的域名的权威 DNS 服务器的地址。
- 权威 DNS 服务器响应:本地 DNS 服务器向权威 DNS 服务器发起解析请求。
- 解析结果返回:权威 DNS 服务器将域名的解析结果发送给本地 DNS 服务器。
- 缓存解析结果:本地 DNS 服务器将解析结果保存在缓存中,并将结果返回给用户的设备。同时,将解析结果缓存在本地,以便下次查询时可以直接返回,提高解析速度。
- 用户设备使用 IP 地址访问:用户设备收到 IP 地址后,会使用该地址发起与目标服务器之间的通信,实现对域名的访问。
通过以上步骤,DNS 解析过程中的各级 DNS 服务器协同工作,将域名转换为 IP 地址,使用户能够通过域名访问互联网上的各种资源。
- 动态加速DCDN
- 针对POST等非静态请求等不能在用户边缘缓存的业务, 基于智能选路技术, 从众多回源线路中择优选择一条线路进行传输.
请区分下列场景使用的加速类型
- 1、用户首次登录抖音,注册用户名手机号等用户信息
- 动态加速DCDN
- 2、抖音用户点开某个特定的短视频加载后观看
- 静态加速CDN
- 3、用户打开头条官网进行网页浏览
- 静态加速CDN+动态加速DCDN
4层负载均衡特点
- 大部分都是通过dpdk技术实现,技术成熟,大厂都在用
- 纯用户态协议栈,kernel bypass,消除协议栈瓶颈
- 无缓存,零拷贝,大页内存(减少 cache miss)
- 仅针对4层数据包转发,小包转发可达到限速,可承受高cps
什么是 nginx
Nginx(发音为 “engine-x”)是一款高性能的开源 Web 服务器软件,也可以用作反向代理服务器、负载均衡器和 HTTP 缓存。它由俄罗斯的程序员 Igor Sysoev 开发,并于 2004 年首次发布。
Nginx 的主要特点包括:
- 高性能:Nginx 采用了异步非阻塞的事件驱动架构,能够高效地处理大量并发连接和高流量的请求。
- 轻量级:Nginx 的内存占用较低,适合于资源受限的环境,并且能够有效利用系统资源。
- 反向代理:Nginx 可以用作反向代理服务器,接收客户端的请求并将其转发到后端服务器,隐藏后端服务器的真实 IP 地址,提供更好的安全性和负载均衡能力。
- 负载均衡:Nginx 可以基于不同的算法(如轮询、IP 哈希、最少连接等)将请求分发到多个后端服务器,实现负载均衡,提高系统的可扩展性和稳定性。
- 静态文件服务:Nginx 能够快速地处理静态文件的请求,通过内置的缓存机制提供高效的静态内容传输。
- HTTP 缓存:Nginx 支持反向代理缓存和本地 HTTP 缓存,可以减少后端服务器的负载并加快内容传输速度。
- HTTPS 支持:Nginx 能够配置 SSL 证书,提供安全的 HTTPS 连接。
- 可扩展性:Nginx 具有模块化的架构,可以通过加载不同的模块来扩展其功能。
由于其出色的性能和可靠性,Nginx 被广泛应用于许多大规模的网站、应用程序和服务中,包括一些知名的公司和网站,如 Netflix、GitHub、微博等。
优点
- 模块化设计,较好的扩展性和可靠性
- 基于master/worker架构设计
- 支持热部署;可在线升级不停机更新配置文件、更换日志文件、更新服务器二进制
- 较低的内存消耗:1万个keep-alive连接模式下的非活动连接仅消耗2.5M内存