在写HTTP服务器之前,我们首先要来了解一下http协议
在讲HTTP协议之前,我们先来说说URL
(一)URL:
URL就是我们平时俗称的“网址”

互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。完整的、带有授权部分的普通统一资源标志符语法看上去如下:协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志
(二)http请求
首先我们先来简单了解一下HTTP请求的格式
HTPP请求分为四个部分:
-
1.首行:方法 + url + 版本号
-
2.Hander:请求的属性,用冒号分割出来的键值对,每组属性之间用换行分隔(有的使用\n,有的使用\r,有的使用\r\n),遇到空行表示hander部分结束
-
3.空行
-
4.正文:请求所附带的参数
POST http://www.wrox.com/WileyCDA/ HTTP1.1
Host: www.wrox.com
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
name=Professional%20Ajax&publisher=Wiley

一般情况下POST请求会将参数放在正文部分,同时会在Hander部分通过Content_Length来告诉服务器正文部分的大小;GET请求会将参数放在URL中,参数之间都是通过&隔离开的
接着我们再来看看HTTP响应的格式
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 39
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84
<html>
<body>Hello World</body>
</html>
-
1.请求行:版本号 + 状态码 + 状态码解释
-
2.Hander:请求的属性,冒号分割的键值对,每组属性之间通过\n分开,遇到空行结束
-
3.空行
-
4.正文部分:在Hander中Content-Length属性来标识正文长度,例如如果服务器返回了一个html页面,那么html的内容就在正文中
(三)HTTP请求方法
HTTP定义了服务器与客户端之间的交互方式,最常见的GET,POST请求,以及PUT,DELATE等

(四)HTTP状态码

常见的状态码有,比如200(OK),404(Not Found),403(Forbidden),302(Redirect,重定向)等等
(五)HTTP常见的Hander字段
Content-Type:数据类型(text/html等)
服务器在给客户端做回应的时候,必须要告诉客户端数据的格式是什么,Content-Type属性就是用来标识数据格式的
Content-Length:正文长度,用来告诉服务器正文部分大小
以上就是关于Http协议的基本, 是自己编写HTTP服务器的基础
http协议&spm=1001.2101.3001.5002&articleId=86505587&d=1&t=3&u=c402f4ed78df4bdc814207cd0f380f90)
1993

被折叠的 条评论
为什么被折叠?



