HTTP代理服务器的工作原理:
正向代理:要求客户端自己设置代理服务器的地址
反向代理:反向代理则被设置在服务器端,因而无需客户端进行任何设置。反向代理是指用代理服务器接收 internet上的连接请求,
然后将请求转发给内部网络上的服务器。
透明代理:只能设置在网关上
DNS查询过程:
1.squid 通过 /etc/resolv.conf 获取 dns 服务器 ip
2.将控制器交给内核的 udp 模块,udp 模块将 dns 查询报文封装成 udp 数据包,同时将源端口和目标端口写入 udp 数据包头部, 然后 udp 调用 ip 模块
3.ip 模块将 udp 数据包封装成 ip 数据报,同时把源端 ip(192.168.1.108) 和 dns 服务器的 ip 地址加入 ip 数据报头部。
4.ip 模块查询路由表决定如何发送该 ip 数据报
5.如果 ARP 中没有相应地址,还要发起 ARP 广播
注意:
源ip, 目标ip( dns 服务器的 ip) 是不变的. 但 源 mac 地址和 目标 mac 地址一直在变.
本地名称查询:
Linux 将目标主机名及其对应的ip地址存储在 /etc/hosts 配置文件中。
通过修改 /etc/host.conf 文件来自定义系统解析主机名的方法和顺序,一般是先访问本地文件 /etc/hosts, 再访问dns服务。
order hosts,bind // 表示优先使用本地 /etc/hosts,失败后再使用dns
multi on // 如果 /etc/hosts 文件中一个主机名对应ip地址,
Linux 下设置代理:
export "http_proxy=http://[user]:[pass]@host:port/"
4.2.1 HTTP 代理服务器的工作原理
4.3 使用 tcpdump 抓取传输数据包
4.4 访问 DNS 服务器
tcpdump -i enp0s3 -s 2000 -nt '((src 192.168.0.105) or (dst 192.168.0.105) or arp ) and port !22'
1.squid 通过 /etc/resolv.conf 获取 dns 服务器 ip
2.将控制器交给内核的 udp 模块,udp 模块将 dns 查询报文封装成 udp 数据包,
同时将源端口和目标端口写入 udp 数据包头部, 然后 udp 调用 ip 模块
3.ip 模块将 udp 数据包封装成 ip 数据报,同时把源端 ip(192.168.1.108) 和
dns 服务器的 ip 地址加入 ip 数据报头部。
4.ip 模块查询路由表决定如何发送该 ip 数据报
5.如果 apr 中没有相应地址,还要发起 arp 广播
注意:
源ip, 目标ip( dns 服务器的 ip) 是不变的. 但 源 mac 地址和 目标 mac 地址一直在变.
4.5 本地名称查询
4.6 HTTP 通信