自己写HTTP服务器(一)http协议

 在写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服务器的基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值