Request = Request-Line;
*((general-header|request-header|entity-header)CRLF);
CRLF
[message-body];
解析:(正则表达式语法结构)
1、request请求包的起始为请求行(Request-Line)
2、接着可以出现0个或者多个的general-header,request-header,entity-header。
顺序无关,但一般都按照以上顺序组成。
3、http的header都是键值对,以CRLF(回车换行)结束
4、三个header的区域以一个空行即CRLF结束
5、接着就是可选的message-body了
example:
GET /index.html HTTP/1.1
Accept:*?*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host:192.168.0.119
Connection: Keep-Alive
Response = Status-Line;
*((general-header|response-header|entity-header)CRLF);
CRLF
[message-body];
解析:同上
以上就是request和response的组成结构了,下面解析其各个元素,