Tags: 计算机网络
两种主流 应用程序体系结构:
客户-服务器体系结构(CS)
有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求。客户之间不直接通信。该服务器具有固定的 IP 地址。P2P 体系结构
应用程序在间断的主机对之间进行直接通信,这些主机对被称为对等方。客户和服务器进程
网络应用程序有成对的进程组成,在两个不同端系统上的 进程,通过跨越计算机网络交换 报文(message)。通常将两个进程之一标识为 客户,另一个标识为 服务器。 在给定的一对进程之间的通信会话场景中,发起通信的进程被标识为 客户,在会话开始时等待联系的进程是 服务器。进程与计算机网络之间的接口
进程必须通过一个称为 套接字(socket) 的软件接口向网络发送和接收报文。在发送端的应用程序将报文推进该套接字,在套接字另一侧,运输层协议负责使该报文进入接收进程的套接字。套接字也被称为应用程序和网络之间的应用程序编程接口。开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层端几乎没有控制权,除了:1. 选择运输层协议(如果可供选择的话);2. 也许能设定几个运输层参数,如最大缓存和最大报文段长度。进程寻址
一台主机的进程向另一台主机的进程发送分组,接收进程需要一个地址。为了标识该进程,需要定义两种信息: 主机的地址:用 IP地址 标识; 定义在目标主机中的接收进程的标识符:用目的地 端口号 标识。TCP 服务
TCP 服务模型包括: 面向连接的服务:在应用层数据报文开始流动之前,TCP 让客户和服务器互相交换运输层控制信息,即握手阶段。之后,一条 全双工 的 TCP 连接 就在两个进程的套接字之间建立了。应用程序结束发送报文时,则拆除该连接。可靠的数据传送服务:通信进程能够依靠 TCP,无差错、按适当顺序交付所有发送的数据。TCP 协议还具有 拥塞控制机制: 当发送方和接收方之间的网络出现拥塞时,TCP 的拥塞控制机制会抑制发送进程。TCP 拥塞控制机制也试图限制每个 TCP 连接,使他们达到公平共享网络带宽的目的。这种服务不一定为通信进程带来直接好处,但是能为因特网带来整体好处。UDP 服务
UDP 是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP 是无连接的,因此在两个进程通信之前无握手。UDP 协议提供一种不可靠数据传送服务,也就是说,当进程将一个报文发送进 UDP 套接字时,UDP 并不 保证该报文到达接收进程。不仅如此,到达接收进程的报文也可能是乱序到达的。UDP 没有包括拥塞控制机制,所以 UDP 的发送端可以用它选定的任何速率向其下层(网络层)注入数据。因特网运输协议所不提供的服务
TCP 能提供可靠的数据传输服务,也能通过 SSL 来加强以提供安全服务。今天的因特网通常能够为时间敏感应用提供满意的服务,但不能提供任何定时或带宽保证。非持续连接
应用程序在采用非持续连接的情况下,客户的每个请求都要建立一个单独的 TCP 连接。简单估算一下从客户请求 HTML 文件到客户收到文件为止所花费的时间。 下图中,往返时间(RTT):一个短分组从客户到服务器然后再返回客户所花费的时间。 因此,粗略的讲,总的响应时间就是两个 RTT 加上服务器传输 HTML 文件的时间。持续连接
在采用持续连接的情况下,服务器再发送响应后保持该 TCP 连接打开。再相同的客户与服务器之间的后续请求和响应报文能够通过相同的连接进行传送。一般来说,如果一条连接经过一定的时间间隔(一个可配置的时间间隔)仍未被使用,HTTP 服务器就关闭该连接。HTTP 的默认模式是使用带流水线的持续连接。第一行叫做 请求行,其后继的行叫做 首部行。
请求行有三个字段: 方法字段:包括 GET、POST、HEAD、PUT 和 DELETE。绝大部分报文使用 GET 方法。URL 字段HTTP 版本字段首部行 Host: www.xinxin.org 指明了对象所在的主机。首部行 Connection: close 要求服务器发送完请求的对象后就关闭该连接。首部行 User-agent: Chrome/57.0 用来指明用户代理,即向服务器发送请求的浏览器的类型。首部行 Accept-language: ch 指明了用户想要得到该对象的中文版本。下图是请求报文的通用格式
首部行后面的 实体体(Entity body),在使用 GET 方法时为空,使用 POST 方法时才使用该实体体。
HTTP 响应报文 对前一个栗子的响应报文: HTTP/1.1 200 OK Connection: close Date: Tue, 09 Aug 2011 15:44:04 GMT Server: Apache/2.2.3 (CentOS) Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT Content-Length: 6821 Content-Type: text/html (data data data data data ......) 响应报文分为三个部分: 一个初始 状态行 状态行有三个字段:版本协议字段、状态码和相应状态信息。下表包括了一些常用的状态码和相关短语 状态码状态信息含义200OK请求成功,信息在返回的响应报文中301Moved Permanetly请求的对象已经被永久转移了,新的 URL 定义在相应报文的 Location:首部行中。客户软件将自动获取新的 URL。400Bad Request一个通用差错代码,指示该请求不能被服务器理解404Not Found请求的文档不在服务器上505HTTP Version Not Supported服务器不支持请求报文使用的 HTTP 协议版本 6 个 首部行 就是字面意思,参考上一个栗子的解释。实体体下图是响应报文的通用格式
cookie 的工作过程如下图
分布式、层次数据库
有三种类型的 DNS 服务器:根 DNS 服务器