http-http协议

来源:互联网 发布:itc智能网络广播系统 编辑:程序博客网 时间:2024/05/29 12:30

HTTP协议

HTTP: HyperText Transport Protocol, 超文本传输协议, 超文本在网络之间(b/s)传输过程中应该遵循的协议(规则)

数据在网络之间的传输: 理论上基于的不是HTTP协议, 底层需要基于TCP/IP协议

TCP/IP : 负责电脑连接

HTTP: 负责数据传输


HTTP协议特点

 

优点:

支持客户/服务器模式: HTTP协议默认是基于B/S架构来使用(web), 但是HTTP协议不限制只有B/S架构可以使用, C/S架构只要能够按照协议要求发送协议,也可以实现HTTP协议应用(比较底层,socket编程, windows下telnet软件)

 

简单快速: 只需请求方法和路径, 浏览器在使用HTTP协议进行处理的时候, 只需要提供两个内容就可以完成: 请求方法(GET/POST), 请求内容所在的路径(URI)

 

灵活: 任意数据, HTTP协议允许传送任何数据, 字符数据,二进制数据(图片,视频,文件等)

 

缺点:

 

无连接: 每次连接只处理一个请求, 浏览器发起一个请求之后, 服务器只能响应一次, 如果浏览器还想获取数据,需要重新发起请求.

 

无状态: 事务处理没有记忆能力, 浏览器多次请求服务器, 服务器不认识

 

HTTP协议分类

协议通常是用来约束双方的, 协议对彼此的约束可能不一样(也有可能有一样的内容)

 

HTTP协议: 因为参与者有两部分(浏览器和服务器)

HTTP协议分为两个部分:

第一部分: 约束浏览器, HTTP请求

第二部分: 约束服务器, HTTP响应

 

HTTP请求

HTTP请求: 是浏览器用来寻找服务器的,发送请求给服务器的一些约束条件

如:http://www.itcast.cn/gz/php/index.php

 

HTTP请求分为四个部分: 请求行, 请求头, 空行, 请求数据

 

 

1.请求行: 属于协议的第一行, 独占一行, 分为三个部分, 使用空格分隔

请求方式    请求路径(URI)    协议版本

GET                         /gz/php/index.php   HTTP/1.1

 

2.请求头: 协议内容, 一个协议占一行,但是可以有N个协议: 格式是:  协议项 : 协议内容

Host: www.feng.com


常见的请求头有哪些?


Host: 主机地址, 告诉服务器去对应的哪个文件夹取数据

accept-encoding: 可以接收的编码格式(不是字符集), gzip等

Referer: 引用的,表示当前网页是由哪个网页产生过来的(上一个访问界面)

Connection: 保持连接, 请求与响应的过程是一组, 响应的内容比较大的时候,周期会比较长(kee-alive, 是HTTP/1.1与HTTP/1.0的区别)

accept-language: 可以接收的语言类型, zh-cn中文, en英文等

Cookie: cookie本身是一种技术(会话技术) ,同时也是一种数据, 将浏览器上保存的服务器数据携带给服务器

user-agent: 用户代理, 是浏览器的基本信息(内核等)

Accept: 浏览器可以接收的数据类型(MIME类型),  如text/html, image/png等

content-length(post): 只有POST提交的时候才会有, 提交的数据的长度(字节)

if-modified-since(get): 一种缓存, 发送当前缓存的文件的时间给服务器

content-type(post)): 内容的发送形式, 只有post提交的时候才会有

 

3.空行: 用来结束请求头

 

4.请求数据: POST才会有的内容

 

 

HTTP响应

HTTP响应是服务器发送给浏览器的约束: 告诉浏览器怎么处理.

 

HTTP响应也分为四个部分: 响应行(状态行)   响应头 空行  响应主题(数据HTML)

 

1.状态行: 用来描述服务器对数据处理的状态的, 分为三个部分

协议版本     状态码     状态描述

HTTP/1.1      200       OK            (表示服务器正确响应)

 

2.响应头: 与请求头几乎一样(内容不同)

常见的响应头有哪些?

Server: 服务器基本信息

Date: 当前处理的时间

last-modified: 与请求中的if-modified-since对应, 告诉浏览器当前请求的脚本的最后修改时间

content-length: 数据的总长度

content-type: 数据类型(MIME类型)

Location: 重定向, 告诉浏览器重新发起请求(立即执行)

Refresh: 重定向, 刷新, 告诉浏览器重新发起请求(等指定时间之后)

content-encodeing: 与accept-encoding, 数据编码格式(不是字符集)

cache-control: 缓存控制,告诉浏览器要不要缓存

No-ached: 不要缓存

Cached: 缓存起来

 

3.空行: 告诉浏览器响应头结束了

 

4.响应主题: HTML数据

 

状态码

状态码: 服务器对处理的结果的数字描述, 浏览器就会根据状态码来决定自己的处理方式.

 

状态码分为五类:

1XX: 表示服务器正在处理,还没有处理完

2XX: 表示服务器已经正确处理完

3XX: 重定向,表示服务器要求浏览器重新请求

4XX: 浏览器错误: 浏览器发送的请求,服务器不能正确理解

5XX: 服务器错误: 服务器处理不了

 

常见的代码信息

 

200: OK,服务器处理完成

302: Found, 找到新的界面要访问: Location重定向

303: See Other, 已经转移到别的地方

304: Not Modified,没有修改,告诉浏览器读取本地缓存

400: Bad Request, 请求坏了, 服务器不认识

403: Forbidden, 没有权限访问

404: Not Found,找不到

502: Bad Gateway ,网关错误, 没有正确的从上游服务器得到结果


0 0
原创粉丝点击