码迷,mamicode.com
首页 > Web开发 > 详细

第一章:Http概述

时间:2016-07-17 00:17:00      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

第一章:Http概述


引言

web浏览器、服务器和相关的web应用程序都是通过http相互通信的,http是现代全球英特网中使用的公共语言。

本章主要内容

1、web客户端与服务器是如何通信的
2、资源(表示web内容)来自何方
3、web事务(请求与响应)是怎样工作的
4、http通信所使用的报文(请求报文/响应报文)
5、底层TCP网络协议
6、不同的http协议变体

1.2web客户端与服务器

web内容都是存储在web服务器上的。web服务器所使用的是http协议,因此也经常称web服务器为http服务器。

web客户端:通常可以认为是浏览器(IE、Firefox、Chrome)
http服务器:种类很多(apache、nginx、tomcat等)

客户端服务器模型

技术分享

1.3资源

web服务器是web资源的宿主

web资源分为

1、静态资源(html、txt、png等)
2、动态资源(服务器生成资源比如访问数据库或第三方网关获取的数据)

MIME(媒体类型)

MIME是一种文本标记,表示一种主要的对象类型和一种特定的子类型,中间由一条斜杠(/)分隔

比如:text/html,text/plain,image/jpeg,image/gif

URI(统一资源标识符)

URL(统一资源定位符)也是最最常用的
    通常包含三部分:方案、服务器地址、资源地址
    比如:http://www.baidu.com/index.php
URN(统一资源名)并不流行

1.4事务(http事务)

http事务指的是一次完整的请求响应过程,并不是我们通常理解的数据库事务概念。

1.4.1方法

1.4.2状态码

1.4.3web页面可以包含多个对象


1.5报文

http报文是由一行一行的简单字符串组成的。http报文是纯文本,不是二进制代码,所以很方便对其进行读写。

报文分类

请求报文
响应报文

报文格式

起始行
首部字段(我自己这么叫:请求头/响应头)
主体(请求体/响应体)

备注:起始行和首部都是文本形式而且都是结构化的,而主体不是,主体中可以是任意二进制数据内容当然也可以是文本内容。

请求报文格式

技术分享


响应报文格式

技术分享

1.6连接

1.6.1 TCP/IP

http是个应用层协议.http无需惯性网络通信的具体细节,它把联网的细节都交给了通用可靠的因特网传输协议TCP/IP.

tcp/ip网络模型


技术分享



技术分享

1.6.2 连接

基本的浏览器连接处理
1、浏览器从URL中解析出服务器主机名
2、浏览器将服务器主机名转换为ip地址
3、浏览器将端口号从URL中解析出来
4、浏览器建立一条与web服务器的TCP连接
5、浏览器向服务器发送http请求报文
6、服务器向浏览器发送http响应报文
7、关闭连接、浏览器显示文档浏览器

建立tcp连接三次握手

技术分享


1.7协议版本

http版本主要有
http 0.9:已经不用了
http 1.0:有遗留
http 1.1:目前主流
http 2.0:正在大力推广
备注:我们常听到的https并非指某个版本而是在http协议加上了基于ssl或tls封装。

h**ttps通信原理**

技术分享

1.8web结构组件

代理:位于客户端和服务器之间的http中间实体
缓存:http的仓库,使常用的页面和内容副本可以保存在离客户端更近的地方
网关:连接其它应用程序的特殊web服务器
隧道:对http通信报文进行盲转发的特殊代理
Agent代理:发起自动http请求的半智能web客户端

http协议主要特征

1、支持客户端/服务器端通信模式
2、协议简单方便快速
3、灵活:Http协议允许客户端和服务器端传输任意类型任意格式的数据对象,由Content-Type指定数据类型
4、面向无连接(服务器响应之后立即断开,http1.0之后可以指定为无连接或长连接)
5、面向无状态(客户端和服务器都不记忆状态,客户端传输数据就更少也更简单高效了,与此同时也引出了新的问题。)

总结

本章主要简单介绍了http协议和http协议涉及到的内容。

第一章:Http概述

标签:

原文地址:http://blog.csdn.net/nicewuranran/article/details/51925652

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!