本文共 7822 字,大约阅读时间需要 26 分钟。
目录
在网络边缘的端系统中运行的程序之间的通信方式通常可分为两大类:C/S方式、P2P方式。
在客户/服务器(Client/Server, C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。
网络中各计算机的地位不平等,服务器可以通过对用户权限的控制来达到管理客户机的目的,使它们不能随意存储删除数据,或进行其他受限的网络活动。
整个网络的管理工作由少数服务器担当,故网络的管理非常集中和方便。
客户机相互之间不直接通信。
例如,在Web应用中两个浏览器并不直接通信。
对等连接(peer-to-peer, P2P)是指两个主机在通信时并不区分客户和服务器。任意一对计算机,直接相互通信。
其实本质上仍然使用客户/服务器方式,每个结点既作为客户访问其他节点的资源,也作为服务器提供资源给其他节点访问。
缺点:
在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度。适用性:
常见的P2P应用包括PPlive、Bittorrent和电驴等。域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的域名(即 Internet上某一台计算机或计算机组的名称)转换为便于及其处理的IP地址。
注意:域名与主机、IP地址、MAC地址并不一一对应。一个域名可以用多台服务器来分担负载,不同时间可以解析出不同的IP地址。多个域名也可指向同一台主机IP地址。
繁忙的站点被冗余分配在多台Sever上(Server farm)每台Server有不同的IP,多个IP对应同一个域名。当客户请求解析该域名时,DNS Server会返回所有IP地址的集合,但旋转排放IP地址的排列顺序。客户机按最前面的地址发送HTTP请求报文。
因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)。
每个域名都由标号序列组成,而各标号之间用点(".")隔开。
www.cskaoyan.com:com是顶级域名,cskaoyan是二级域名,www是三级域名。
本地域名服务器要DNS查询三次,用根域名服务器返回.com顶级域名服务器地址,再用顶级域名服务器返回cskaoyan二级域名服务器地址,二级域名服务器地址返回www三级域名地址,所以就直接找到了。
域名 | .com | .cskaoyan | www |
---|---|---|---|
域名级别 | 顶级域名 | 二级域名 | 三级域名 |
找到地址 | ↑ | ↑ | ↑ |
域名服务器指针 | 根域名服务器 | 顶级域名服务器 | 二级域名服务器 |
一层管一层:根服务器找顶级域名,顶级服务器找二级域名,二级服务器找三级域名。
当二级域名服务器找到三级域名www.cskaoyan.com时,就不需要三级域名服务器往下找了。
本地域名服务器DNS查询次数与域名等级一致。
根域名服务器:(知道所有顶级域名地址)最高层次的域名服务器,知道所有顶级域名服务器的IP地址。
不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。
本地域名服务器:(储存着常用的域名映射)也称为默认域名服务器。
根顶授本:固定首部。
使用UDP(多对一)(多个主机访问一个域名),所以不能TCP
域名解析是指把域名映射为IP地址(正向解析)或把IP地址映射成域名(反向解析)的过程。
递归查询:
FTP采用客户/服务器的工作方式,它使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个用户进程提供服务。(端口21/20)
注意:在服务器端,控制连接使用TCP的21号端口,数据连接使用TCP的20号端口;
而在客户端,控制连接和数据连接的TCP端口号都是由客户端系统自动分配的。(客户机端口随意,服务器端口固定)
注意:这些说明的协议端口号,都是相应协议的服务器端所使用的端口号,而客户端使用系统自动分配的端口号向这些服务的熟知端口发起连接。
文件传输协议(File Transfer Protocol, FTP)是因特网上使用得最广泛的文件传输协议。
回到等待状态,继续接收其他客户进程的请求。
FTP服务器必须再整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。
FTP在工作时使用两个并行的TCP连接:一个是控制连接(端口号21),一个是数据连接(端口号20)。使用两个不同的端口号可使协议更加简单、更容易实现。
因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外(Out-of-band)传送(即 控制信息不与数据在同一条连接上传输)的。
客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。
注意:在传输文件时还可以使用控制连接(如 客户在传输中途发一个终止传输的命令),因此控制连接在整个会话期间一直保持打开状态。
在传送完毕后“数据传送连接”结束运行。
邮件发送协议:用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,通常使用SMTP。
SMTP采用的是“推”(Push)的通信方式,即 在用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,SMTP客户端主动将邮件“推”到SMTP服务器端。
邮件读取协议:用于用户代理从邮件服务器读取邮件,如 POP3。
POP3采用的是“拉”(Pull)的通信方式,即 用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮件中的邮件。
由于SMTP只能传送一定长度的ASCII码,许多其他非英语国家的文字(如中文)就无法传送,且无法传送可执行文件及其他二进制对象,因此提出了多用途网络邮件扩充(Multipurpose Internet Mail Extensions, MIME)。(相当于一个翻译官,非ASCII码↔ASCII码)
简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。
SMTP采用客户/服务器方式,使用TCP连接,端口号为25。(“推”)
负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。
邮件报文必须使用7-bit ASCII表示。
邮局协议(Post Office Protocol, POP)是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第3个版本POP3。
用户使用POP3协议无法在邮件服务器上建立远程文件夹,对自己的邮件进行重组织,只能将邮件下载到本地计算机进行重组织。
注意:IMAP、POP3协议在传输层是使用明文来传输密码的,并不对密码进行加密。
网际报文存取协议(Internet Mail Access Protocol, IMAP)
万维网(World Wide Web, WWW)是一个资料空间,在这个空间中:一个有用的事物称为一个“资源”,并由一个全域“统一资源定位符”(URL)标识,这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击链接来获取资源。
万维网以客户/服务器方式工作。
浏览器是在用户计算机上的万维网客户程序,而万维网文档所主流的计算机则运行服务器程序,这台计算机称为万维网服务器。
一般形式:<协议>://<主机>:<端口>/<路径>
常见的协议有http、ftp等;主机是存放资源的主机在因特网中的域名,也可以是IP地址;端口和路径有时可以省略。
在URL中不区分大小写。
HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
从层次上看,HTTP是面向事务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件的重要基础。
HTTP是无状态的。也就是说,同一个用户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。
因为服务器并不记得这个曾经访问过的客户,也不记得为该客户曾经服务过多少次。(服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器)
HTTP协议本身是无连接的,虽然它使用了面向连接的TCP向上提供的服务,但通信的双方在交换HTTP报文之前是不需要建立HTTP连接的(只用建立TCP连接)。
注意:是用1个RTT启动TCP连接,虽然是三次握手,但是第三次的时候,携带了数据,所以只是用1个RTT启动TCP连接,另1个RTT发送了请求报文(第三次握手),并接收了响应报文。
连接:
HTML文件是Web页面的基础,它可以包括各种各样的对象,是一个容器对象。如果一个HTML文件包含5个图片,就一共有6个对象。
((1RTT(建立TCP)+1RTT(请求和接收))*(1(一个基本网页)+n(n张图片))=2(n+1)RTT)
注意:这里建立TCP只需要1RTT,因为第三次握手的报文段捎带了客户对HTML文件的请求,所以请求并接收耗时1RTT
非流水线方式:
(1RTT(建立TCP)+1RTT(请求并接收一个基本网页)+nRTT(请求并接收n个基本网页上的图片)=(n+2)RTT)注意:这里建立TCP只需要1RTT,因为第三次握手的报文段捎带了客户对HTML文件的请求,所以请求并接收耗时1RTT
客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍RTT的开销节省了建立TCP连接所需的一个RTT时间。但服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
流水线方式:
(1RTT(建立TCP)+1RTT(请求并接收一个基本网页)+1RTT(请求并接收n个基本网页上的图片)=3RTT)注意:这里建立TCP只需要1RTT,因为第三次握手的报文段捎带了客户对HTML文件的请求,所以请求并接收耗时1RTT
客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档效率。
HTTP的报文结构:
HTTP是面向文本的(Text-Oriented),因此报文中的每个字符都是一些ASCII码串,并且每个字段的长度都是不固定的。
本文图片来源:
转载地址:http://rytkz.baihongyu.com/