最后更新:2022-01-17 08:26
有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求,客户之间不直接通信,服务器具有固定的、周知的地址,该地址称为IP地址。
应用程序在间断连接的主机对之间使用直接通信,这些主机被称为对等方。
用操作系统的术语来说,进行通信的实际是进程而不是程序,一个进程可以被认为是运行在端系统中的一个程序,当多个进程运行在相同的端系统上时,它们使用进程间通信机制互相通信,进程间的通信由端系统上的操作系统确定。
通过跨越计算机网络交换报文而相互通信,发送进程生成并向网络中发送报文,接收进程接收这些报文并可能通过回送报文进行响应。
在Web程序中,一个客户浏览器进程与一台Web服务器进程交换报文,在一个
P2P文件共享系统中,文件从一个对等方的进程传输到另一个对等方中的进程。对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程,对于P2P文件共享来说,下载文件的对等方被标识为客户,上载文件的对等方被标识为服务器。
进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。进程可类比一座房子,而它的套接字可以类比与它的门。套接字是同一台主机内应用层与运输层之间的接口,因此套接字被称为应用程序和网络之间的应用程序编程接口。
主机由其IP地址表示,目的地端口号用于这个目的地。
TCP服务模型包括面向连接服务和可靠数据传输服务。
TCP协议还具有拥塞控制机制,这种服务不一定能为通信进程带来直接好处,但能为因特网带来整体好处,当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程。TCP拥塞控制也试图抑制每个TCP连接,使它们达到公平共享网络带宽的目的。
UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP是无连接的,因此在两个进程通信前没有握手过程,是不可靠数据传输服务,当进程将一个报文发送进UDP套接字时,UDP协议不保证该报文将到达接收进程,到达进程的报文也可能是乱序的。
超文本传输协议,它是Web的核心,HTTP由两个程序实现:
一个客户程序和一个服务器程序,客户程序和服务器程序运行在不同的端系统上,通过交换HTTP报文进行会话。Web浏览器实现了HTTP的客户端,Web服务器实现了HTTP的服务端,它用于存储Web对象。
HTTP使用TCP作为它的支撑运输协议。HTTP客户首先发起一个与服务器的TCP连接。一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP。客户端的套接字接口是客户进程与TCP连接之间的门,在服务器端的套接字接口则是服务器进程与TCP连接之间的门。客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文。服务器从它的套接字接口接收HTTP请求报文和向它的套接字接口接口发送HTTP响应报文。
HTTP是一个无状态协议:服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。假定某个特定的客户在短短的几秒内两次请求同一个对象,服务器并不会因为刚刚为客户提供了该对象而不再做出反应,而是重新发送该对象,就像服务器已经完全忘记不久之前所做过事一样。
HTTP既能够使用非持续连接,也能使用持续连,默认是持续连接。
非持续连接,多次的TCP连接耗费时间。
持续连接,能够减少TCP连接的时间耗费。
请求报文
响应报文
常用状态码
由于HTTP服务是无状态的,但是一个Web站点通常希望能够识别用户,可能是因为服务器希望限制用户的访问,或者因为它希望内容与用户的身份联系起来,为此HTTP提供了cookie。
cookie技术的4个组件
从图中可知,cookie可以用于标识一个用户。用户首次访问一个站点时,可能需要提供一个用户标识,在后继会话中,浏览器向服务器传递一个cookie首部,从而向服务器标识了该用户。因此cookie可以在无状态的HTTP之上建立一个用户会话层。cookie常用来做购物车服务。
假设浏览器正在请求对象http://www.someschool.edu/campus.gif
通过使用内容分发网络(CDN),Web缓存器正在因特网中发挥越来越重要的作用。CDN公司在因特网上安装了许多地理上分散的缓存器,因此使大量流量实现了本地化。
为了确保缓存的对象不是陈旧的。条件GET方法包含
电子邮件主要组成部分
邮件发送过程:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在分发到接收方的邮箱中,通过用户代理读取即可。如果发送方的邮箱无法发送到接收方的服务器上,在发送方的服务器中存在一个报文队列,将该报文保持在队列中并在以后尝试再次发送。通常每30分钟左右进行一次尝试。如果几天后仍不能成功,服务器就删除该报文并以电子邮件的方式通知发送方。
SMTP是因特网电子邮件中主要的应用层协议,它使用TCP可靠数据传输服务,是因特网电子邮件的核心。SMTP有两个部分
每台邮件服务器既运行着SMTP的客户端也运行着SMTP的服务端。SMTP一般不使用中间服务器发送邮件。
总流程
SMTP用的是持续连接:如果发送邮件服务器有几个报文发往同一个接收服务器,它可以通过同一个TCP连接发送这些所有的报文。
与HTTP对比
邮件报文格式
典型报文首部
值的注意的是,接收方不能使用SMTP得到报文,因为SMTP是一个堆协议,只能通过引用特殊的邮箱访问协议来解决这个问题,(POP3、IMAP、HTTP)
POP3是一个极为简单的邮箱访问协议,当用户代理打开了到邮箱服务器端口110上的TCP连接以后,POP3开始工作
在事务处理阶段:服务器只会回答+OK和-ERR。
IMAP是一个邮件访问协议,IMAP服务器将每个报文与一个文件夹联系起来,当报文第一次到达服务器的时候,它与收件人的INBOX文件夹相关联,收件人则是能把邮件移到一个新的、用户创建的文件夹中,阅读邮件、删除邮件等,IMAP协议为用户提供了创建文件夹以及将邮件从一个文件夹移到另一个文件夹的命令。IMAP还为用户提供了在远程文件夹的中查询的命令,按指定条件去查询匹配的条件。IMAP还允许用户代理只读取一个报文的报文首部,这在低宽带连接条件非常有用,避免取一些大文件导致响应时间很长。
基于Web的电子邮件,也就是说使用这种服务,用户代理就是普通的浏览器,用户和他远程邮箱之间通过HTTP进行。
人们喜欢便于记忆的主机名标识方式,而路由器则喜欢定长的、有着层次结构的IP地址。为了折中这些不同的偏好,我们需要一种能进行主机名到IP地址转换的目录服务,这也就是域名系统(DNS)的主要任务。
DNS
DNS的重要服务
分布式、层次数据库
本地DNS服务器:每个ISP都有一台本地DNS服务器,当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或者多台其本地DNS服务器的IP地。一般来说,本地DNS服务器邻近主机。
访问顺序:
查询的特点是递归、迭代。
为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛应用了缓存技术。在一个请求链中,当某DNS服务器接收一个DNS回答(主机名-IP地址的映射)时,它能将映射缓存在本地存储器中。每当本地DNS服务器从某个DBS服务器接受到了一个DNS回答,它能够缓存包含在该回答中的任何信息,如果在DNS服务器中缓存了一台主机名/IP地址对,另一个相同的主机名查询达到该DNS服务器时,该DNS服务器就能够提供所要求的IP地址,即使它不是该主机名的权威服务器。DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。本地服务器也能够缓存TLD服务器的IP地址,因而允许本地DNS服务器饶过查询链中的根DNS服务器。事实上因为缓存,大多数DNS查询都绕过了根服务器。
资源记录{Name, Value, Type, TTL}
TTL代表该记录的生存时间,也决定了资源记录应当从缓存中删除的时间
在P2P文件分发中,每个对等方能够向任何其他对等方重新分发它已经收到的该文件的任何部分,从而在分发过程中协助该服务器。到目前为止,最为流行的是P2P文件分发协议是BitTorrent。
本文由 在线网速测试 整理编辑,转载请注明出处。