本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-04-18
客户/服务器 (C/S)结构网络应用:最主要的特征是通信只在客户端与服务器之间进行,客户与客户之间不进行直接通信。
P2P(peer to peer)点对点结构:任何一个对等端既可以主动发起请求另一个对等端的服务,也可以被动地为其他对等端提供服务,每个对等端都同时具备C/S应用的客户与服务器特征,是一个服务器与客户的结合体,对等端之间直接通信。
混合结构:既有中心服务器的存在,又有对等端(客户)间的直接通信。
C/S通信基本原理:服务器端运行的是服务器进程,被动地等待客户请求服务;客户端运行的是客户进程,主动发起通信,请求服务器提供服务。应用进程间遵循应用层协议交换应用层报文。
从进程通信的角度上讲,客户端和服务端只与一次进程通信过程相关,提出通信请求的一方是客户端,接受请求的一方是服务端,但在下一次通信过程中,两者的地位是可以改变的。
普通用户并不习惯或愿意记忆和直接使用IP地址来表示一个主机,而是更喜欢为服务器主机起一个更容易读懂、有一定自然语言含义的名字,这个名字就是主机的域名。
层次树状结构的命名方法:
1、国家顶级域名,nTLD,如cn表示中,us表示美国。
2、通用顶级域名,gTLD,com(公司和企业)、net(网络服务机构)、org(非盈利性组织)、edu(专用的教育机构)、gov(政府部门)、mil(专用的军事部门)、int(国际组织)。
3、基础结构域名,只有一个arpa,用于反向域名解析,又被称为反向域名。
域名解析:将域名映射为IP地址的过程。
域名服务器:为了实现域名解析,需要建立分布式数据库,存储网络中域名与IP地址的映射关系数据,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务。
域名服务器分类:根域名服务器、顶级域名服务器、权威域名服务器、本地域名服务器。
根域名服务器只有13个,分别是a一直到m(前13个字母),如a.rootservers.net、b.rootservers.net、…、m.rootservers.net。
大多数根域名服务器都是由独立的多台物理服务器构成的服务器集群,而有的根域名服务器则是由分布在不同地理位置的多台镜像服务器组成的。
代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送查询主机或服务器。
只是将下一步需要查询的服务器告知查询主机或服务器。
只要本地域名服务器不能直接响应解析结果,则都需要从根域名服务器开始查询。
但是根域名服务器数量有限,如果每次都去查询根域名服务器,会导致其压力过大,影响查询时间,所以需要域名服务器增加缓存机制,即在为客户做出相应的同时,每个域名服务器都会将域名解析过程中解析到的结果存储到域名数据库中。或者通过在本地域名服务器中存储顶级域名服务器信息,使得在域名解析过程中跳过根域名服务器的查询,直接查询顶级域名服务器,提高效率。
概念:超文本传输协议,定义浏览器如何向web服务器发送请求以及web服务器如何向浏览器进行响应。
版本: HTTP1.0/HTTP1.1
非持久连接:串行方式请求每个对象,且每次都需要新建立TCP连接。HTTP1.0默认为非持久连接。
并行连接:并行方式请求每个对象,每个请求建立一个TCP连接。如果一个HTML需要3张图片,则在建立TCP连接请求web页面(HTML文件)之后(需要2个RTT),然后同步建立3条连接,然后并行请求3个图像。需要10个RTT,需要建立4次TCP连接。在非持久连接上优化,但是每次请求都需要建立连接。
持久连接分为两种,HTTP1.1默认为持久连接。
非流水式持久连接:只建立一次TCP连接请求web页面,依次请求页面所需资源。
流水式持久连接:只建立一次TCP连接请求web页面,同时并行请求多个所需资源。
如果希望结束持久连接,可以在报文中显示添加connection: close
首部行,意味着如果客户端在收到的响应报文中没有包含这个首部行,则继续维持连接为打开状态。还有一种情况,如果超过一定时间,就可能主动关闭。
请求报文:从客户端向服务器发送请求报文
响应报文:从服务器到客户端的回答。
HTTP典型的请求方法有GET、HEAD、POST、OPTION、PUT等。
HTTP是无状态的协议,不保存关于客户的任何信息。但是,在某些场景需要保存用户的状态,比如网站不是每次打开都需要重新登录的。
Cookie中文名称为小型文本文件,指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据。
弥补了HTTP协议无状态的不足,有利于进行用户跟踪并提供针对性的服务,但也带来一些安全问题。
1、服务器生成Cookie,发送给浏览器。
2、浏览器将Cookie保存到某个目录下的文本文件内
3、下次请求同一网站时就发送该Cookie给服务器
4、服务器根据Cookie值检索用户历史行为数据
电子邮件系统主要包括邮件服务器、简单邮件传输协议(SMTP)、用户代理和邮件读取协议等。
SMTP(简单邮件传输协议)是Internet电子邮件中的核心应用层协议,实现邮件服务器之间 或 用户代理到邮件服务器之间的邮件传输,使用传输层TCP实现可开数据传输,端口25。
通过3个阶段的应用层交互完成邮件的传输,分别是握手阶段、邮件传输阶段、关闭阶段。
SMTP基本交互方式是SMTP客户端发送命令,命令后面可能携带参数,STMP服务器对命令进行应答。
1、电子邮件包括首部、空白行、主体3部分。
首部包括:From(谁发的)、To(发给谁)、Cc(抄送给谁)、Subject(主题)、MIME-Version(MIME版本)、Content-Transfer-Encoding(编码方式)、Content-Type(文件类型)、Date(发送日期)、Reply-To(对方回信所用的地址)。
2、MIME(多用途互联网邮件扩展)
可以让原来只支持传输二进制的电子邮件系统能够支持多媒体内容的传输。将非7位ASCII码文本转换为7位ASCII码内容,然后再利用SMTP进行传输。
1、第三版邮局协议 (Post Office Protocol-Version3) POP3
也是一种客户端/服务端的方式,客户端发送指令给服务端,告诉服务器需要读取的邮件,将邮件下载到本地主机,在本地对邮件进行操作。无法影响到服务器上邮件的原本,方便离线环境。
2、互联网邮件访问协议(Internet Mail Access Protocol)IMAP
直接通过指令操作邮件服务器上的邮件,不管是删除还是其他操作都是改变了邮件服务器上邮件的状态,是同步的。另一个重要特性是允许用户代理只读取邮件的部分内容,比如像先看一下邮件主题后再觉得是否下载整个邮件。
3、HTTP
用户代理就是浏览器,在用户代理与邮件服务器之间的邮件收发都是采用HTTP协议的,而邮件服务器之间的发送依然是采用SMTP协议的。优点是用户无需下载专用的电子邮件代理软件,使用普通的web浏览器即可,方便用户。
文件传送协议(FTP):在互联网的两个主机间实现文件互传的应用层协议。利用TCP协议建立可靠数据传输。
也是使用C/S模式,采用控制连接(21端口)传输控制命令,数据连接(20端口)传输文件内容。
为什么采用两种连接?
因为文件上传或下载的过程是持续性的,如果只采用一种连接,那么用户在传输过程或者下载过程下暂停或者取消,需要等到上传和下载完成之后,那么将毫无意义,所以需要控制连接,用于在客户与服务器之间传输控制信息,它在整个会话期间一直保持打开。
P2P应用的优势:充分聚集利用了端系统(对等方主机)的计算能力以及网络传输带宽,对服务器依赖小。
在文件分发、文件共享应用中,如果采用C/S模式,当用户规模过大时,所有的用户都向服务器发送请求,服务器需要为每一个请求创建一个副本,那么对服务器压力就会比较大,用户等待的时间也会比较长,且越晚请求的等待时间越长,而使用P2P的方式,随着用户规模的扩大,后续的用户可以从其他不同的用户那里获取副本的部分,最终拼接成一个完整的文件,这样就充分利用了对等方主机的上行带宽。
应用层只关注应用层代码的设计和编写,而数据的传输则可以调用传输层提供的网络服务来完成,这其中就需要利用Socket来请求底层协议的服务。
Socket接口模型:
网络应用进程通信时需要通过API接口请求底层协议的服务,可以创建数据报类型套接字SOCK_DGRAM
(面对UDP接口)、流式套接字SOCK_STREAM
(面对TCP接口)和原始套接字SOCK_RAW
(面对网络层协议,如IP、ICMP接口)。