HTTP协议:Hyper Text Transfer Protocol
应用层:Application Layer
传输层:Transmission Layer
网络层:Network Layer
数据链路程:Data Link Layer
物理层:Physical Layer
Http属于应用层的一种协议
1.HTTP是一种纯文本协议。控制信息时纯文本的额,但携带的数据信息不做要求。
传输的数据 =控制信息(主要格式)+携带的负荷信息(html\css\js)
URL
1.URL属于URI的一种具体实现(Unique Resource Location唯一的资源路径)
一个完整的URL,一定描述网络上的唯一的一个资源的
URL不仅仅可以服务与HTTP协议
完整的URL由:
1.协议号(http://)
2.定位主机=ip/域名+端口(其中端口可以省略)
3.路径(/index.*可以省略,写作/)
4.查询字符串
5.片段标识符
web服务器所在=web服务器所在的主机(IP地址/域名)+web服务器所占用的端口
查询字符串(query string):跟在路径后面,以问号开头(?),后面是一组key=value的形式,之间用and(&)符分割分割——主要应用与动态资源请求资源固定,但内容不固定
片段标识符(segment):用来在同一资源,定位当前显示位置的——#跟一个id
绝对路径:从树的根结点出发,进行路径的描述就是绝对路径。
URL总结:
1.完整
其中,协议号,web服务器地址、路径不能没有的
查询字符串、片段标识符可以没有
2.不完整
1》可以省略协议号(跟着当前资源协议走)
2》可以省略协议号+web服务器地址(跟着当前资源+web服务器地址走)
3.绝对路径vs相对路径
绝对路径:从根开始的路径(/开头)
相对路径:从当前位置开始的路径(不以/开头)
1》根的位置
2》当前位置
3》对于.和..的理解
URL中的编码问题:由于URL中能出现的而字符是有限的,所以当出现URL中不允许出现的字符是,会被URL编码
请求(request)代表,从浏览器到服务端
应答(response)代表,从服务端到浏览器的
从请求的角度,来思考,我们需要告诉服务器什么信息
1.要东西or给东西
2.明确那个资源(URL或者路径)
3.协议版本(0.9、1.0、1.1..)
4.关于资源的具体描述(元信息)出版商、怎么送货。。
5.具体的资源内容
HTTP请求=请求的方法(request metnod/method)(1)
+资源URLorPath(2)
+协议版本(3)——(1234)是协议的控制信息
+请求头(4)
+正文/请求体(5)——协议的有效负荷信息
标准格式:Method空格Path空格协议号\r\n
key1:空格value1\r\n
key2:空格value\r\n
...
\r\n
请求体
请求方法
GET:获取资源
POST:传输实体主体
区别:语义上不同 GET:获取 POST:提交
由于语义上有区别,所以表现在很多现象上有区别
1.GET请求不携带请求体(正文)的;POST请求允许携带请求体,但是否携带看具体情况
2.GET请求具备幂等性;POST不具备幂等性
幂等性:假设在没有其他第三方在动服务器资源的前提下:GET请求多次发送结果一致;POST请求第二次请求可能得到和第一次不一样的结果。
3.GET请求是缓存友好的,POST请求不允许缓存
两种途径发送POST请求:
1》通过<form method ="get">..</form>
<form method ="post">..</form>
发送post请求
2》通过js代码发送post请求
请求的知识点:
1》格式:
请求行 (方法+路径+协议)+请求头(K-V直到空行)+请求体(可以不存在)
2》请求方法
GETvsPOST
HTTP知识点浮现的逻辑:必须要有web服务器,才能让网络上的气态服务i去也能放问你自己的web资源,通信使用HTT协议
HTTP协议:请求-响应周期:只能访问一个web资源