linux 服务器编程之HTTP篇

Http


http 协议全程是Hype Text Transfer Protool (超文本传输协议)的缩写,是用于万维网(www:world wide web)服务器传输超文本到本地浏览器的传送协议。http 协议是因特网上应用最为广泛的一种网络传输协议,所有的www文件都必须遵循这个标准。Http是一个基于Tcp/IP 的通信协议来传输数据(HTML 文件,图片文件,查询结果等)

Http工作原理

Http 协议的作用与客户端和服务端架构上,浏览器作为HTTP 客户端通过URL 向服务端发送请求(web服务器),web服务器在接受到请求后,向客户端发送响应消息。HTTP 默认的端口是80。常见的web服务器有:Apache 服务器,lls服务器等

HTTP 的特性:

  1. HTTP是无连接的,无连接的含义是每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应当后,即可=断开连接,采取这种方式可以节省传输时间。
    2.HTTP是媒体独立的:这意味着只要客户端和服务器知道如何处理数据内容,任何类型都可以通过HTTO发送,客户端以及服务器指定使用合适MIME-type内容类型。
    3.HTTP 是状态的协议:指对事物的处理没有记忆的能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,可能导致每次连接传输的数据量的增大,令一方面服务器不需要先前信息时它的应答就教块。

HTTP 消息结构

在传输中HTTP 规定了其传输的格式

在这里插入图片描述

例如下面格式:

http 请求信息如下 :

//请求行
POST /index.html HTTP/1.1   请求方法 url 协议/版本号 Host: localhost  主机地址       
//请求头部 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: zh-cn,zh;q=0.5 
Accept-Encoding: gzip, deflate  
Connection: keep-alive 
//	请求数据
Referer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); 
text-decoration: none;">http://localhost/</a> Content-Length:25 Content-Type:application/x-www-form-urlencoded```

服务器响应消息:

在这里插入图片描述

下面实例是一点典型的使用 GET 来传递数据的实例:

客户端请求:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

服务器响应
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT H
ETag: “34aa387-d-1568eb00”
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

输出结果是:Hello World! My payload includes a trailing CRLF.

关于HTTP中长连接和短连接:

HTTP1.0协议不支持长连接,从HTTP1.1协议以后是支持长连接的。要说HTTP中的长连接和短连接就要了解两点 HTTP是属于应用层的协议,Tcp是属于传输层的协议是真正传输的一层。而HTTP是基于传输层TCP进行的长连接和短连接。长连接就是位置对通道的复用,而http的短连接发送请求收到请求回复后就断开。

在这里插入图片描述

HTTP如何设置长连接:

设置Connection 为keep-alive 来设置。注意长连接并不是永久连接的。如果一段时间内(具体的时间长短,是可以在header当中进行设置的,也就是所谓的超时时间),这个连接没有HTTP请求发出的话,那么这个长连接就会被断掉。(因此可用心跳来维持长连接)

长连接:连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接(一个TCP连接通道多个读写通信);
短连接:连接→数据传输→关闭连接;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值