把互联网想关联的协议集合起来总称为TCP/IP协议
TCP/IP 协议族按层次分为:应用层,传输层,网络层,数据链路层
决定了向用户提供应用服务时通信的活动。
TCP/IP 协议族内预存了各类通用的应用服务,比如:FTP 和 DNS 服务就是其中两类
HTTP 协议也处于该层
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议)
网路层用来处理网络上流动的数据包。数据包是网络传输的最小数据单位,该层规定了通过怎样的路径(所谓的传输路线)到达对方的计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
用来处理连接网络的硬件部分。包括操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分,硬件上的范畴均在链路层的作用范围之内。
利用TCP/IP 协议族进行通信时,会通过分层顺序与对方进行通信,发送端从应用层往下走,接收端则从应用层往上走。
发送端在层与层之间传输数据时,没经过一层时必定会被打上一个该层所属的首部信息,反之,接收端在层与层之间传输数据时,每经过一层时会把对应的首部消去。- 这种把数据信息包装起来的做法称为封装。
按层次分,TCP位于传输层,提供可靠的字节流服务(字节流:为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理)。
TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。
TCP 协议采用了三次握手策略。用TCP协议把数据包送出去以后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达,握手过程使用了TCP的标志:SYN(synchronize)和 ACK(acknowledgement)。
发送端首先先发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息,最后,发送端再回传一个带 ACK 标志的数据包,代表握手结束。若捂手过程中在某个阶段莫名中断,TCP协议会在此以相同的顺序发送相同的数据包
DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议,它提供域名到IP地址之间的解析服务。
浏览一个网址的全过程:
URL 是访问web页面需要输入的网页地址
URI 是由某个协议方案表示的资源的定位标示符,协议方案是指访问资源所使用的协议类型名称
URI 用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置),可见 URL 是 URI 的子集。
HTTP请求报文由:请求方法、请求URI、协议版本、可选的请求首部字段和内容实体 构成
HTTP 协议自身不对请求和响应之间的通信状态进行保存。目的是为了更快的处理大量事务,确保协议的可伸缩性。
后来有一些场景需要保存客户端的状态,比如登录状态,于是引入了 Cookie 技术。有了 Cookie 再用HTTP协议通信,就可以管理状态了。
HTTP 初始版本,每进行一次HTTP通信就要断开一次TCP连接,当年数据小没问题,但随着HTTP的普及,HTTP所传输的内容愈来愈多,每次请求都会造成无谓的TCP连接建立和断开,增加通信量的开销。
为解决上述TCP连接的问题,HTTP/1.1 和 一部分 HTTP/1.0 相处了持久连接的方法,特点是:只要任意一端没有明确的提出断开连接,则保持TCP连接状态。
持久连接使得多数请求以管线化(pipelining)方式发送成为可能,以前发送请求后需等待并受到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。这样就能做到同时并行发送多个请求。而不需要一个接一个地等待响应了。
请求报文和响应报文的首部内容由以下数据组成:
请求行
包含用于请求的方法,请求 URI 和 HTTP 版本
状态行
包含响应结果的状态码,原因短语和HTTP版本
首部字段
包含请求和响应的各种条件和属性的各类首部
一般有四种首部:通用首部,请求首部,响应首部和实体首部
其他
可能包含HTTP的RFC 里未定义的首部(Cookie等)
是HTTP通信中的基本单位,由8位字节流组成,通过 HTTP 通信传输
作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成
HTTP 报文的主体用于传输请求或响应的实体主体。通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。
类别 | 原因短语 | |
---|---|---|
1xx | Infomational(信息性状态码) | 接收的请求正常处理 |
2xx | Success(成功状态码) | 请求正常处理完毕 |
3xx | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4xx | Client Error(客户端状态错误码) | 服务器无法处理请求 |
5xx | Server Error(服务器状态码) | 服务器处理请求出错 |
一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输速率
代理是一种由转发功能的应用程序,扮演了位于服务器和客户端中间人的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端
分缓存代理(缓存从源服务器获取的数据)和透明代理(对请求不做任何加工)
网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它像自己拥有资源的源服务器一样对请求进行处理。
工作机制和代理类似,而网关能够使通信线路上的服务器提供非HTTP协议服务。利用网关能够提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。
隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。
可按要求建立一条与其他服务器的通信线路,届时使用 SSL 等加密手段进行通信。隧道的目的是确保客户端与服务器进行安全的通信。
HTTP 协议的请求和响应报文中必含HTTP首部,首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。
HTTP请求报文由:方法,URI,HTTP版本,HTTP首部字段等部分构成。
HTTP响应报文由:HTTP版本,状态码(数字和原因短语),HTTP首部字段等3部分构成。
首部字段由首部字段名和字段值构成,中间用冒号 :分割。
例如HTTP首部中以 Content-Type 这个字段来表示报文主体的对象类型。
####加密处理防止被窃听
HTTP 协议中没有加密机制,但可以通过和SSL(Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全传输层协议)的组合使用,加密HTTP的通信内容。
用SSL建立安全通信线路之后,就可以在这条线路上进行HTTP通信的。与SSL组合使用的HTTP被称为 HTTPS(HTTP Secure,超文本传输安全协议)
通过使用证书,以证明通信方就是意料中的服务器。
通常,HTTP直接和TCP通信,当使用 SSL 时,则演变成先和 SSL 通信,再由SSL 和 TCP 通信了。
SSL 是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。可以说 SSL 是当今世界上应用最为广泛的网络安全技术。
HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
使用SSL速度不可避免的会变慢:1.通信慢 2.大量消耗CPU和内存等资源,导致处理速度变慢。
认证的几种常见方式:
HTTP/1.1 使用的认证方式:
使用HTTP协议存在如下瓶颈:
Ajax(Asynchronous JavaScript and XML, 异步JavaScript与XML技术) 是一种有效利用JavaScript 和 DOM(Document Object Model) 的操作,以达到局部Web页面替换加载的异步通信手段。由于它只更新一部分界面,响应中传输的数据量会因此而减少。
通常,服务端接收到请求,在处理完毕后就会立即返回响应,但为了实现推送功能,Comet会先将响应置于挂起状态,当服务端有内容更新时,再返回该响应。因此,服务端一旦有更新,就可以立即反馈给客户端。
SPDY 没有完全改写HTTP协议,而是再TCP/IP的应用层与传输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SDPY规定通信中使用SSL。
SDPY的设计图示
使用 SDPY后,HTTP协议额外获得以下功能:
通过单一的TCP连接,可以无限制处理多个HTTP请求。所有请求的处理都在一条TCP连接上完成,因此TCP处理效率得到提高
服务器可以主动提示客户端请求所需的资源。
Web 浏览器与 Web 服务器之间全双工通信标准。一旦Web服务器与客户端之间建立起 WebSocket 协议的通信连接,之后所有的通信都依赖这个专用协议进行,通信过程中可互相发送JSON,XML,HTML或图片等任意格式的数据。
WebSocket 通信的主要特点:
CSS(Cascading Style Sheets,层叠样式表),可以指定如何展现HTML内的各种元素,属于样式表标准之一。
通过调用客户端脚本语言JavaScript,实现对HTML的Web页面的动态改造。利用 DOM(Document Object Model,文档对象模型)可指定欲发生动态变化的HTML元素。
HTTP 不具备必要的安全功能
对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。
攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。
对本无意公开的文件目录通过非法截断其目录路径后,达成访问目的的一种攻击。
算出密码,突破认证
一种让运行中的服务呈停止状态的攻击。
单纯来讲就是发生大量合法请求,服务器很难分辨何为正常请求,何为攻击请求,因此很难防止DoS攻击。
多态计算机发起的DoS攻击成为 DDoS攻击(Distributed Denial of Service attack)。