Web服务器程序解释请求消息并作出响应

本文详细介绍了Web服务器如何将请求的URL转换为实际文件名,处理CGI程序,执行访问控制,以及返回响应消息的过程。重点讨论了默认文件名、程序识别、IP和域名验证、用户名和密码的安全机制。此外,还提到了套接字在通信中的作用。
摘要由CSDN通过智能技术生成

将请求的URL转换为实际的文件名

  • read获取的数据内容就是HTTP请求消息。
  • Web服务器公开的目录其实并不是磁盘上的实际目录,而是虚拟目录。当读取文件时,需要先查询虚拟目录与实际目录的对应关系,并将URI转换成实际的文件名后,才能读取文件并返回数据。
    在这里插入图片描述
  • URI中的路径省略了文件名的情况,这时服务器会读取事先设置好的默认文件名
    http://www.glasscom.com/tone/
    http://www.glasscom.com/tone/index.html
  • 出于某些原因Web服务器的目录和文件名发生变化,但又希望用户通过原来的网址进行访问的时候,这个功能非常有用

运行CGI程序

  • 如果URL文件指定的内容是一个程序。会运行这个程序,然后将程序的输出结果返回给客户端。
    表单数据发送目标的程序名
    在这里插入图片描述
  • Web服务器会检查URI指定的文件名,看一看这个文件是不是一个程序(例如将.cgi、.php等扩展名的文件设置为程序)
  • 如果判断要访问的文件为程序文件,Web服务器会委托操作系统运行这个程序,然后从请求消息中取出数据嵌入到HTML中并交给运行的程序

Web服务器的访问控制

客户端IP地址:
  • 在调用accept接受连接时,就已经知道客户端的IP地址了,只要检查其是否允许访问就可以了
客户端域名:
  • 先根据客户端IP地址查询客户端域名:
    其实根据IP地址反查域名也可以使用DNS服务器
    在这里插入图片描述
  • 为了保险起见,还需要用这个域名查询一下IP地址,看看结果与发送方IP地址是否一致。这是因为有一种在DNS服务器上注册假域名的攻击方式,因此我们需要进行双重检查。
用户名和密码:
  • Web服务器会向用户发送一条响应消息,告诉用户需要在请求消息中放入用户名和密码
  • 浏览器收到这条响应消息后,会弹出一个输入用户名和密码的窗口,用户输入用户名和密码后,浏览器将这些信息放入请求消息中重新发送给服务器
  • Web服务器查看接收到的用户名和密码与事先设置好的用户名和密码是否一致,以此判断是否允许访问,如果允许访问,则返回数据

返回响应消息

  • Web服务器调用Socket库的write
  • 这时,需要告诉协议栈这个响应消息应该发给谁,但我们并不需要直接告知客户端的IP地址等信息,而是只需要给出表示通信使用的套接字的描述符就可以了。套接字中保存了所有的通信状态,其中也包括通信对象的信息,因此只要有描述符就万事大吉了
  • 协议栈会将数据拆分成多个网络包,然后加上头部发送出去
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值