• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2021-11-27 13:43 Aet 隐藏边栏 |   抢沙发  6 
文章评分 1 次,平均分 5.0

TCP/IP通信案例

HTTP代理服务器的工作原理

  1. 在HTTP通信链上,客户端和目标服务器之间通常存在某些中转代理服务器,它们提供对目标资源的中转访问。
  2. 一个HTTP请求可能被多个代理服务器转发,后面的服务器称为前面服务器的上游服务器。
  3. 代理服务器按照其使用方式和作用,分为正向代理服务器和反向代理服务器以及透明代理服务器。

正向代理服务器

  1. 正向代理要求客户端自己设置代理服务器的地址。
  2. 客户端的每次请求都将直接发送到该代理服务器,并由代理服务器来请求目标资源。
    比如处于防火墙内的局域网机器要访问Internet,或者访问一些被屏蔽掉的网站,就需要正向代理服务器。

反向代理服务器

  1. 反向代理被设置在服务器端,因而客户端无需进行任何设置。
  2. 反向代理指用代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从内部服务器上得到的结果返回给客户端。
    这种情况下,代理服务器对外就表现为一个真实的服务器。
  3. 各大网站通常分区域设置了多个代理服务器,所以在不同的地方ping同一个域名可能得到不同的IP地址。因为这些IP地址实际上都是代理服务器的IP地址。

透明代理

  1. 透明代理只能设置在网关上。用户访问Internet的数据必然都经过网关,如果在网关上设置代理,则该代理对用户来说是显然透明的。
  2. 透明代理可以看作是正向代理的一种特殊情况。

代理服务器

  1. 正向代理服务器和客户端处于同一个逻辑网络中。该逻辑网络可以是一个本地LAN,也可以是一个更大的网络。
  2. 反向代理服务器和真正的Web服务器也位于同一个逻辑网络中,这通常由提供网站的公司来配置和管理。

service

  1. serveice是一个脚本程序,/usr/sbin/service,它为/etc/init.d/目录下的众多服务器程序(如httpd,vsftpd,sshd,mysqld等)的启动、停止、以及重启等动作提供了一个统一的管理。

本地名称查询

  1. 一般来说,通告域名来访问Internet上的某台主机时,需要使用DNS服务来获取该主机的IP地址。
    但如果我们通过主机名来访问本地局域网上的机器,则可通过本地的静态文件夹来获得该机器的IP地址。
  2. /etc/hosts.conf里面。用户可以通过修改这个文件来自定义系统解析主机名的方法和顺序。
    一般是先访问本地文件/etc/hosts,再访问DNS服务。

HTTP

HTTP请求

  1. 这些方法中,HEAD,GET,OPTIONS和TRACE被视为安全的方法,因为它们只是从服务器获取资源或信息,而不对服务器进行任何修改。
    而POST,PUT,DELETE和PATCH则影响服务器上的资源。
  2. 另一方面,GET,HEAD,OPTIONS,TRACE,PUT和DELETE等请求方法被认为是等幂的,也就是多次连续的、重复的请求和只发送一次该请求具有完全相同的效果。
    而POST方法则不同,连续多次发送同样一个请求可能进一步影响服务器上的资源。
  3. 在旧的HTTP协议中,Web客户端和Web服务器之间的一个TCP连接只能为一个HTTP请求服务。当处理完客户的一个HTTP请求之后,Web服务器就主动将TCP连接关闭了。
    此后,同一个客户如果要再发送一个HTTP请求的话,必须与服务器建立一个新的TCP连接,也就是说,同一个客户的多个连续的HTTP请求不能公用同一个TCP连接,这称为短连接。
  4. 长连接与之相反,指多个请求可以使用同一个TCP连接。
    上面的Connection就是专门用于告诉对方一个请求完成之后该如何处理连接的。

    1. close为立即关闭。
    2. keep-alive为保持一段时间或等待后续请求。
    3. 在所有头部字段之后,HTTP请求必须包含一个空行,以标识头部字段的结束。
      请求行和每个头部字段都必须以<CR><LF>也就是回车和换行结束。
      而空行必须只包含一个<CR><LF>,不能有其他的字符,甚至是空白字符也不行。
      空行之后,HTTP请求可以包含可选的消息体。如果消息体非空,则HTTP请求的头部字段中必须包含描述该消息体长度的字段“Content-Length”。

HTTP应答

  1. 第1行是状态行。HTTP/1.0指的是服务器使用的HTTP协议的版本号。200 OK是状态码和状态信息。
  2. 2到7行是HTTP应答的头部字段。
    1. Server: BWS/1.0表示目标Web服务程序的名字是BWS(Baidu Web Server)。
    2. Content-Length: 8024表示目标文档的长度是8024个字节。
    3. Content-Type: text/html;charset =gbk中,text是主文档类型,html是子文档类型。text/html表示目标文档index.html是text类型中的html文档。charset是text文档类型的一个参数,用于指定文档的字符编码。
    4. Set-Cookie: BAIDUID=A5B6C72D48CF639CE8896FD79A03FBD8:FG=1; expires=Wed,04 -Jul-42 00:10:47 GMT; path=/; domain=.baidu.com表示服务器传送一个Cookie给客户端。BAIDUID是指定Cookie的名字,expires指定Cookie的生存时间,domain和path指定该Cookie生效的域名和路径。
    5. Via: 1.0 localhost (squid/3.0 STABLE18)表示HTTP应答在返回过程中经历过的所有代理服务器的地址和名称。
  3. 在所有头部字段之后,HTTP应答必须包含一个空行,以标识头部字段的结束。
    状态行和每个头部字段都必须以<CR><LF>结束;而空行则必须只包含一个<CR><LF>,不能有其他字符,甚至是空白字符。
  4. 空行之后是被请求文档index.html的内容。

Cookie

  1. HTTP协议是一种无状态的协议,也就是每个HTTP请求之间没有任何上下文关系。
    如果服务器处理后续HTTP请求时需要用到前面的HTTP请求的相关信息,客户端必须重传这些信息。这将会导致HTTP请求必须传输更多的数据。
  2. 为了解决上述这种上下文关系,就需要额外的手段来保持HTTP连接状态,常见的解放方法就是Cookie。
  3. Cookie是服务器发送给客户端的特殊信息(通过HTTP应答的头部字段“Set-Cookie”),客户端每次向服务器发送请求的时候都需要带上这些信息。这样服务器就可以区分不同的客户了。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享