Linux高性能服务器编程——ch4笔记

第4章 TCP/IP 通信案例:访问 Internet 上的Web 服务器

4.1 实例总图

4.2 部署代理服务器

客户端和目标服务器之间可能存在多个代理服务器。

正向代理:要求客户端自己设置代理服务器的地址。

反向代理:设置在服务器端。

透明代理:设置在网关上,可以看作正向代理的特殊情况。

192.168.1.0/24:CIDR(无类域间路由)表示法,前面是IP地址,后面是子网掩码中1的位数,等价于192.168.1.0/255.255.255.0。通过squid部署代理服务器。

4.3 使用tcpdump抓取传输数据包

使用wget命令:

1)代理服务器访问DNS服务器查询域名对应IP地址;

2)代理服务器查询路由器MAC地址的ARP请求和应答;

3)客户端和代理服务器之间HTTP通信;

4)代理服务器和Web服务器之间HTTP通信。

4.4 访问DNS服务器

根据路由策略,目标IP地址(DNS服务器IP地址)匹配路由表中的相应路由项,之后该IP数据报通过路由器进行转发。如果ARP高速缓存没有记录相应的映射,那么客户端需要发起一个ARP广播,查询路由器IP地址的MAC地址。最终,以太网驱动程序将IP数据报封装成以太网帧发送给路由器。

IP头部的源端IP地址(客户端)和目的端IP地址(这里指DNS)在转发过程中是始终不变的(一种例外是源路由选择),但帧头部的源端物理地址和目的端物理地址在转发过程中则是一直在变化的。

4.5 本地名称查询

通过主机名来访问LAN上的机器,可通过本地的静态文件获取IP地址。

保存在 /etc/hosts 配置文件中。

当wget访问服务器时,先读取环境变量http_proxy,若未被阻止使用代理,则通过指定的代理服务器来访问Web服务,但是环境变量中包含主机名,因此首先读取 /etc/hosts 配置文件,解析主机名对应的IP地址,未找到则求助DNS。

顺序可以通过 /etc/host.conf 自定义。

4.6 HTTP通信

HTTP请求

除POST方法外,其他方法多次连续发送同一请求具有完全相同的效果,即等幂。

短连接:同一客户的多个连续的HTTP请求不能共用同一个TCP连接,必须建立新的连接。(Connection:close)

长连接:多个请求可以使用同一个TCP连接。(Connection:keep-alive)
HTTP应答

HTTP协议是无状态的,每个请求之间没有上下文关系,如果服务器处理后续HTTP请求时需要用到前面的HTTP请求的相关信息,客户端必须重传这些信息。

Cookie:保持HTTP连接状态,客户端每次向服务器发送请求的时候都需要带上这些信息(通过 HTTP 请求的头部字段"Cookie")。这样服务器就可以区分不同的客户了。基于浏览器的自动登录就是用Cookie实现的。

相关推荐
Charles Ray9 分钟前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
重生之我在20年代敲代码9 分钟前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
小宋102114 分钟前
玩转RabbitMQ声明队列交换机、消息转换器
服务器·分布式·rabbitmq
m0_6090004217 分钟前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
我要吐泡泡了哦1 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1231 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
小安运维日记1 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
kejijianwen2 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle
贾saisai3 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫3 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习