一 、应用层架构
1.1 c-s架构
1、客户相互之间不直接通信
2、服务器具有固定的周知的地址
3、常见的应用程序:web、FTP、Telnat、电子邮件
1.2 P2P结构
1、应用程序在间断连接的知己之间使用直接通信
2、常见的应用:文件共享、对等方协助下载加速器(迅雷)、因特网电话和IPTV。
1.3 B/S架构
1、即Browser/Server(浏览器/服务器)结构,在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。
2、Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.
二、进程通信
2.1 客户和服务器进程的定义
发起通信的进程为客户,等待联系的为服务器
2.2 进程与网络之间的接口
1、进场通过软件接口(套接字)向网络发送报文、接收报文。
2、套接字(soket)又称为应用程序编程接口。
3、开发者可控制套接字在应用层这一端,但对于运输层端爱莫能助。
2.3 进程寻址
标志接收信息:
1、主机的地址(IP地址)
2、在目的主机中接收进程的标识符(端口)
三、因特网提供的运输服务
不能提供吞吐量以及定时的保证。
3.1 TCP
1、面向连接的服务
在数据报文流动之前,客户与服务器之间相互交流控制层信息,在两进程之间建立连接,当结束报文发送,必须拆除。
2、可靠的数据传送服务
保证能无差错、按适当顺序的进行数据交付。
3.2 UDP
轻量级传输协议:无连接不可靠数据传送。
3.3 SSL(安全套接字层)
1、TCP、UDP都不提供任何加密机制
2、用SSL加强后的TCP,能提供安全性服务,包括加密、数据完整性、端口鉴别。
四、应用协议
4.1 HTTP(端口号:80)
web的应用层协议是超文本传输协议(HTTP),其定义了web客户向web服务器请求页面的方式,以及服务器向客户传送web页面的方式,运行在tcp之上。
4.1.1 web相关知识
1、web页面由对象组成,多数包含一个HTML基本文件以及几个引用对象,HTML基本文件通过对象的URL地址引用页面中的其他对象。
2、URL地址 = 存放对象的主机名+对象的路径名、
3、web浏览器实现HTTP的客户端,web服务器实现HTTP的服务器端。
4.1.2 概况
1、HTTP使用TCP作为它的支撑运输协议
2、服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息,HTTP是一个无状态协议。
4.1.3 持续连接以及非持续连接
HTTP默认文为持续连接,但也可被设置为非持续性连接
1、非持续性连接
每个TCP连接之传输一个请求和一个响应报文,并且只发送一个对象,部位其他对象保留。
2、持续性连接
4.1.4 HTTP报文形式
1、HTTP请求报文形式
1)请求行:方法字段(包括GET、POST、HEAD、PUT、DELETE)+URL字段(请求对象的标志及对象的路径)+HTTP版本
2)首部行:Host(对象所在主机)、Connection(close:采用)、user-agent(浏览器类型)、accept-language(表示用户想要得到的语言版本)
3)请求数据:GET方法下为空,POST方法时,用户仍可以请求页面,但此时请求数据中为用户在表单字段的输入值
POST常被用于提交表单,而使用GET方法的话,实体部分为空,会在URL中包含输入的数据
HEAD方法与GET方法类似,但是服务器不会返回请求对象,常被用于跟踪。
PUT方法与web工具联合使用,让用户向指定的web服务器上传对象。
DELETE方法运行用户删除web服务器上的对象
2、HTTP响应报文
1)响应行
响应行一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK
其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。
常见状态码:200:请求成功
301:请求对象被转移,客户软件会得到新的URL
400:请求不能被服务器理解
404:请求的内容已不在服务器中
505:服务器不支持请求报文使用的http协议
4.1.5 cookie
四个组件:1)在http响应报文中的cookie首部行;2)在http请求报文中的cookie首部行;3)在用户端系统中保留有cookie文件,由浏览器管理;4)位于web站点的后端数据库
cookie用于标志一个用户,用户首次访问某站点时,提供一个用户标志,在后继会话中,浏览器会向服务器传递cookie首部,cookie在无状态的http协议上建立了一个用户会话层。
4.1.6 web缓存器
也称代理服务器,它有自己的磁盘存储空间,存储最近请求过的对象副本。
举例:
1)浏览器建立到web缓存器的tcp链接,并向其发送http请求
2)web缓存器进行检查,本地是否有该对象副本,有则用http响应报文返回用户浏览器
3)若没有,建立与被请求对象服务器的tcp链接,用http请求该对象并收到该对象
4)受到对象后,web服务器存储该副本,并向客户浏览器发送该对象。
web缓存器既是客户,又是服务器,通常由ISP购买
内容分发商(CDN):共享CDN、专有CDN(谷歌、微软)
4.1.7 条件GET方法
保证web缓存器中的存储的对象是最新的。web缓存器在进行缓存时,也会存储最后修改日期。在用户请求该对象时,web缓存器会向服务器发送一个条件GET请求,进行最新检查。
1)请求报文使用GET方法
2)请求报文中包含‘if-Modified-Since’首部行。
‘if-Modified-Since’的值与之前服务器发送的响应报文中的‘Last-Modified’相等。
服务器确定指定日期之后修改过该对象,才向web缓存器发送该对象。否则的话,则发送状态行为304 Not Modified,实体为空的响应报文,web缓存器则向用户发送存储的该对象。
4.2 文本传输协议FTP
用户通过FTP代理与FTP服务器交互。
特点:
- FTP使用两个并行的TCP连接来传输文件,一个是控制连接,用于两主机之间传输控制信息,如用户标识、口令、改变远程目录的命令,以及存放和获取文件的命令;一个是数据连接,用于发送文件。
- 控制连接在用户的会话期间一直存在,但是会话期间的每一次文件传输都会新建一个数据连接。
- FTP服务器在整个会话期间会保留用户的状态,会将用户账户与控制连接联系起来。
4.3 电子邮件(端口:25)
电子邮件系统有三个组成部分:用户代理、邮件服务器、简单邮件传输协议(SMTP)。
每位用户在某个邮件服务器那里,都有一个邮箱,当用户完成邮件的撰写后,其用户代理向邮件服务器发送邮件,再传输到收方的邮件服务器那里,再被分发给接收方的邮箱中。
4.3.1 SMTP
- 使用的是TCP为传输层协议。
- 存在两部分,发送方客户端、接收方服务器端。每台邮件服务器上既运行SMTP的客户端,也运行SMTP的服务器端。
- 所有邮件报文的体部分只能采用7比特ASCII表示。
- SMTP一般不使用中间邮件服务器发送邮件,邮件不会在中间的某个邮件服务器停留
与HTTP不同:SMTP为推协议,由发送方发起TCP连接,HTTP为拉协议,用户从服务器中拉取信息。
4.3.2 邮件访问协议
邮件访问协议用于将邮件从接收方的邮件服务器传送到接收方的用户代理中。
有三类常见的邮件访问协议:第三版的邮局协议(POP3)、因特网邮件访问协议(IMAP)以及HTTP。
基于web的电子邮件
用户和远程邮件服务器的通信是通过HTTP协议,但是邮件服务器之间的通信仍旧是用的SMTP协议。
4.4 DNS(端口号:53)
域名系统(DNS)的主要任务:进行主机名到IP地址的装换。运行在UDP之上。
组成:1)由分层的DNS服务器(运行BIND 的UNIX机器)实现的分布式数据库;2)使主机能查询分布式数据库的应用层协议。
服务:
- 将主机别名对应为规范主机名以及主机的IP地址
- 对邮件服务器的别名进行解析,以获得规范主机名以及IP地址。
- 负载分配:繁忙的站点会有多台服务器,有统一的主机名,却有多个IP地址,DNS会将用户的请求给其发送闲置的服务器的IP地址。
4.4.1 分布式、分层
有三种类型的DNS服务器
1)根DNS服务器 ,在全网,有13个根服务器
2)顶级DNS服务器 ,负责顶级域名如com、org、net、edu以及gov,还有所有国家的顶级域名。
3)权威DNS服务器,收藏部分DNS记录,在因特网上,具有可公共访问的主机的每个组织机构必须提供可访问的DNS记录。
本地DNS服务器,每个ISP都会有一台本地的DNS服务器
例子:
主机cis.poly.edu请求主机名为gaia.cs.umass.edu的IP地址的过程:
1)用户首先向本地DNS服务器发送请求,并提交主机名,
2)本地DNS服务器再向根DNS服务器发送请求,
3)根服务器根据其前缀edu返回顶级域服务器的IP地址(例:前缀中有edu),
4)本地服务器再向顶级域服务器发送请求
5)顶级域服务器根据umass.edu的前缀,返回权威DNS服务器的IP地址
6)本地服务器向权威服务器发送请求
7)权威服务器dns.umass.edu用gaia.cs.umass.edu的IP地址返回
4.4.2 DNS缓存
当dns服务器接受一个DNS回答时,它会将该回答中的信息缓存在本地存储器中,但主机名和IP地址间的映射不是永久的,DNS会过段时间丢弃该信息。
本地dns服务器也会缓存顶级域服务器的ip地址,避免了向根与服务器查询。
4.2.3 dns记录和报文
为了实现dns分布式数据库,所有dns服务器都存储了
资源记录(RR),提供了主机名到ip地址的映射。
(NAME,VALUE,TYPE,TTL)
1)type = A:
Name是主机名,Value是该主机名对应的IP地址,该记录为主机名与IP地址的映射。
2)type=NS
Name是域,Value是该域名对应的权威域服务器主机名
3)type = CNAME
Name是主机别名,Value是该别名对应的规范主机名
4)type=MX
Name是别名,Value是该别名对应的的邮件服务器规范主机名。
4.2.4 DNS报文
1)首部区域
会话标识(2字节):是DNS报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应
标志(2字节):是查询报文,还是回答报文
2)问题区域
名字字段:指出正在查询的主机名字
类型字段:指出查询问题RR的类型(既type)
3)回答区域
包含了所有问题的资源记录(RR)
五、套接字编程
5.1 UDP编程
5.2 TCP编程