HTTP学习笔记(一)之初探

2013/07/03 Java

http概览

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

http特征

http是应用层协议,由请求和响应构成,支持客户/服务器模式。

http是一个无状态的协议(每次发出的请求都是独立的,和上次的请求是没有关系的,所以如果需要通过http进行模拟登陆,就需要传递登录cookie)。

无连接协议(每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接)。

http服务器

Web服务器使用的基本都是http协议,所以web服务器也被称为是http服务器。

http服务器 与 app 服务器 的区别:

Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。与客户端的网络浏览器配合。

应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:”我们把应用程序服务器定义为“作为服务器执行共享业务应用程序的底层的系统软件”。

通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑 (business logic)。

Apache是纯粹的web服务器,而Tomcat和IIS因为具有了解释执行服务器端代码的能力,可以称作为轻量级应用服务器或带有服务器功能的Web服务器。

详细可参考:http://blog.csdn.net/gideal_wang/article/details/4442525

一个http请求过程:

用户在浏览器中输入一个URL,浏览器首先回去查host文件,如果此域名有对应的ip,如果没有就会根据网络连接里面的DNS地址去查选此URL对于的IP地址,再根据这个IP地址和默认80端口与远程服务器建立socket连接,然后浏览器根据这个URL组装成一个get类型的HTTP请求头,通过outputStream.write 发送到目标服务器,服务器等待inputStream.read返回数据,最后断开连接。

一张HTTP请求过程图示:

http 请求头 和 相应头的组成:

Request Header:
Request URL:http://www.taobao.com/
Request Method:GET
Status Code:200 OK200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:miid=.....
Host:www.taobao.com
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1469.0 Safari/537.36

Respone Header:
Cache-Control:max-age=3600
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=gbk
Date:Wed, 03 Jul 2013 02:03:28 GMT
Expires:Wed, 03 Jul 2013 03:03:28 GMT
Server:Tengine
Transfer-Encoding:chunked
Vary:Accept-Encoding

http 与 TCP 关系:

参考之前写的一片文章《Websocket 探究》

http 与socket关系:

首先说一下什么是socket,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,而不是协议。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。Socket 可以支持不同的传输层协议(TCP 或UDP )。

http连接:是基于TCP协议之上的协议,是短连接;

socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉,但会由于网络因素断开,所以经常使用轮询心跳来保持连接;

HTTP 是基于Socket 通信的子协议, Socket 收发信息自由, 协议都可由使用者定义。 HTTP 在Socket 基础上做了协议规范, 通信只能按照特定的格式去做, 用户可在HTTP 上做自己的子协议, 如网页浏览,webservice 等.

Search

    Post Directory