NO.38 WebServer思路
我们需要开发一个可供浏览器访问的网页服务端。
客户端HTTP协议中的请求信息格式:
请求行
GET /index.html HTTP/1.1CRLF
消息报头
消息正文
以行为单位发送至服务端 每行结尾以(CR LF)
CR:回车 LF:换行
服务端需要响应客户端对应的资源----HTTP协议要求实际响应客户端时的数据格式:
HTTP/1.1 200 OK CRLF 状态行
Content-Type:text/html CRLF 响应头信息
Content-Length:100CRLF 响应头信息
CRLF 单独发送CRLF指明响应头全部发送完毕
DATA 实际数据
1)状态行
状态行格式:
HTTP-Version Status_code Reason_Phrase CRLF
HTTP协议版本 状态代码 状态描述CRLF
例如:HTTP/1.1 200 OK CRLF
状态代码第一个数字有5种:
1xx:指示信息,表示请求已接收,继续处理。
2xx:成功,表示请求已接收,理解,接受
3xx:重定向,要完成请求需要更进一步的操作
4xx:客户端错误,请求语法错误或请求无法实现
5xx:服务端错误,服务器未能实现该请求
常见的状态码及描述:
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,服务端不能理解
401 Unauthonzed 请求未授权
403 Forbidden 服务端接收到请求,但是拒绝提供服务
404 Not Found 请求的资源不存在
500 Internal Server Error 服务器发生了不可预期的错误
503 Service Unavailable 服务器当前不能够处理客户端请求
2)响应头
响应头注明很多返回的信息,按行输出
常见----Content-Type:用来指明发送给接收者的媒体类型
常见的Content-Type:
text/html: HTML格式文件(网页)
text/xml: XML格式文件
image/gif: gif格式图片
image/jpeg: jpeg格式图片
image/png: png格式图片
Content-Length:用来指明发送给接收者实体正文的长度,简单说就是发送过去的数据的字节量
CRLF 单独发送CRLF指明响应头全部发送完毕
3)响应正文
DATA 实际数据
我们获取输入流,读取客户端发送过来的数据,然后给于客户端反馈,输出流使客户端得到请求的信息。