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
响应头信息。