web及网络基础
网络基础TCP/IP
??通常使用的网络是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。 ??像这种把与互联网相关联的协议集合起来总称为TCP/IP
TCP/IP的分层管理
??TCP/IP协议族按层次分别分为4层:应用层、传输层、网络层和数据链路层。它的好处在于把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动。 应用层 ??决定了向用户提供应用服务时通信的活动、TCP/IP协议族内预存了各类通用的应用服务。比如FTP(文本传输协议)和DNS(域名系统),HTTP协议也处于该层。 传输层 ??传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。有TCP(传输控制协议)和UDP(用户数据报协议) 网络层 ??用来处理在网络上流动的数据包。规定了通过怎样的路径到达对方计算机,并把数据包传给对方。 链路层 ??又名数据链路层,网络接口层。用来处理连接网络的硬件部分。
TCP/IP通信传输流
??客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在每个报文打上标记序号及端口号后转发给网络层。网络层(IP协议)增加作为通信目的地的MAC地址后转发给链路层。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。
IP、TCP、DNS
IP协议 ??IP网际协议位于网络层。IP协议的作用是把各种数据包传送给对方,要完成传送的两个重要条件是IP地址和MAC地址。IP地址指明了结点被分配到的地址,MAC地址是网卡所属的固定地址,IP地址可以变换,但MAC地址基本不会更改。 ARP协议 ??一种解析地址的协议,根据通信方的IP地址就可以反向查出对应的MAC地址。 TCP协议 ??TCP位于传输层,提供可靠的字节流服务。字节流服务是为了更容易传输大数据,把大数据进行分割成报文段为单位的数据包。可靠的传输服务是指把数据准确可靠的传给对方。为了确保数据到达目标,TCP协议采用了三次握手策略 DNS服务 ??DNS服务是和HTTP协议一样位于应用层的协议。他提供域名到IP地址之间的解析服务。DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。
URI(统一资源标识符)和URL(统一资源定位符)
??URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置) URI格式
简单的HTTP协议
HTTP用于客户端和服务器端之间的通信
??在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端是服务器端。
通过请求和响应的交换达成通信
??HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。也就是说通信是从客户端开始建立的。 ??请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。 ??响应报文基本上由协议版本、状态码(表示请求成功或者失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
HTTP是不保存状态的协议
??在HTTP协议这个级别,协议对于发送过的请求或响应都不做持久化处理。(HTTP协议本身不具备保存之前发送过的请求或响应的功能)。为了实现期望的保持状态功能,引入了Cookie技术。
告知服务器意图的HTTP方法
持久连接节省通信量
??持久连接:只要一端没有明确提出断开连接,则保持TCP连接状态。好处在于减少了TCP连接的重复建立与断开造成的额外开销,减轻了服务器端的负载。 ??管线化技术:不等待响应,直接发送下一个请求。
使用Cookie的状态管理
??Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。服务器端检查收到的Cookie来得到之前的状态信息。
HTTP报文内的HTTP信息
HTTP报文
??用于HTTP协议交互的信息被称为HTTP报文。客户端的HTTP报文叫做请求报文,服务器端的叫做响应报文。 ??**格式 ** :HTTP报文大致可分为报文首部和报文主体两块。通常并不一定有报文主体。
请求报文以及响应报文的结构
??请求行:包含用于请求的方法,请求URI和HTTP版本 ??状态行:包含表明响应结果的状态码,原因短语和HTTP版本。 ??首部字段:包含表示请求和响应的各种条件和属性的各类首部。 ??其他:可能包含HTTP的RFC里未定义的首部(Cookie等)。
编码提升传输速率
??HTTP早传输数据时可以按照数据原貌直接传输,也可以通过编码提升传输速率。但是会消耗更多的CPU资源等。 报文主体和实体主体的差异 ??报文:HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输; ??实体:作为请求或响应的有效载荷数据被传输,其内容有实体首部和实体主体组成。 ??通常报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。 压缩传输的内容编码 ??内容编码指明应用在实体内容上的编码格式,并保持试题信息原样压缩,由客户端接受并解码。 ??常见的编码方式:gzip、compress、deflate、idenity(不进行编码) 分块传输编码 ??在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示界面,这种把实体主体分块的功能称为分块传输编码。 获取部分内容的范围请求 ??指定范围发送的请求叫做范围请求,解决了下载过程中断网后需要重新下载的问题。 内容协商 ??访问相同URI的Web界面时,会显示对应的英文版或中文版的Web页面。这样的机制称为内容协商。有三种类型:服务器驱动协商(客户端以请求的首部字段为参考自动处理)、客户端驱动协商(用户手动选择或使用JS脚本)、透明协商(由客户端和服务器端自行协商的方法)
HTTP状态码
??HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。
返回请求结果
??状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。
2XX成功
??表明请求被正常处理了。 200 ??表示从客户端发送过来的请求在服务器端被正常处理了 204 ??表示服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。 206 ??表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。
3XX重定向
??表明浏览器需要执行某些特殊的处理以正确处理请求。 301 ??永久性重定向,该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。 302 ??临时性重定向,该状态码表示请求的资源被分配了新的URI,希望用户(本次)能使用新的URI访问。 303 ??该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。 304 ??该状态码表示客户端在发送附带条件的请求时,服务器端允许请求访问资源,但未满足访问条件的情况。 307 ??临时重定向。该状态码与302 有着相同的含义。区别在于307会遵照浏览器标准,不会从POST变成GET。
4XX客户端错误
??表明客户端是发生错误的原因所在。 400 ??该状态码表示请求报文中存在语法错误。 401 ??该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。 403 ??该状态码表明对请求资源的访问被服务器拒绝了。 404 ??该状态码表明服务器上无法找到请求的资源,也可以在服务器端拒绝请求且不想说明理由时使用。
5XX服务器错误
??响应结果表明服务器本身发生错误。 500 ??该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的Bug或某些临时的故障 503 ??该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
Web服务器
用单台虚拟主机实现多个域名
??通过使用虚拟主机功能可以实现在物理层只有一台服务器时实现具有多台服务器的功能。 ??在访问这样的服务器时,由于一台服务器上托管了多个域名,在请求发送到服务器时以IP地址进行访问,需要清楚想要访问哪个域名,所以在发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI。
通信数据转发程序:代理、网关、隧道
代理 ??代理是一种有转发功能的应用程序,接收由客户端发送的请求并转发给服务器,同时也接受服务器返回的响应并转发给客户端。 ??代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器。代理不会改变URI。 ??持有资源实体的服务器被称为源服务器。 ??使用代理服务器的理由:利用缓存技术减少网络宽带的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的。 ??代理分类:按两种基准分类 ,一种是是否使用缓存,另一种是是否会修改报文。缓存代理: 代理服务器转发响应时,缓存代理会预先将资源的副本(缓存)保存在代理服务器上,当再次接收到相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前的缓存作为响应返回。透明代理: 转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理,反之则被称为非透明代理。 ??注: 每次通过代理服务器转发请求或响应时,会追加写入Via首部信息。 网关 ??网关是转发其他服务器通信数据的服务器。利用网关可以由HTTP请求转化为其他协议通信,是通信线路上的服务器提供非HTTP协议服务。同时能够在客户端与网关至今的通信线路上加密以确保连接的安全。 隧道 ??隧道的目的是确保客户端能与服务器进行安全的通信。隧道本身不会去解析HTTP请求,也就是说请求保持原样中转给之后的服务器,在通信双方断开连接时结束。
保存资源的缓存
??缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可以减少对源服务器的访问,因此节省了通信流量和通信时间。 ??缓存具有有效期限的限制,同时客户端也能进行缓存,但依然存在资源的有效期限。
HTTP首部
??HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器端分别处理请求和响应提供所需要的信息。 HTTP请求报文 HTTP响应报文
HTTP首部字段
传递信息
??使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的的语言、认证信息等内容。
首部字段结构
4种HTTP首部字段类型
通用首部字段 ??请求报文和响应报文都会使用的首部。 请求首部字段 ??从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。 响应首部字段 ??从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。 实体首部字段 ??针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
确保Web安全的HTTPS
HTTP缺点
- 通信使用明文,内容可能会被窃听
- 不验证通信双方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
通信使用明文可能会被窃听
通信加密 ??在HTTP协议中没有加密机制,但可以通过和SSL(安全套接层)或TLS(安全层传输协议)的组合使用,加密HTTP的通信内容。 内容加密 ??由于HTTP协议中没有加密机制,所以对HTTP协议传输的内容本省加密。即对HTTP报文里包含的内容进行加密处理。
HTTP+加密+认证+完整性保护=HTTPS
??HTTPS并不是一种新协议,而是HTTP通信接口部分采用SSL和TLS协议代替。通常HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信。简言之,所谓HTTPS,其实就是身披SSL协议外壳的HTTP;
加密技术
共享秘钥加密 ??加密和解密同用一个秘钥的方式称为共享秘钥加密,也被称为对称秘钥加密; 公开秘钥加密 ??公开秘钥加密使用一对非对称的密钥。一把叫做私有密钥,另一把叫做公开秘钥。使用公开密钥加密,发送密文的一方使用对方的公开密钥进行加密处理,对方收到加密信息后,在使用自己的私有密钥进行解密。 HTTPS采用混合加密机制 ??HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
|