http协议

2020-08-24  本文已影响0人  gidle

一、网络协议基础内容

tcp/ip分层管理

应用层 ->  传输层 ->  网络层 ->  链路层

1.应用层:http协议、dns域解析

2.传输层:tcp或者udp (提供两台计算机之间的数据传输问题)

3.网络层:ip (选择传输路线)

4:链路层: 用来处理连接网络的硬件部分

tcp/ip信息传输流

1.通过tcp/ip协议族进行网络通信时,会通过分层顺序与对方通信

客户端:http客户端  <->  tcp  <->  ip  <->  网络  <->  网络  <->  ip  <->  tcp  <->  http服务端  :服务端

2.发送端在进行层与层之间传输数据时,每经过一层,必定会打上一个该层所属的首部信息。反之,接收端在层与层进行数据传输时,每·经过一层会把对应首部消除。

tcp三次握手

三次握手是由发送端发起的,发送数据前,发送端会给接受端发送一个确认消息,当接受端收到发送端的消息并且作出回应,发送端才开始数据传输。

dns域解析

发送端向dns服务发出请求,获取某个页面的ip地址,dns把地址返回给发送端,发送端拿到ip后向对应ip地址发出请求。

http协议通信流程

客户端:

http协议的职责:生成针对目标web服务器的http请求报文

tcp协议职责:为了方便通信,将http报文分割成报文段(按序号分为多个报文段)

路由器:

ip协议职责:搜索对方地址,一边中转一边传送

服务端:

tcp协议职责:从对方那里接收到报文,重组到达的报文

http协议的职责:对web服务器的请求的内容的处理

二、http协议

1.http的作用

用于客户端和服务端之间的通信,请求访问的一端称为客户端,提供资源访问的一端称为服务端。

2.无状态协议

http是一种不保存状态,即无状态协议。在调用过程中,对请求和响应都不做持久化处理。

优点:更快处理大量事物,确保协议可伸缩性

缺点:某些请求或者登陆状态需要保持状态

3.http的请求方法

get方法:主要用来获取资源,参数包含在url里可见,所以安全性比较差,浏览器对get方法的参数长度有限制

post方法:主要用来获取和传输资源,参数包含在请求体中,且参数长度比get大的多,对外不可见,且相对较为安全

put方法:向服务器提交数据,更新服务器资源

delete:删除服务器数据

head:获取报文首部

4.持久化连接

问题:在http最初的版本中,每进行一次http通信都会断开一次连接,因此当请求过多的时候,都会造成无谓的通信开销

解决:http/1.1 提出了持久连接概念

持久连接:持久连接的好处在于减少tcp连接的重复建立和断开所造成的额外开销,减轻了服务端的开销。另外减少开销的那部分时间,使http请求和响应能够更早的结束,这样web页面的响应速度也显著的提高了。

5.cookie

前面说过,Http是无状态的,通过cookie识别请求来源。

三、http报文

http包含请求和响应报文,通过依赖这两种报文来达到信息资源的请求和响应。

1.请求报文和响应报文

请求报文:

    请求行:请求方法、协议名、版本号、请求url

    请求头部

    空行

    请求体

响应报文:

    状态行:协议吗、版本号、返回状态码

    响应头部

    空行

    响应体

2.报文实例

四、首部分类

1.通用首部字段

请求报文和响应报文都会使用

2.请求首部字段

3.响应首部字段

4.实体首部字段

五、http状态码

状态码表示客户端请求返回的状态

状态码第一位指定响应类别,后两类无分类

状态码类别

常见状态码:

200:ok,请求成功,请求被正常处理。

204:请求成功,但是没有资源返回

301:永久性重定向

302:临时性重定向

403:服务器拒绝访问

404:无法找到请求资源

500:服务错误

六、http缓存处理

1.缓存服务器

缓存服务器是代理服务器的一种,当代理转发从服务器返回资源时,代理资源器会返回一份资源副本。

2.客户端缓存

缓存也可以存在客户端浏览器中,把客户端缓存又称为临时性网络文件。

3.缓存有效期

与网络服务器缓存一样,当判定缓存过期后,会向服务器确认资源有效性。若浏览器判断缓存失效,浏览器会再次请求新资源。

4.缓存相关设置

5.浏览器首次请求和再次请求的执行流程图

1.浏览器首次发送请求

2.浏览器再次发送请求

七、其他问题

1.get和post区别

get的请求参数包含在URL中,对外可见,所以安全性较差。post的请求参数包含在请求体中,对外不可见,相对来说较安全。

浏览器会主动缓存get请求的相关资源,但相对于post请求,浏览器不会主动缓存,除非主动缓存。

get请求的参数长度有限制,post没有。

get请求在浏览器回退时是无害的,但post会重新请求。

get请求的参数会被保存在浏览器历史记录中,post不会。

2.tcp和udp的区别

tcp是面向连接,udp是无连接的,即发送数据之前不需要建立连接。

tcp提供可靠的服务,即tcp连接传输的数据,无差错、不丢失,udp尽最大努力交付,但不保证数据可靠性。

tcp只能一对一,udp可以一对一、一对多、多对一。

上一篇下一篇

猜你喜欢

热点阅读