HTTP协议

一. HTTP简介

HTTP(Hypertext transfer protocol)超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相同行,通过互联网传文档的数据传送协议.

HTTP可以使浏览器更加高效,使网络传输减少,他不仅保证了计算机正确快速的传输文档,还确定传输文档中的那一部分,以及那部分内容首先显示等.

HTTP协议是一个应用层协议,有请求和响应构成,是一个标准的客户端服务器模型,HTTP协议是一个无状态的协议.

HTTP默认的端口号是80,HTTPS的端口号是443.

二. URL和URI

(一)URI:统一资源标识符

Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的,URI一般由三部组成:

访问资源的命名机制

存放资源的主机名

资源自身的名称,由路径表示,着重强调于资源。

(二)URL:统一资源定位符

URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:

协议(或称为服务方式)

存有该资源的主机IP地址(有时也包括端口号)

主机资源的具体地址。如目录和文件名等

三. HTTP请求

HTTP的请求报文由3部分组成,分别是:请求行,请求头,请求正文

1. GET方法

//请求行 格式:请求方式 请求地址  协议名称/版本

GET /http/userLogin.php?username=wanlum&password=123456 HTTP/1.1

//请求头

Host: localhost

Connection: keep-alive

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: http://localhost/day02-http&ajax/4-code/02-http/userLogin.html

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.8

//请求正文

username=json&password=123456

2. POST方法

//请求行 格式:请求方式 请求地址  协议名称/版本

POST /http/userLogin.php HTTP/1.1

//请求头

代表主机名称

Host: localhost

代表是否开启长链接

Connection: keep-alive

代表请求内容的长度(中文一个占三个字节)

Content-Length: 31

是否开启缓存    开启缓存 但是立即删除

Cache-Control: max-age=0

域名的源

Origin: http://localhost

安全请求

Upgrade-Insecure-Requests: 1

用户代理

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

告诉服务器请求内容是表单的url的编码

Content-Type: application/x-www-form-urlencoded

浏览器告诉服务器我能接受的内容的类型

image/png image/jpg  audio/mp3  我们把这样的格式  大类型/具体类型  叫做MIME类型

作用是告诉对方用什么样的方式去解析内容

Accept: text/html,application/xhtml+xml,application/xml;q=0.9, image/webp,image/apng,*/*;q=0.8

当前的页面是从那个页面跳转过来的()

Referer: http://localhost/http/userLogin.html

浏览器告诉服务器能接受的内容的压缩格式

Accept-Encoding: gzip, deflate,

浏览器告诉服务器我所能接受的语言

Accept-Language: zh-CN,zh;q=0.8

//请求正文

username=json&password=123456

四. HTTP响应

HTTP的请求报文由3部分组成,分别是:请求行,请求头,请求正文

//响应行 格式:协议/版本号 状态码  状态码描述

HTTP/1.1 200 OK

//响应头

Date: Fri, 07 Jul 2017 06:44:11 GMT

Server: Apache/2.2.21 (Win32) PHP/5.3.10

网站用什么技术开发的

X-Powered-By: PHP/5.3.10

响应内容的长度

Content-Length: 60

长连接的时间  5s以后算超时  超时之后 开始尝试链接 尝试一次max-1  直到100被减完了 就不再尝试了

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

服务器告诉浏览器我给你的内容的格式

Content-Type: text/html

//响应正文

Array ( [username] => json[password] => 123456 )

五. HTTP状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息--表示请求已接收,继续处理

2xx:成功--表示请求已被成功接收、理解、接受

3xx:重定向--要完成请求必须进行更进一步的操作

4xx:客户端错误--请求有语法错误或请求无法实现

5xx:服务器端错误--服务器未能实现合法的请求

常见状态码:

200 OK                        //客户端请求成功

400 Bad Request              //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized            //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden                //服务器收到请求,但是拒绝提供服务

404 Not Found                //请求资源不存在,eg:输入了错误的URL

500 Internal Server Error    //服务器发生不可预期的错误

503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

六. HTTP请求方法

GET    请求指定的页面信息,并返回实体主体。

HEAD    类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。

POST    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT    从客户端向服务器传送的数据取代指定的文档的内容。

DELETE      请求服务器删除指定的页面。

CONNECT    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS    允许客户端查看服务器的性能。

TRACE    回显服务器收到的请求,主要用于测试或诊断。

七. 关于HTTP协议的面试题

1. 请简要描述在客户端浏览器中输入域名之后,到用户看到页面的整个过程.

(1) 将域名发送到DNS服务器,DNS服务器解析域名,DNS服务器将域名解析成IP地址

(2) DNS服务器将IP地址传入到浏览器中.

(3) 浏览器通过收到的IP地址,给Web服务器发送请求.

(4) Web服务器解析收到的请求信息,将响应信息传递回浏览器

2. HTTP的三次握手.

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

3. GET方法和POST方法的区别.

GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,而POST方法会把数据放在请求正文中.

GET提交的数据大小有限制,最多只有1024个字节,而POST方法体检的数据没有限制.

GET方法提交数据,因为通过URL传递关系,所以不能传递例如用户密码和用户名等涉及用户隐私的信息. 相对的,POST方法比GET方法安全.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容