1.Web及网络基础

1. Web 是建立在 HTTP 协议上通信的
  1. 作为页面的文本标 记语言的 HTML(HyperText Markup Language,超文本标记语言);
  2. 作为文档传递协议的 HTTP ;
  3. 指定文档所在地址的 URL(Uniform Resource Locator,统一资源定位符)。WWW 这一名称,是 Web 浏览器当年用来浏览超文本的客户端应用程序时的名称。现在则用来表示这一系列的集合,也可简称为 Web。
2. TCP/IP协议族

定义:
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之 间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为 协议(protocol)。

通常使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作的。而 HTTP 属于它内部的一个子集

TCP/IP协议族里边最重要的一点就是分层,按层次分为以下4层:应用层,传输层,网络层和数据链路层。(TCP/IP协议分为四层,OSI是七层模型)

应用层:

1. 决定了向用户提供应用服务时通信的活动。
    TCP/IP 协议族内预存了各类通用的应用服务。  
比如:
    FTP(File Transfer Protocol,文件传输协议)
    DNS(Domain Name System,域名系统)服务就是其中两类。
2. HTTP 协议也处于该层。

传输层:

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

网络层:

网络层用来处理在网络上流动的数据包。
数据包是网络传输的最小数据单位。
该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。

链路层(又名数据链路层,网络接口层):

用来处理连接网络的硬件部分。
包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。
硬件上的范畴均在链路层的作用范围之内。

流程

客户端            服务端
应用层: HTTP客户端      HTTP客户端
    ↓↑          ↑↓
传输层: TCP         TCP
    ↓↑         ↑↓
网络层: IP          IP
    ↓↑         ↑↓
链路层:网络         网络
    ↓↑ 网络之间的通信 ↑↓

利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通 信。发送端从应用层往下走,接收端则往应用层往上走。

1 首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。

2 接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,
并在各个报文上打上标记序号及端口号后转发给网络层。

3 在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链路层。
这样一来,发往网络的通信请求就准备齐全了。

4 接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。
当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP请求。
3. 与HTTP协议关系密切的协议

负责传输的IP协议。
按层次分:IP网际协议位于网络层。
作用:是把各种数据包传送给对方。(而要确保确实传送到那里,需要满足各类条件。重要的是IP地址和MAC地址)IP地址指明了节点被分配的地址,MAC地址是网卡所属的固定地址。

ARP协议通过MAC地址就行通信。IP间的通信以来MAC地址。ARP协议是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。
在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能获悉很粗略的传输路线。这种机制称为路由选择(routing)

确保可靠性的TCP协议
按层次分:TCP协议位于传输层
作用:提供可靠地字节流服务。是指:为了方便传输,将大块数据分割成以报文段(segment)为的单位的数据包进行管理。而可靠地传输服务是指:能够把数据准确可靠地传给对方。

为了准确无误地将数据送达目标出,TCP协议采用了三次握手策略。

握手过程中使用了TCP的标志(flag)---SYN(synchronize)和ACK(acknowledgement)
1. 发送端:首先放松一个带SYN标志的数据包给对方。
2. 接收端:收到后,回传一个带有SYN/ACK标志的数据包表示传达确认信息。
3. 发送端:再回传一个带ACK标志的数据包,代表“握手”结束。

负责域名解析的DSN服务
按层次分:DNS服务和HTTP协议一样位于应用层的协议。
作用:提供域名到IP地址之间的解析服务。DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。

URI和URL
URI(Uniform Resource Identifier,统一资源标识符)   
URL(Uniform Resource Locator,统一资源定位符)
URI就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。
采用 HTTP 协议时,协议方案就是 http。除此之外,还有 ftp、mailto、telnet、file 等。
http://user:pass@www.example.com:80/dir/index.html?uid=1#ch1
http 协议方案名
user:pass 登录信息(认证)
www.example.com 服务器地址
80 服务器端口
dir/index.html 带层次的文件路径
uid = 1 查询字符串
#ch1 片段标识符

2. 简单的HTTP协议

  1. HTTP协议和TCP/IP协议族内的其他众多的协议相同 用于客户端和服务器之间的通信。(应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器端角色)

  2. 通过请求和响应的交换达成通信。(请求必定由客户端发出,而服务器端回复响应)

     HTTP协议规定:请求从客户端发出,最后服务端响应该请求并返回。换句话说,肯定是从客户端开始建立通信的,服务器端在没有接收到请求之前不会响应。
    

    请求报文:①请求方法 ②请求URI ③协议版本 ④可选的请求首部字段 ⑤可选的内容实体

    响应报文:①协议版本 ②状态码 ③原因短语 ④可选的响应首部字段 ⑤ 可选的实体

  1. HTTP是不保存状态的协议(为了实现保持状态功能,引入了Cookie技术)

     协议本身不保留之前一切的q请求或响应的报文的信息,这是为了更加快速的处理事物,确保协议的可伸缩性,而特意把http协议设计成如此简单的
    
  2. 请求URI定位资源

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

  3. 告知服务器意图的HTTP方法

     GET:获取资源。GET用来请求访问已被URI识别的资源。
     POST:传输实体主体。
     PUT:传输文件
     HEAD:获得报文首部。HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。
     DELETE:删除文件
     OPTIONS:询问支持的方法
     TRACE:追踪路径
     CONNECT:要求用随到协议连接代理
    
  4. 持久连接:建立一次TCP连接后进行多次请求和响应的交互

    • 持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。
    • 持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载
    • HTTP/1.1中,所有的连接默认都是持久连接。
  5. 管线化(pipelining):持久连接使得多数请求以管线化方式发送成为可能。

  6. Cookie管理状态信息:服务器端发送的响应报文有Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发哦送出去。

3. HTTP报文内的HTTP信息

1.HTTP报文
```
用于HTTP协议交互信息被称为HTTP报文。请求端的HTTP报文叫做请求报文,响应端的叫做响应报文。 
大致分为 报文首部和报文主体两块。两者由最初出现的空行划分。通常,并不一定有报文主体。
```
2.报文结构
报文:报文首部  空行 报文主题

请求报文:                    响应报文:
请求行                            状态行
请求首部字段                       响应首部字段
通用首部字段                    通用首部字段
实体首部字段                    实体首部字段
其他                        其他
空行                        空行
报文主体                        报文主体

请求行:包含请求的方法,请求URI和HTTP版本 状态行: 包含表明响应结果的状态码,原因短语和HTTP版本 首部字段:包含请求和响应的各种条件和属性的各类首部(一般有4种首部:通用首部,请求首部,响应首部,实体首部)

3.编码提升传输速率
HTTP 在传输数据时可以按照数据原貌直接传输,
但也可以在传输过程中通过编码提升传输速率。
通过在传输时编码,能有效地处理大量的访问请求。
但是,编码的操作需要计算机来完成,因此会消耗更多的 CPU 等资源。

报文主体和实体主体的差异
通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

发送多种数据的多部分对象集合

1.multipart/form-data  
在 Web 表单文件上传时使用。

2. multipart/byteranges
状态码 206(Partial Content,部分内容)响应报文包含了多个范围的内容时使用。

内容协商返回最合适的内容

Accept
Accept-Charset
57Accept-Encoding
Accept-Language
Content-Language

4. 返回结果的HTTP状态码

状态码的职责是当客户端想服务器端发送请求时,描述返回的请求结果。

1XX        信息性状态码         接收的任务正在处理
2XX        成功状态码         请求正常处理完毕
3XX        重定向状态码         需要进行附加操作以完成请求
4XX         客户端错误状态码             服务器无法处理请求
5XX        服务器错误状态码             服务器处理请求出错

2XX 的响应结果表明请求被正常处理

200 OK
204 No Content
206 Partial Content

3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求

301    Moved Permanently  永久性重定向
302    Found 临时性重定向
303    See Other  请求对应的资源存在着另一个URI,应使用GET方法定向过去请求的资源
304  Not Modified  客户端发送附带条件的请求,服务器端允许访问资源,但未满足条件。

304 虽然被划分在 3XX 类别中,但是和重定向没有关系。
附带条件的请求是指采用 GET 方法的请求报文中包含 If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since 中任一首部。

4XX 的响应结果表明客户端是发生错误的原因所在

400 Bad Request 表示请求报文中存在语法错误
401 Unauthorized
403 Forbidden
404 Not Found

5XX 的响应结果表明服务器本身发生错误

500 Internal Server Error  服务器端在执行请求时发生了错误
503 Service Unavailable  服务器暂时处于超负载火正在进行停机维护,现在无法处理请求

5. 与HTTP协作的Web服务器

1.通信数据转发程序 :代理、网关、隧道
  1. 代理

    代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。

    使用代理服务器的理由有:利用缓存技术(稍后讲解)减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的,等等。

    代理有多种使用方法,按两种基准分类。一种是是否使用缓存,另一种是是否会修改报文。

    缓存代理
    代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本(缓存)保存在代理服务器上。当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。

    透明代理
    转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理(Transparent Proxy)。反之,对报文内容进行加工的代理被称为非透明代理。

  2. 网关

    网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。

    网关的工作机制和代理十分相似。而网关能使通信线路上的服务器提供非 HTTP 协议服务。

    利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。

  3. 隧道

    隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。

    隧道可按要求建立起一条与其他服务器的通信线路,届时使用 SSL 等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信
    隧道本身不会去解析 HTTP 请求。也就是说,请求保持原样中转给之后的服务器。隧道会在通信双方断开连接时结束。

results matching ""

    No results matching ""