TCP/IP
OSI 七层模型在提出时的出发点是基于标准化的考虑,而没有考虑到具体的市场需求,使得该模型结构复杂,部分功能冗余,因而完全实现 OSI 参考模型的系统不多。而 TCP/IP 参考模型直接面向市场需求,实现起来也比较容易,因此在一经提出便得到了广泛的应用。基于 TCP/IP 的参考模型将协议分成四个层次,如下图所示,它们分别是:网络访问层、网际互联层、传输层、和应用层。
① 应用层
TCP/IP 模型将 OSI 参考模型中的会话层、表示层和应用层的功能合并到一个应用层实现,通过不同的应用层协议为不同的应用提供服务。例如:FTP 、 Telnet 、 DNS 、 SMTP 等。
② 传输层
该层对应于 OSI 参考模型的传输层,为上层实体提供源端到对端主机的通信功能。传输层定义了两个主要协议:传输控制协议(TCP )和用户数据报协议( UDP )。其中面向连接的 TCP 协议保证了数据的传输可靠性,面向无连接的 UDP 协议能够实现数据包简单、快速地传输。
③ 网际互联层
网际互联层对应 OSI 参考模型的网络层,主要负责相同或不同网络中计算机之间的通信。在网际互联层, IP 协议提供的是一个可靠、无连接的数据报传递服务。该协议实现两个基本功能:寻址和分段。根据数据报报头中的目的地址将数据传送到目的地址,在这个过程中 IP 负责选择传送路线。除了 IP 协议外,该层另外两个主要协议是互联网组管理协议(IGMP )和互联网控制报文协议( ICMP )。
④ 网络接入层
网络接入层的功能对应于 OSI 参考模型中的物理层和数据链路层,它负责监视数据在主机和网络之间的交换。事实上,TCP/IP 并未真正描述这一层的实现,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与 TCP/IP 的网络接入层进行连接,因此具体的实现方法将随着网络类型的不同而有所差异。
HTTP****协议
HTTP****简介
HTTP 协议是 Hyper Text Transfer Protocol (超文本传输协议)的缩写 , 是用于从万维网( WWW:WorldWide Web )服务器传输超文本到本地浏览器的传送协议。。
HTTP 是一个基于 TCP/IP 通信协议来传递数据( HTML 文件 , 图片文件 , 查询结果等)。
HTTP****工作原理
HTTP 协议工作于客户端 - 服务端架构上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。
Web 服务器有: Apache 服务器, IIS 服务器( Internet Information Services )等。
Web 服务器根据接收到的请求后,向客户端发送响应信息。
HTTP 默认端口号为 80 ,但是你也可以改为 8080 或者其他端口。
HTTP****三点注意事项:
HTTP 是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收
到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP 是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据
都可以通过 HTTP 发送。客户端以及服务器指定使用适合的 MIME-type 内容类型。 HTTP 是无状态: HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态
意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
另一方面,在服务器不需要先前信息时它的应答就较快。
以下图表展示了 HTTP 协议通信流程:
HTTP****消息结构
HTTP 是基于客户端 / 服务端( C/S )的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请 求/ 响应协议。
一个 HTTP" 客户端 " 是一个应用程序( Web 浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP 的请求的目的。
一个 HTTP" 服务器 " 同样也是一个应用程序(通常是一个 Web 服务,如 Apache Web 服务器或 IIS 服务器等),通过接收客户端的请求并向客户端发送HTTP 响应数据。
HTTP 使用统一资源标识符( Uniform Resource Identifiers, URI )来传输数据和建立连接。
一旦建立连接后,数据消息就通过类似 Internet 邮件所使用的格式 [RFC5322] 和多用途 Internet 邮件扩展 (MIME) [RFC2045] 来传送。
客户端请求消息
客户端发送一个 HTTP 请求到服务器的请求消息包括以下格式:请求行( request line )、请求头部
( header )、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
服务器响应消息
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
HTTP****请求方法
根据 HTTP 标准, HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法: OPTIONS 、 PUT 、 PATCH 、 DELETE 、 TRACE 和 CONNECT 方法。
HTTP****响应头信息
HTTP 请求头提供了关于请求,响应或者其他的发送实体的信息。
在本章节中我们将具体来介绍 HTTP 响应头信息。