`
pouyang
  • 浏览: 320119 次
  • 性别: 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请求。


分享到:
评论

相关推荐

    计算机网络实验一:用Wireshark观察计算机网络的协议分层

    在计算机网络的学习中,了解和分析网络协议分层是至关重要的。本次实验的主题是“用Wireshark观察计算机网络的协议分层”,旨在通过实践帮助我们深入理解网络通信的底层机制。Wireshark是一款强大的网络封包分析软件...

    计算机网络 计算机 网络分层

    计算机网络的分层模型是理解网络通信基础的关键概念。这一模型将复杂的网络功能分解为多个独立的层次,便于管理和实现。通常,我们采用的是OSI七层模型或TCP/IP四层模型(在现代网络中更常见)。在描述中提到的...

    计算机网络之基础之分层与协议详解.pdf

    计算机网络是计算机技术与通信技术相结合的产物,其中分层与协议是其核心概念。分层是将计算机网络通信过程划分为多个层次,每一层完成特定的功能,而协议则是每一层中用于完成这些功能的一系列规则。 ### OSI模型...

    OSI网络分层与网络设备的所属

    主要协议有IP(互联网协议),以及IGMP(因特网组管理协议)、ICMP(因特网控制消息协议)和ARP/RARP(地址解析协议/反向地址解析协议)。 6. **数据链路层**:数据链路层负责在物理层上建立、撤销逻辑链路,并处理...

    网络协议基础PPT

    每一份PPT文件可能详细讲解了这些概念,例如“网络协议01.ppt”可能涵盖网络协议的基本概念和分层模型,“网络协议02.ppt”可能深入讨论TCP/IP协议族,包括TCP和UDP的特点与区别,“网络协议03.ppt”和“网络协议04....

    网络技术基础讲座_网络概念&OSI分层网络模型&网络设备&INTERNET基础

    网络技术基础讲座主要涵盖了网络概念、OSI分层网络模型、网络设备以及INTERNET的基础知识。网络技术在现代社会中扮演着至关重要的角色,它通过连接不同的计算机设备,实现了资源共享和信息共享,极大地提高了工作...

    Tcp-ip 协议分层结构及其报文格式

    TCP/IP协议是互联网通信的基础,它定义了一套标准的、分层次的...总结来说,TCP/IP协议通过分层结构实现数据在网络中的高效传输,而HTTP报文解析则关注应用层的交互,理解这些原理对于网络编程和网络故障排查至关重要。

    网络游戏-网络设备及其实现稀疏模式协议无关组播域分层的方法.zip

    "网络游戏-网络设备及其实现稀疏模式协议无关组播域分层的方法"是一个专注于网络设备和多播技术应用的主题,尤其关注稀疏模式协议无关组播(Sparse Mode Protocol Independent Multicast, SMPIM)以及在分层网络架构...

    tcp/ip协议分层

    TCP/IP协议分层是互联网通信的基础,它将复杂的网络通信过程划分为多个层次,每个层次负责不同的功能,以实现高效、可靠的通信。下面将详细介绍这些层次及其主要协议和功能。 **第二章TCP/IP** 2.2 TCP/IP的网络...

    计算机网络分层解读PPT

    首先,TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网上最广泛使用的协议栈,它采用了四层模型:网络接口层、网络层、传输层和应用层。每一层都有其特定的功能,如网络接口层负责数据帧在物理...

    常见的三个网络协议.txt

    - **分层结构**:TCP/IP协议遵循分层模型,每一层负责不同的功能,如物理层、链路层、网络层、传输层等。 - **全球通用性**:TCP/IP协议被广泛接受并成为国际标准,支持各种网络间的互连互通。 - **高度可配置性*...

    计算机网络所有协议关系

    在理解计算机网络的所有协议关系时,我们首先要掌握网络分层模型,最常见的是OSI七层模型和TCP/IP四层模型(或五层模型,视具体解释)。 1. **OSI七层模型**: - 应用层:提供用户直接使用的应用服务,如HTTP、FTP...

    计算机网络课件:第二章 网络体系结构与网络协议.ppt

    网络协议的标准化过程中,RFC(Request for Comments)文档和Internet草案扮演了重要角色。RFC是记录Internet协议和技术规范的文档,是互联网协议标准制定过程中的重要参考资料。通过一系列的讨论和修订,这些草案...

    北邮/研究生课程网络协议分析

    课程内容分为几个章节,首先介绍网络协议的基础概念,包括协议栈、分层结构模型,以及不同网络(如电信网络、Internet、下一代网络)中的协议架构。接着,重点分析一些典型的通信协议,如SIP(会话初始化协议)、...

    计算机网络:CH4 网络层-因特网路由选择协议.ppt

    在“计算机网络:CH4 网络层-因特网路由选择协议.ppt”中,主要讲解了互联网路由选择的重要知识点。 首先,路由选择问题涉及如何有效地将数据报文发送到正确的目的地。互联网实际结构是基于自治系统(AS)的,这些...

    一种具有路由器支持的单组分层组播协议.pdf

    IGMP(Internet Group Management Protocol)是用于管理组播组成员的协议,接收者通过IGMP离开某些组来取消对应层的订阅。然而,路由器接收成员离开消息并进行组播树修剪存在较大延迟,导致网络拥塞反应迟缓。 5. ...

    计算机网络_自顶向下方法与Internet特色(第二章)课后习题答案中文版

    计算机网络_自顶向下方法与Internet特色(第二章)课后习题答案中文版 计算机网络是计算机科学和信息技术领域中的一个重要方向,该领域涉及到计算机之间的联网、通信和信息交换等方面。在这里,我们将对计算机网络的...

    计算机网络-分层详细描述了计算机网络相关原理

    为了理解和操作复杂的网络系统,人们采用了一种分层的方法来组织网络功能,这就是我们所说的网络分层模型。本文将深入探讨计算机网络的分层模型及其各层的功能。 首先,我们有最底层的物理层(Physical Layer)。...

    网络协议概述:物理层、连接层、网络层、传输层、应用层详解

    **网络层**负责不同网络间的通信,主要协议是IP(Internet Protocol)。网络层的工作是寻址和路由,确保数据包能从源主机到目标主机。路由器在这里扮演关键角色,它们根据IP地址将数据包从一个网络转发到另一个网络...

Global site tag (gtag.js) - Google Analytics