客户端:经过发送请求获取服务器端资源的Web浏览器等。浏览器
TCP/IP协议族:安全
计算机与网络设备要相互通讯,双方必须基于相同的方法。(好比,如何探测到通讯目标,由哪一方先发起通讯、使用哪一种语言进行通讯等规则都须要事先肯定)服务器
不一样的硬件、操做系统之间的通讯,全部的这一切都须要一种规则。而咱们把这种规则成为协议族(protocol)。网络
把互联网相关联的协议集合起来总称为TCP/IP。less
TCP、IP的分层管理:TCP/IP协议族按层次分别分为:应用层、传输层、网络层和数据链路层。大数据
应用层:决定了向用户提供服务时通讯的活动 好比:FTP和DNS服务就是其中两类。HTTP协议也处于该层。操作系统
传输层:提供处于网络链接中的两台计算机之间的数据传输。在传输层有两个性质不一样的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。3d
网络层:网络层用来处理在网络上流动的数据包。 该层规定了数据包传输路径。 代理
链路层:用来处理链接网络的硬件部分。 好比:控制操做系统和硬件的驱动、网卡、光纤等物理可见部分。orm
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信息来控制客户端的状态。