http协议是一种超文本传输协议,属于应用层协议,底层使用tcp协议用作支持,默认端口号为80
http报文:
http报文由请求行,请求头部,请求数据三部分组成
请求行:
请求方法:
请求对应的url 和http版本号
请求头部:
包含若干个属性,格式为属性名:属性值,服务器根据这些获得客户端信息
报文体:通过param1=val1¶m2=val2将数据变成格式化串
http请求报文一些头部信息
accept:告诉服务器客户端接受什么类型的相应
referer:表示请求是从哪个url过来的
Cache-Control 表示请求相应的内容是否要在客户端进行缓存
http相应报文 有相应行,相应头,相应体,组成
1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急…
2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。
相应头属性:
Cache-Control 相应输出到客户端后,服务器告诉客户端如何控制相应内容的缓存;
- 设置Cache-Control: max-age=3600 ,在3600秒之内,你再次访问这个页面,则从缓存中读取,这只是一种建议,对于做不做,有客户端决定,如果是支持http的客户端,就应该这样做
303 返回码,重定向,Location 将目标的url放入该字段
页面输入http网站后的过程
- 输入网址
- Dns域名解析
- 建立tcp连接
- 发送http请求
- 响应请求,返回请求报文
- 浏览器进行页面展示
- 断开tcp
http特点
1.支持客户/服务器模式
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.http是无状态:无状态是指不记录之前干了什么,如果后面的信息需要前面的信息则需要重传
为了解决这种无状态的问题,引入了cookie
cookie其实就是一个记录,可以记录我们都干了些什么