fastcgi协议管窥

纪录的通用结构:

typedef struct {
            unsigned char version;
            unsigned char type;
            unsigned char requestIdB1;
            unsigned char requestIdB0;
            unsigned char contentLengthB1;
            unsigned char contentLengthB0;
            unsigned char paddingLength;
            unsigned char reserved;
            unsigned char contentData[contentLength];
            unsigned char paddingData[paddingLength];
        } FCGI_Record;

其中重点关注:contentData,不同的类型纪录,关键在于type 及contentData数据的不同;type取值:FCGI_GET_VALUES, FCGI_GET_VALUES_RESULT,FCGI_BEGIN_REQUEST,FCGI_PARAMS,FCGI_ABORT_REQUEST,FCGI_END_REQUEST等等;

1.管理纪录类型和应用纪录类型,管理用于获取php-fpm的状态,FCGI_GET_VALUES, FCGI_GET_VALUES_RESULT;应用纪录用于请求响应:FCGI_BEGIN_REQUEST记录开始一个请求(role:FCGI_RESPONDER/FCGI_AUTHORIZER/FCGI_FILTER);FCGI_PARAMS流记录类型,用于从Web服务器向应用发送名-值对(FCGI_NameValuePair11/FCGI_NameValuePair14/FCGI_NameValuePair41/FCGI_NameValuePair44;FCGI_STDIN, FCGI_DATA, FCGI_STDOUT, FCGI_STDERR 字节流,FCGI_STDIN是流记录类型,用于从Web服务器向应用发送任意数据。FCGI_DATA是另一种流记录类型,用于向应用发送额外数据。FCGI_STDOUT和FCGI_STDERR都是流记录类型,分别用于从应用向Web服务器发送任意数据和错误数据)。FCGI_ABORT_REQUEST记录来中止请求;处理了请求,或已经拒绝了请求,应用发送FCGI_END_REQUEST记录来终止请求。

2.离散纪录和流式纪录;前者是一个完整的逻辑信息整体;后者需要多个纪录合并,拼接contentData形成一个完整的逻辑整体;


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值