Linux高性能服务器编程笔记(四)

第四章 TCP/IP通信案例

4.2 部署代理服务器

4.2.1 HTTP代理服务器的工作原理

正向代理服务器:要求客户端自己设置代理服务器的地址,客户的每次请求都将直接发送到该代理服务器,并由代理服务器来请求目标资源(client->proxy->Internet),示例:

反向代理服务器:被设置在服务器端,用代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从内部服务器上得到的结果返回给客户端。(Internet->proxy->client)

透明代理服务器:只能设置在网关上,可以看做正向代理的一种特殊情况
Linux高性能服务器编程笔记(四)_第1张图片

4.4 DNS服务器

Linux高性能服务器编程笔记(四)_第2张图片
DNS的过程:

  1. 程序通过读取/etc/resolv.conf文件获取DNS服务器的IP地址,然后将控制权传递给内核中的UDP模块。
  2. UDP模块将DNS查询报文封装成UDP数据报,同时将源端口号和目标端口号加入UDP数据报头部。
  3. 调用IP服务,将UDP数据报封装成IP数据报,将源端IP和通过步骤1查询到的DNS服务器IP地址加入IP数据报头部(值得留意的是src和dst的IP在传输过程中是不变的)。
  4. 此时,IP模块查询路由表。由于只能匹配默认路由项,因此先被发送至路由器,然后通过路由器转发。(此时的dstIP地址仍然是DNS服务器)
  5. ARP缓存中没有与路由器对应的缓存项,需要发起ARP广播来查询路由器的IP地址。
  6. 查询成功后,以太网举动程序将IP数据报封装成以太帧发给路由器。

4.6 HTTP请求

4.6.1 HTTP请求方法

Linux高性能服务器编程笔记(四)_第3张图片
其中,HEAD,GET,OPTIONS和TRACE是安全的,而POST,PUT,DELETE和PATCH则影响服务器上的资源。
GET,HEAD,OPTIONS,TRACE,PUT和DELETE等请求方法被认为是等幂的,即多次连续的、重复的请求和只发送一次该请求具有完全相同的效果。则POST方法则不同,连续操作可能进一步影响服务器上的资源。

PS:GET和POST的区别?
GET是从服务器上获取资源,POST是向服务器提交数据。GET是幂等的,也就是重复操作具有相同效果,而POST的重复操作可能影响到服务器的资源。

4.6.2 HTTP应答

常见的状态码和状态信息及其含义
Linux高性能服务器编程笔记(四)_第4张图片
Cookie的作用:
Cookie是服务器发送给客户端的特殊信息(通过HTTP应答的头部字段“Set-Cookie”),客户端每次向服务器发送请求的时候都需要带上这些信息(通过HTTP请求的头部字段“Cookie”)。

你可能感兴趣的:(Linux高性能服务器编程,服务器,linux,网络)