AJP协议总结与分析
没有请求正使用该连接。
当前连接正在处理某个请求.
方向
Server->Container
Container->Server
3
Send Body Chunk
Send a chunk of the body from the servlet container to the web server
4
Send Headers
Send the response headers from the servlet container to the web server
5
End Response
Marks the end of the response
6
Get Body Chunk
Get further data from the request if it hasn't all been transferred yet
9
CPong Reply
The reply to a CPing request
ForwardRequest包数据部分(payload)结构:
AJP13_FORWARD_REQUEST :=
??? prefix_code????? (byte) 0x02 = JK_AJP13_FORWARD_REQUEST
??? method?????????? (byte)
??? protocol???????? (string)
??? req_uri????????? (string)
??? remote_addr????? (string)
??? remote_host????? (string)
??? server_name????? (string)
??? server_port????? (integer)
??? is_ssl?????????? (boolean)
??? num_headers????? (integer)
??? request_headers *(req_header_name req_header_value)
??? attributes????? *(attribut_name attribute_value)
request_terminator (byte) OxFF
req_header_name :=
sc_req_header_name | (string)? [see below for how this is parsed]
sc_req_header_name := 0xA0xx (integer)
req_header_value := (string)
attribute_name := sc_a_name | (sc_a_req_attribute string)
attribute_value := (string)
?
AJP13_SEND_HEADERS :=
? prefix_code?????? 4
? http_status_code? (integer)
? http_status_msg?? (string)
? num_headers?????? (integer)
? response_headers *(res_header_name header_value)
?
res_header_name :=
??? sc_res_header_name | (string)?? [see below for how this is parsed]
?
sc_res_header_name := 0xA0 (byte)
header_value := (string)
?
AJP13_SEND_BODY_CHUNK :=
? prefix_code?? 3
? chunk_length? (integer)
? chunk??????? *(byte)
?
AJP13_END_RESPONSE :=
? prefix_code?????? 5
? reuse???????????? (boolean)
?
AJP13_GET_BODY_CHUNK :=
? prefix_code?????? 6
? requested_length? (integer)

?


![]()
其中最后一个字节(01),代表当前连接仍然可用。
(完)