计算机网络应用是运行在计算机网络环境下的分布式软件系统。
1.C/S结构,即客户端 / 服务器结构。
2.C/S结构的网络应用是最典型、最基本的网络应用。
3.原理:网络通信的双方分别为客户程序和服务器程序,服务器程序先运行,做好接受通信的准备,客户程序后运行,主动请求与服务器通信。
4.C/S网络应用中,服务器程序通常运行在高性能的服务器计算机上,服务器计算机通常也简称服务器。
5.服务器计算机一般具有固定的通信地址(例如IP地址),且长期运行,以便服务器软件能被随时请求。
6.C/S网络应用最主要的特征就是通信只在客户与服务器之间进行,客户与客户之间无法进行直接通讯。
7.在C/S结构网络应用中,主动发起通信的一方就是客户,被动接受通信的就是服务器。
1.在文件分发,文件共享和视频流等应用中,P2P应用表现出优越的性能。
2.在纯P2P网络通信中,没有一直在运行的传统服务器。所有通信都是在对等的通信双方之间直接进行,通信双方也没有传统意义上的客户和服务器之分,地位对等。
3.对等端软件通常运行在普通用户的计算设备上,可以动态地直接与其他对等端进行通信。
4.P2P结构中,任何一个对等端都可以随意请求另一个对等端提供服务,也可以为其他对等端提供服务。因此,对等端同时具备客户和服务器的特征。
5.对于纯P2P结构,没有中心服务器,对等对等端都是动态加入或离开。
6.P2P应用要解决的关键问题是:新加入的对等端需要知道哪些对等端在线以及在线对等端提供哪些服务。
1.混合结构网络应用是C/S应用和P2P应用相结合,既有中心服务器的存在,又有对等端之间的直接通信。
2.原理:客户通过C/S方式向服务器注册信息,申明可提供的服务或资源,并通过服务器发现其他在线客户,检索其他客户可提供的服务及资源。
1.网络应用的本质是运行在不同主机上的进程之间的通信。
2.任何类型的网络应用,基本通信方式都是基于C/S结构
3.在C/S结构的网络应用中,服务端运行的是服务器进程,被动地等待客户请求服务。客户端运行的是客户进程,主动发起通信,请求服务器提供服务。
4.应用进程间遵循应用层协议,交换引用层报文。
5.应用层协议定义了应用进程之间交换的报文类型,报文构成部分的具体含义以及交换时序等内容,即语法,语义和时序等三要素内容。
6.典型的网络应用编程接口是套接字,即Socket.
7.应用进程可以通过创建套接字实现与底层协议接口,并进一步通过套接字实现进程与底层协议之间的报文交换。因此,套接字是每个应用进程与其他应用进程进行网络通信时,真正收发报文的通道。
8.一个应用进程可以创建多个套接字与同一个或不同的传输层协议进行接口。
9.对于一个传输层协议,需要为与其接口的的每个套接字分配一个编号,表示该套接字,该编号称为端口号。
10.web服务器的默认端口是80,这部分端口号称为熟知端口号
11.IP地址是Internet的网络层地址,用于标识一个主机或路由器接口。
12.网络应用需要使用传输层提供端对端的传输服务。
13.Internet传输层能提供的服务只有两种,面向连接的可靠字节流传输服务和无连接的不可靠数据传输服务,分别对应传输层的TCP和UDP。这两类都不提供延时保障服务或带宽保障服务。
14.TCP服务模型包括面向连接服务和可靠数据传输服务。
(1)面向连接的服务:传送之前,TCP客户与服务器交换信息完成握手,建立一条双全工的TCP连接,报文发送结束时拆除。
(2)可靠的数据传输服务:应用进程依靠TCP,实现端对端的无差错,按顺序交付所有发送数据的服务。
15.UDP是一种不提供传输服务保障的轻量级传输层协议。
16.UDP是无连接的,所以两个进程通信前没有握手。当进程将一个报文通过UDP套接字传送时,UDP并不保证该报文将到达接收进程,到达接收进程的次序也是不确定的。
17.Internet传输层的TCP和UDP均不能提供端到端吞吐量以及延时保障服务。
1.用户通过利用客户端软件实现网络应用,这些客户端软件称为用户代理
2.用户通过用户代理软件使用网络应用时需要指定期望访问的服务器的IP地址和端口号
3.实现将域名映射为IP地址的过程,称之为域名解析
4.DNS为实现域名解析,需建立分布式数据库,存储网络中域名与IP地址的映射关系数据。
1.DNS按层次结构进行组织,并且该结构层次与域名的结构相对应。
2.因特网采用了层次树状结构的命名方法,任何一个连接在因特网上的主机或路由器,都可以有一个唯一的层次结构的域名。
3.域名的结构由标号序列组成,各标号之间用点隔开。
4.域名结构:三级域名.二级域名.顶级域名
5.国家顶级域名nTLD,例如cn-中国,us-美国,uk-英国
6.通用顶级域名gTLD,例如com-公司和企业,net-网络服务机构,org-非营利组织,edu-专用的教育机构,gov-专用的政府部门,mil-专用的军事部门,int-国际组织
7.基础结构域名:仅有一个,即arpa,用于反向域名解析,因此又叫反向域名
1.一个服务器所负责管辖的范围叫做区,每一个区设置相应的权威域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
2.DNS服务器的管辖范围,是以区为单位。
3.域名服务器根据其主要保存的域名信息以及在域名解析过程中的作用,分为根域名服务器,顶级域名服务器,权威域名服务器和中间域名服务器4类。
4.任何一台主机在网络地址配置时,都会配置一个域名服务器作为默认域名服务器。这个默认域名服务器通常称为本地域名服务器,是主机进行域名查询过程中首先被查询的域名服务器
5.根域名服务器是最重要的域名服务器,每个根域名服务器都知道所有的顶级域名服务器的域名和IP地址。
6.因特网上共有13个不同IP地址的根域名服务器,分别使用a~m命名。
7.顶级域名服务器,即TLD服务器,负责管理在该顶级域名服务器注册的所有二级域名。顶级域名的名称对应一个域名的最后一个名字,是对一个行业或者地区的命名。
8.权威域名服务器,负责一个区的域名服务器,保存该区中所有的主机的域名与IP地址的映射。
1.域名解析分为递归解析和迭代解析
2.提供递归查询服务的域名服务器,可以代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送给查询主机或服务器。
3.提供迭代查询服务的域名服务器,不会代替查询主机或其他域名服务器,进行进一步的查询,只是将下一步要查询的服务器告知查询主机或服务器。
4.通常本地域名服务器都提供递归查询服务器。
5.仅提供迭代查询服务的域名服务器不会代理客户的请求,而是将最终结果或者下一步要查询的域名服务器直接响应给查询客户。
6.根域名服务器通常只提供迭代查询服务。
7.无论是递归解析还是迭代解析,只要本地域名服务器不能直接影响解析结果,则都需要从根域名服务器开始查询。
1.万维网,即WWW应用,诞生于20世纪90年代,也称Web应用。
2.Web应用主要包括Web服务器,浏览器和超文本传输协议(HTTP)等部分。
3.浏览器就是Web应用的客户端软件,即Web应用的客户代理,运行在用户计算机上。
4.Web服务器是Web应用的服务器软件,存储并管理用户请求的Web页面,或称Web文档。
5.Web应用是典型的客户/服务器网络应用,客户与服务器之间的交互基于应用层协议HTTP.
6.Web页面是由对象组成的,一个对象通常分别存储一个文件。
7.每个URL地址主要由两部分组成,存放对象的服务器主机域名或IP地址和对象的路径名。
8.URL寻址方式确保万维网上的每个Web页或对象都有一个唯一的标识符。
1.Http是Web应用的应用层协议,定义浏览器如何向Web服务器发送请求以及Web服务器如何向浏览器进行响应。
2.目前Web应用最广泛的Http是HTTP/1.1版本
3.HTTP基于传输层协议TCP传输报文。
4.浏览器在向服务器发送请求之前,首先需建立TCP连接,然后才能发送HTTP请求报文,并接受HTTP响应报文。
5.根据HTTP使用TCP连接的策略不同,分为非持久连接的HTTP和持久连接的HTTP
(1)非持久连接的HTTP
非持久连接是指,HTTP客户与HTTP服务器建立连接后,通过该连接发送HTTP请求报文,接收HTTP响应报文,然后断开连接。
HTTP/1.0默认使用非持久连接
针对HTTP/1.0的优化技术:并行连接,持久连接
并行连接:通过建立多条并行的TCP连接,并行发送HTTP请求和并行接收HTTP响应。
持久连接:重用已建立的TCP连接发送新的HTTP请求和接收HTTP响应,从而消除新建TCP连接的时间开销。
(2)并行连接
通过并行连接加速或优化HTTP是比较典型的技术手段,几乎当前的浏览器都支持并行连接,但是对并行连接数有限制。
并行连接并不一定可以减小延迟,例如客户主机接入链路带宽受限。
并行连接也会增加客户端主机的开销。
(3)持久连接
重用已建立的TCP连接发送新的HTTP请求和接收HTTP响应,这种TCP连接称为持久连接
建立一个连接,获取多个对象
根据持久连接传输多个对象的策略不同,可分为两种工作方式,即非流水方式持久连接和流水方式持久连接。
非流水方式持久连接:也称非管道式持久连接,客户端在通过持久连接接收到前一个响应报文后,才能发出下一个对象的请求报文。
流水方式持久连接:也称管道方式持久连接,客户端在通过持久连接接收到前一个对象的响应报文之前,连续依次发送对后续对象的请求报文,然后再通过该连接依次接收服务器发回的响应报文。
HTTP/1.1默认使用流水方式持续连接
HTTP/1.1使用持久连接的主要规则与约束:
1)在最后一条报文请求中使用 connection:close首部行,可以结束持久连接
2)如果服务器接收到的报文中包含connection:close首部行,则用户不能再在这条TCP连接上发送更多请求。
RTT指的是以一次请求-响应的往返时延。
3)每个TCP持久连接只适用于一跳传输
6.HTTP报文由起始行,首部行,空白行和实体主体4部分组成。
(1)起始行和首部行是ASCII文本,由CRLF(回车换行)终止
(2)空白行只有CRLF
(3)主体可以是文本或二进制数据
(4)HTTP报文起始行和空白行不可缺少,首部行可以是零行或多行。
7.HTTP报文分为两类:请求报文和响应报文**,
请求报文由客户端发送给服务器
响应报文由服务器发送给客户端
请求报文与响应报文都是ASCII值
请求报文与响应报文最主要的区别是起始行不同。
请求报文起始行为:<方法><协议版本>
响应报文起始行为:<协议版本><状态码><短语>
首部行是需要传递的参数
7.HTTP典型的请求方式
(1)GET,请求读取由URL所标识的信息或资源,最常见,
(2)HEAD,请求读取由URL所标识的信息的首部,例如搜索引擎使用
(3)POST,向服务器添加信息
(4)OPTION,请求一些选项的信息
(5)PUT,在指明的URL下存储一个文档
1.HTTP服务器在向客户发送被请求的文件后,不保存任何关于该客户的状态信息。所以HTTP被称为无状态协议。
2.Cookie机制主要用于用户跟踪,称为小型文本文件。
3.Cookie是指网站为辨别用户身份,进行会话跟踪而存储在用户本地终端上的数据
4.Cookie由服务器生成,发送给浏览器
5.Cookie技术主要包括4部分内容
(1)HTTP响应报文中的Cookie头行:Set-Cookie
(2)用户浏览器在本地存储,维护和管理的Cookie文件
(3)HTTP请求报文中的头行:Cookie
(4)网站在后台数据库中存储、维护Cookie信息
6.Cookie的大小一般不能超过4K
7.Cookie可以实现在无状态的HTTP之上建立用户会话
8.Cookie文件可以保存在客户端计算机的硬盘中,也可以保存在客户端计算机的内存中
9.保存在硬盘中的Cookie通常叫永久Cookie,可以设置有效周期,浏览器关闭不影响。
10.保存在内存中的Cookie随着浏览器的关闭会失效,消失。
1.电子邮件系统主要包括邮件服务器,简单邮件传输协议(SMTP),用户代理和邮件读取协议等。
2.邮件服务器的功能是发送和接收电子邮件,同时还需要向发信人报告邮件传送情况,是电子邮件体系结构的核心
3.每个用户的邮箱都有一个唯一的电子邮件地址,格式为:邮箱名@邮箱所在主机的域名或IP
4.邮件服务器维护一个外出邮件队列,队列中暂存注册用户等待向外发送的邮件
5.邮件服务器之间发送和接收邮件是按照C/S工作。
6.实现邮件服务器间发送邮件的应用层协议是SMTP
7.典型的邮件读取协议有POP,IMAP等
8.邮件发送协议的端口为25。POP3接收邮件的端口为110
9.SMTP使用传输层TCP协议进行可靠数据传输
10.过程:握手,传输信息,断开
1.SMTP是Internet电子邮件中核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。
2.SMTP使用传输层TCP实现可靠数据传输,从发送方向接收方发送邮件。
3.发送邮件时,SMTP客户端首先请求与服务器端的25号端口建立TCP连接,建立连接后即开始SMTP应用层交互,完成邮件发送。
4.SMTP基本交互方式是SMTP客户端发送命令,命令后边可能携带参数,SMTP服务器对命令进行应答。
5.SMTP的特点
(1)SMTP只能传输7位ASCII码文本内容
(2)SMTP传送的邮件内容中不能包含CRLF.CRLF,因为该信息用于表示文件内容的结束。
(3)SMTP是推动协议
(4)SMTP使用TCP连接是持久的。
1.一份邮件包括首部,空白行,内容三部分
2.首部行的主要内容
(1)To:收件人地址,一个或多个
(2)Subject:邮件主题,反映邮件的主要内容
(3)Cc:表示抄送给某人
(4)From:发件人地址
(5)Date:发信日期
(6)Reply-To:回信地址
2.MIME是指多用途互联网邮件扩展
3.MIME定义了将非7位ASCII码内容转换为7位ASCII码的编码规则。
1.邮件读取协议是以拉动的方式运行
2.POP3是一个简单邮件读取协议,使用传输层TCP,
3.POP3客户端运行在用户代理中,POP3服务器运行在邮件服务器上,默认端口为110.
4.用户使用POP3协议读取邮件时,一旦将邮件下载到本地主机,就可以在本地建立邮件文件夹,并将下载的文件放到该文件夹中。
5.POP3协议不具备支持用户创建远程文件夹并为邮件指定文件夹的功能,但是IMAP可以。
6.IMAP的全名叫互联网邮件访问协议。
7.HTTP是Web应用的应用层协议,当使用基于Web的邮件时,HTTP便被用于邮件的读取,作为邮件读取协议使用。
1.文件传输协议,即FTP,是在互联网的两个主机间实现文件互传的网络应用,其应用层协议也叫FTP
两种连接,两个端口 21,20
2.FTP可以减少或消除在不同操作系统下处理文件的不兼容性,屏蔽各计算机系统的细节,适合在网络中任意异构计算机之间传输文件
3.FTP是典型的客户端/服务器网络应用,采用C/S方式实现客户与服务器之间的双向文件传输。
4.FTP的客户与服务器之间的交互以及文件传输过程均采用TCP的可靠传输服务。
5.过程:用户使用FTP服务时,首先客户进程要请求FTP服务器的21号端口建立一个TCP连接,称为控制连接,然后开始TCP会话。
6.服务器进程用自己传送数据的端口20号与客户进程所提供的端口号建立数据连接
7.FTP会话形式是客户向服务器发送命令,服务器发送状态码和短语作为应答。
1.在P2P应用中,每个对等方即是数据的获取者又是数据的提供者,P2P应用充分聚集和利用了每个对等方接入链路的上行和下行带宽以及每个对等方的处理能力。
2.P2P应用的优势:充分聚集了端系统的计算能力及网络传输带宽,对服务器的依赖很小。
1.网络应用进程通信时需要通过API接口请求底层协议的服务。
2.网络应用可以创建三种进程的Socket:
(1)数据报类型套接字 SOCK_DGRAM
(2)流式套接字 SOCK_STREAM
(3)原始套接字 SOCK_RAW
3.典型的Socket函数
(1) int socket() 创建套接字
(2) int close() 关闭套接字
(3) int bind() 绑定套接字的本地端点地址
(4) int listen() 配置套接字为监听状态
(5) int content() 连接客户端套接字和服务器
(6) int accept() 与客户端相连
(7) send() sendTo() 发送数据
(8) recv(),recvfrom() 接收数据
(9) setsockopt() 设置socket相关,getsockopt() 读取socket相关
4.UDP提供无连接、不可靠的数据传输服务,选择使用UDP的网络应用程序,不能依靠UDP实现可靠数据传输。
5.数据报套接字SOCK_DGRAM提供UDP接口,流式套接字SOCK_STREAM 对应TCP接口
6.原始套接字SOCK_RAM直接调用网络层接口,所以不具备传输层功能
结语:第二章内容完结,最后几节内容作了删减。
2020.08.19 补充部分知识点