4. Linux 高性能服务器编程 --- TCP/IP 通信

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 通信

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值