`
pouyang
  • 浏览: 312936 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Internet 网络分层之二 HTTP协议

阅读更多
转自http://zsxxsz.iteye.com/blog/568250
特别感谢zsxxsz
一、TCP/IP 协议介绍

  在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别为:物理层、链路层、网络层、传输层和应用层,如下图所示:

从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封装格式如下:

其中,对于TCP传输协议,客户端在于服务器建立连接前需要经过TCP三层握手,过程如下:

二、HTTP协议

2.1 简介

  超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议,自 1990 年起,HTTP 就已经被应用于 WWW 全球信息服务系统。
  HTTP 是一种请求/响应式的协议。一个客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。
  HTTP 的第一版本 HTTP/0.9是一种简单的用于网络间原始数据传输的协议;
  HTTP/1.0由 RFC 1945 定义 ,在原 HTTP/0.9 的基础上,有了进一步的改进,允许消息以类 MIME 信息格式存 在,包括请求/响应范式中的已传输数据和修饰符等方面的信息;
  HTTP/1.1(RFC2616) 的要求更加严格以确保服务的可靠性,增强了在HTTP/1.0 没有充分考虑到分层代理服务器、高速缓冲存储器、持久连接需求或虚拟主机等方面的效能;
  安全增强版的 HTTP (即S-HTTP或HTTPS),则是HTTP协议与安全套接口层(SSL)的结合,使HTTP的协议数据在传输过程中更加安全。



2.2 协议结构

  HTTP协议格式也比较简单,格式如下:

2.3 HTTP 协议举例

  下面是一个HTTP请求及响应的例子:

2.4 请求头格式

a) 通用头(general-header):
Cache-Control:客户端希望服务端如何缓存自己的请求数据,如"Cache-Control: no-cache","Cache-Control: max-age=0";
Connection:客户端是否希望与服务端之间保持长连接,如"Connection: close", "Connection: keep-alive";
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段;
Pragma:包含了客户端一些特殊请求信息,如 "Pragma: no-cache" 客户端希望代理或应用服务器不应缓存与该请求相关的结果数据;
Via:一般用在代理网关向应用服务器发送的请求头中,表明该来自客户端的请求经过了网关代理,
     格式为:"Via: 请求协议版本  网关标识   [其它信息] ",
     如 :" Via: 1.1  webcache_250_199.hexun.com:80 (squid)"



b) 请求头(request-header):
Accept:表明客户同端可接受的请求回应的媒体类型范围列表。星号“*”用于按范围将类型分组,用“*/*”指示可接受全部类型;用“type/*”指示可接受 type类型的所有子类型,如“ Accept: image/gif, image/jpeg, */*”;
Accept-Charset:客户端所能识别的字符集编码格式,格式:“Accept-Charset: 字符集1[:权重],字符集2[:权重]”,如:“ Accept-Charset: iso-8859-5, unicode-1-1;q=0.8”;
Accept-Language:客户端所能识别的语言,格式:“Accept-Language: 语言1[:权重],语言2[:权重]”,如:” Accept-Language: zh, en;q=0.7”;
Host:客户请求的主机域名或主机IP,格式:“Host: 域名或IP[:端口号]”,如:“Host: www.hexun.com:80“,请求行中若有HTTP/1.1则必须有该请求头;
User-Agent:表明用户所使用的浏览器标识,主要用于统计的目的;
Referer:指明该请求是从哪个关联连接而来;

Accept-Encoding:客户端所能识别的编码压缩格式,如:“Accept-Encoding: gzip, deflate”;
If- Modified-Since:该字段与客户端缓存相关,客户端所访问的URL自该指定日期以来在服务端是否被修改过,如果修改过则服务端返回新的修改后的信息,如果未修改过则服务器返回304表明此请求所指URL未曾修改过,如:“If-Modified-Since: Fri, 2 Sep 2006 19:37:36 GMT”;
If-None-Match:该字段与客户端缓存相关,客户端发送URL请求的同时发送该字段及标识,如果服务端的标识与客户端的标识一致,则返回304表明此URL未修改过,如果不一致则服务端返回完整的数据信息,如:“If-None-Match: 0f0a893aad8c61:253, 0f0a893aad8c61:252, 0f0a893aad8c61:251”;
Cookie:为扩展字段,存储于客户端,向同一域名的服务端发送属于该域的cookie,如:“Cookie: MailUserName=whouse”;



c) 实体头(entity-header): (此类头存在时要求有数据体)
Content-Encoding:客户端所能识别的编码压缩格式,如:“Content-Encoding: gzip, deflate”;
Content-Length:客户端以POST方法上传数据时数据体部分的内容长度,如:“ Content-Length: 24”;
Content- Type:客户端发送的数据体的内容类型,如:“Content-Type: application/x-www-form-urlencoded”为以普通的POST方法发送的数据;“Content-Type: multipart/form-data; boundary=---------------------------5169208281820”,则表明数据体由多部分组成,分隔符为 “-----------------------------5169208281820”;



2.5)响应格式

a) 通用头(general-header):
Cache- Control:服务端要求中间代理及客户端如何缓存自己响应的数据,如“Cache-Control: no-cache”,如:“Cache-Control: private” 不希望被缓存,“Cache-Control: public” 可以被缓存;
Connection:服务端是否希望与客户端之间保持长连接,如“Connection: close”, “Connection: keep-alive”;
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段;
Pragma:包含了服务端一些特殊响应信息,如 “Pragma: no-cache” 服务端希望代理或客户端不应缓存结果数据;
Transfer-Encoding:服务端向客户端传输数据所采用的传输模式(仅在HTTP1.1中出现),如:“Transfer-Encoding: chunked”,注:该字段的优先级要高于“Content-Length” 字段的优先级;



b)响应头(response-header):
Accept-Ranges:表明服务端接收的数据单位,如:“Accept-Ranges: bytes”, ;
Location:服务端向客户端返回此信息以使客户端进行重定向,如:“Location: http://www.hexun.com”;
Server:服务端返回的用于标识自己的一些信息,如:“ Server: Microsoft-IIS/6.0”;
ETag:服务端返回的响应数据的标识字段,客户端可根据此字段的值向服务器发送某URL是否更新的信息;



c)实体头(entity-header): (此类头存在时要求有数据体)
Content-Encoding:服务端所响应数据的编码格式,如:“Content-Encoding: gzip”;
Content-Length:服务端所返回数据的数据体部分的内容长度,如:“ Content-Length: 24”;
Content-Type:服务端所返回的数据体的内容类型,如:“Content-Type: text/html; charset=gb2312” ;
Set-Cookie:服务端返回给客户端的cookie数据,如:“ Set-Cookie: ASP.NET_SessionId=icnh2ku2dqlmkciyobgvzl55; path=/”



2.6)服务器返回状态码

1xx:表明服务端接收了客户端请求,客户端继续发送请求;
2xx:客户端发送的请求被服务端成功接收并成功进行了处理;
3xx:服务端给客户端返回用于重定向的信息;
4xx:客户端的请求有非法内容;
5xx:服务端未能正常处理客户端的请求而出现意外错误。



举例:

“100”  ; 服务端希望客户端继续;
“200”  ; 服务端成功接收并处理了客户端的请求;
“301”  ; 客户端所请求的URL已经移走,需要客户端重定向到其它的URL;
“304”  ; 客户端所请求的URL未发生变化;
“400”  ; 客户端请求错误;
“403”  ; 客户端请求被服务端所禁止;
“404”  ; 客户端所请求的URL在服务端不存在;
“500”  ; 服务端在处理客户端请求时出现异常;
“501”  ; 服务端未实现客户端请求的方法或内容;
“502”  ; 此为中间代理返回给客户端的出错信息,表明服务端返回给代理时出错;
“503”  ; 服务端由于负载过高或其它错误而无法正常响应客户端请求;
“504”  ; 此为中间代理返回给客户端的出错信息,表明代理连接服务端出现超时。



2.7)chunked 传输

  编码使用若干个Chunk组成,由一个标明长度为0的chunk结束,每个Chunk有两部分组成,第一部分是该Chunk的长度(以十六进制表示)和长度单位(一般不写),第二部分就是指定长度的内容,每个部分用CRLF隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些没有写的头部内容。另外,在HTTP头里必须含有:” Transfer-Encoding: chunked” 通用头字段。格式如下:

2.8)HTTP 请求方法

GET、POST、HEAD、CONNECT、PUT、DELETE、TRACE



2.9)举例

a)GET请求

b)POST请求

d)POST方式上传文件

e)CONNECT举例


3.0)在终端以 telnet 方式测试

a)打开回显功能(针对windows)
  Windows 2000:进入DOS模式->输入 telnet->set LOCAL_ECHO->退出:quit->telnet ip 80
  Windows xp:进入DOS模式->输入telnet->set local echo->open ip 80
b) 按HTTP协议格式输入GET请求、HEAD请求、POST请求。


分享到:
评论

相关推荐

    无线Mesh网络的跨层协议研究与设计.pdf

    但是,由于WMN在拓扑、传输和业务上的特性,传统的用于有线网络的分层协议设计方法已不能保证其服务质量(Quality of Service,QO S)。因此探索基于物理层、MAC层等协议层的跨层路由技术成为WMN研究的热点和难点。

    网络安全与管理之网络安全的体系结构(91页).pdf

    网络安全体系结构 本章主要内容 互联网体系结构 IP层安全协议:IPSec IP层路由协议:DNS服务 TCP层安全协议:SSL/TLS 1 互联网体系结构与协议 回顾:互联网体系结构与协议 掌握互联网体系结构与协议是网络安全的基础...

    计算机网络与因特网(第二版)(5)

    接口硬件 第10章 局域网扩展:光纤调制解调器、 中继器、网桥及交换机 第11章 远程数字连接技术 第12章 广域网技术与路由 第13章 网络所有权、服务模式和性能 第14章 协议与分层 第15...

    计算机网络自顶向下方法第4版—课件1-2章

    协议分层, 服务模型 因特网简史 实现 运输层服务模型 客户端-服务器体系结构 P2P体系结构 通过对常用应用层协议的探讨和分析来学习网络协议: http ftp smtp Pop3 IMAP DNS 目录: 第1章 计算机网络与因特网 1.1 ...

    计算机网络与因特网

    第 1 章 导论 1 第 2 章 推动力和工具 3 第 3 章 传输介质 9 第 4 章 局域异步通信 14 第 5 章 远程通信 20 第 6 章 包、帧与差错检测 27 第 7 章 局域网技术与网络拓扑 37 ...第 14 章 协议与分层 112 .....

    计算机网络与因特网(关于因特网的内容很全)

    第14章 协议与分层 第15章 网络互联:概念、结构与协议 第16章 IP:互联网协议地址 第17章 协议地址联编 第18章 IP数据报和数据报转发 第19章 IP封装、分段与重组 第20章 IP的未来 第21章 差错报告机制 第22章 TCP:...

    ip协议的理论概述.txt

    IP协议是互联网协议(Internet Protocol)的简称,它是一种网络层协议,负责将数据包从源主机传输到目标主机,是整个互联网通信的基础。以下是IP协议的主要特点和功能: 无连接性:IP协议在发送数据之前不需要建立...

    TCP/IP协议详解

    TCP/IP详解 1 概述 1.1 引言 ...在TCP/IP协议组件中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互连网控制报文协议),以及IGMP协议(Internet组管理协议)。 详细内容,请下载浏览。

    计算机网络第一章概述.bmp

    互联网:(Internet):超级多的各种计算机网络互连起来。 互联网两个重要基本特点:连通性、共享。 计算机网络是由若干个结点和连接这些结点的链路组成 互连网:网络的网络 网络把许多计算机连接在一起,而互连...

    计算机网路与因特网(第二版)(2)

    接口硬件 第10章 局域网扩展:光纤调制解调器、 中继器、网桥及交换机 第11章 远程数字连接技术 第12章 广域网技术与路由 第13章 网络所有权、服务模式和性能 第14章 协议与分层 第15...

    计算机网络教程:自顶向下方法

    本书作者 Forouzan 是计算机教育领域的知名专家,他在这本经典著作中,利用 Internet 协议分层和 TCP/IP 协议簇,采用自顶向下的方法,首先说明应用层协议是怎样交换信息的,再解释消息是怎样分解成比特和信 号并...

    计算机局域网组建与互联

    TCP/IP是一种分层协议,它共被分为个4层次,大约包含近期100个非专有协议,通过这些协议,可以高效和可靠地实现计算机系统之间的互连。TCP/IP协议中的核心协议有TCP(传输控制协议)、UDP(用户数据报协议)和IP...

    计算机网络与因特网概述

    计算机网络课件 计算机网络与因特网概述 只可以通过只读方式打开,供大家参考,做学习资料 主要包括:网络的引用,网络的基本概念,因特网及基本组成,数据通信基础与网络传输介质,网络体系结构和协议分层。

    TCP/IP协议分层详解

    本文来自于cnblogs,主要讲解...TCP/IP协议模型(TransmissionControlProtocol/InternetProtocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网

    计算机网络--用自顶向上方法描述因特网特色

    《Computer Networking, A Top-Down Approach Featuring the Internet, 3rd Edition》英文版。...以自顶向下方式进行分层体系结构的研究,使得读者关注所需要的网络服务,进而学习如何提供这些服务。

    计算机网络基础课程标准.doc

    掌握计算机网络各层协议的基本工作原理及其所采用 的技术,对当前计算机网络的主要种类和常用的网络协议有较清晰的概念,学会计算机 网络的一些基本设计方法,对典型计算机网络(Internet)的特点和具体实现有基本印象...

    计算机网络&计算机网络

    1.4.1 协议分层 1.4.2 服务类型 1.4.3 服务原语 1.5 ISO/OSI参考模型 1.5.1 参考模型 1.5.2 模型评价 1.6 本书的结构 第一部分 数据通信 第2章 数据通信基础知识 2.1 基本概念 2.1.1 信号与通信 2.1.2 ...

    计算机网络——自顶向下方法与Internet特色.part1.rar

    Rose 教授的《计算机网络—自顶向下方法与 Internet 特色》一书的显著特点是: <br> 1. 独创的“自顶向下”教学法。由于计算机网络的复杂性,长期以来按分层体系结构自下而上讲授网络课程内容似乎已成一种定式...

Global site tag (gtag.js) - Google Analytics