HTTP协议中概念

客户端:通过发送请求获取服务器端资源的Web浏览器等。

TCP/IP协议族:

计算机与网络设备要相互通信,双方必须基于相同的方法。(比如,如何探测到通信目标,由哪一方先发起通信、使用哪种语言进行通信等规则都需要事先确定)

不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们把这种规则成为协议族(protocol)。

把互联网相关联的协议集合起来总称为TCP/IP。

TCP、IP的分层管理:TCP/IP协议族按层次分别分为:应用层、传输层、网络层和数据链路层。

应用层:决定了向用户提供服务时通信的活动  比如:FTP和DNS服务就是其中两类。HTTP协议也处于该层。

传输层:提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。

网络层:网络层用来处理在网络上流动的数据包。  该层规定了数据包传输路径。 

链路层:用来处理连接网络的硬件部分。  比如:控制操作系统和硬件的驱动、网卡、光纤等物理可见部分。

IP(Internet Protocol):IP协议的作用是把各种数据包传送给对方。

为了确保数据传送成功,其中两个重要条件是IP地址和MAC地址。

ARP协议(Address Resolution Protocol):是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

TCP协议位于传输层,提供可靠的字节流服务(Byte Stream Service)。

字节流服务:为了传输方便,将大块数据分割成以报文段(segment)为单位的数据包进行管理。

TCP协议为了更容易传输大数据把数据分割,而且能够确认数据最终是否送达到对方。

三次握手(为了确保数据能够达到目标):

1.发送端发送带有SNY标志的数据包给对方。

2.接收端收到后会回传一个带有SNY/ACK标志的数据包以示传达确认信息。

3.发送端回传一个带ACK标志的数据包,代表握手结束。

若在握手过程中莫名中断,TCP会再次以相同的顺序发送相同的数据包。

DNS(Domain Name System)服务:位于应用层,提供域名和IP地址之间的解析服务

URI(Uniform Resource Identifier,统一资源标识符):由某个协议方案表示的资源的定位标识符。

URL(Uniform Resource Locator,统一资源定位符):使用Web浏览器等访问Web页面时需要输入的网页地址。

URI用字符串标识某一互联网资源,而URL表示资源的地点。URL是URI的子集。

HTTP协议用于客户端与服务器端之间的通信。两台计算机之间使用HTTP协议通信时,一条通信线路上必定有一端是客户端,另一端是服务器端。

就一条通信线路来说,服务器端和客户端的角色是确定的,而用HTTP协议就能够明确区分哪个是客户端,哪个是服务器端。

HTTP协议规定,请求从客户端发出,最后服务器端响应 该请求并返回。换句话说,服务器端在没有接收到请求之前不会发送响应。

HTTP是一种不保存状态的协议,即无状态(stateless)协议。优点:可以更快地处理大量事物,确保协议的可伸缩性。

HTTP使用URI定位互联网上的资源。

告知服务器意图的HTTP方法:

GET:获取资源

POST:传输实体主体

PUT:传输文件(要求在请求报文的主体中包含文件内容,然后保存到URI指定的位置。HTTP/1.1的PUT不带验证机制,存在安全性问题,一般Web不用这个方法)

DELETE:删除文件(同样存在安全性问题)

HEAD:获得报文部首(与GET一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。)

OPTIONS:查询支持的方法

TRACE:追踪路径(发送请求时,在Max-Forwards首部字段填入数值。 每经过一个服务器端就将改数字-1,为0时停止传输,最后接受到请求的服务器端发挥状态码200OK)

CONNECT:要求用隧道协议连接代理

持久连接(HTTP Persistent Connections)

问题:浏览器浏览一个包含多张图片的HTML页面时,每一个图片资源都要建立连接,获取资源,断开连接。这些无谓的TCP连接和断开,增加了通信量的开销。

解决:HTTP/1.1和一部分HTTP/1.0想出了持久连接的方法:只要任意一端没有明确提出断开连接,则保持TCP连接状态。

管线化(pipelining)

问题:浏览器浏览一个包含10张图片的页面,需要等第一张图片加载完,才能加载第二张图片。

解决:管线化技术出现后,可以做到同事并行发送多个请求,而不需要一个接一个地等待响应了。

使用Cookie的状态管理

问题:无法根据之前的状态进行本次请求的处理(不认人)。

解决:通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

原文地址:https://www.cnblogs.com/drake-guo/p/6246544.html