计算机网络-应用层
计算机网络理论,应用层。
套接字编程接口
网络子系统作为操作系统的一部分,以应用编程接口(API-Application Programming Interface)的形式向应用程序提供调用接口。套接字(socket)是最常用的应用层编程接口。
应用程序通过套接字接入到网络。
域名系统DNS
域名系统(Domain Name System,DNS)是Internet使用的命名系统,用于将域名转换为IP地址。
多个域名服务器上运行专门的域名服务器程序,完成域名->IP地址的解析 (resolve)。
DNS基于UDP协议实现:
- 应用进程需要进行域名解析时,就调用域名解析程序(resolver),它成为DNS的一个客户
- 向本地域名服务器发送域名解析请求(UDP报文),其中包含待解析的域名
- 本地域名服务器在查找域名后,返回应答报文,其中包含对应的IP地址
Internet采用层次树状结构的域名系统,根域名服务器(root name server)是树的根节点。··· .三级域名.二级域名.顶级域名
。
顶级域名(Top-Level Domain,TLD):
- 国家顶级域名(Country Code Top-Level Domain,ccTLD):如.cn、.us、.uk
- 通用顶级域名(Generic Top-Level Domain,gTLD):如.com、.org、.net
域名服务器的层次结构:
- 根域名服务器:知道所有的顶级域名服务器的域名和IP地址
- 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名
- 权威域名服务器:负责一个区(zone)的域名服务器
- 本地域名服务器:负责域名解析的本地域名服务器
根域名服务器共有13台,分布在全球。
主机向本地域名服务器的查询一般采用递归查询
- 如果本地域名服务器不知道被查询域名的IP地址,那么它就以DNS客户的身份,向根域名服务器继续发出查询请求报文
本地域名服务器向根域名服务器的查询通常是采用迭代查询
- 当根域名服务器收到本地域名服务器的迭代查询请求报文时
- 要么给出所要查询的IP 地址
- 要么告诉本地域名服务器下一步应向哪一个域名服务器查询
- 本地域名服务器进行后续的查询
文件传输协议FTP
FTP使用客户/服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务。
FTP使用2个TCP连接:控制连接和数据连接
- 控制连接
- 在整个会话期间一直保持打开
- FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件
- 数据连接
- 收到FTP客户发送来的文件传输请求后,服务器端的控制进程创建“数据传送进程”和“数据连接”
- 数据传送进程实际完成文件的传送,传送完毕后关闭“数据传送连接”并结束运行
万维网WWW
要解决的几个问题:
- 怎样标识分布在Internet上的万维网文档?——URL
- 用什么协议实现万维网上各种超链的链接?——HTTP
- 如何存储和表示万维网文档?——HTML
统一资源定位符URL(Uniform Resource Locator)
URL的一般形式为:
<协议>://<主机名>:<端口号>/<路径>
- 协议:指明访问资源所使用的协议,如http、ftp、news等
- 主机名:指明资源所在主机的域名或IP地址
- 端口号:指明服务器正在监听的端口号,http默认端口号为80
- 路径:指明服务器上资源的具体位置,若省略路径,则默认指主页
超文本传输协议HTTP(HyperText Transfer Protocol)
HTTP是一个无状态的协议,即服务器不保留关于客户的任何信息。
基于TCP协议,使用80端口。
客户端需要请求某个页面时,与服务器建立TCP链接,之后请求传送文 件,并进行文件的传送,传送完毕后释放TCP连接。
请求一个页面的过程:
- 首先建立TCP连接,需3次握手
- 在2次握手后,第3次握手报文的数据部分可传送HTTP请求报文
- 服务器收到请求报文后,返回HTTP应答报文
- 请求文档所需时间 = 2 * RTT + 文件传输时间
HTTP/1.0每传送一个文件都需要建立一次TCP连接;HTTP/1.1进行了改进。 HTTP/1.1协议使用持续连接(persistent connection)
- 服务器发送响应后,在一段时间内保持连接,使客户与服务器可以继续传送后续的HTTP请求报文和响应报文
- 这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行
HTTP是面向正文的(text-oriented),报文中的字段都是ASCII 码串,因而每个字段的长度都是不确定的。
- 方法:一些命令,如GET、POST、HEAD
- URL:请求资源的URL
- 版本:HTTP的版本号
在请求报文中,开始行就是请求行
HTTP应答报文的开始行是状态行。状态码都是三位数字:
- 1XX:通知信息
- 2XX:成功
- 3XX:重定向
- 4XX:客户端错误
- 5XX:服务器错误
超文本标记语言HTML(HyperText Markup Language)
HTML是一种标记语言,用于描述超文本文档的结构。定义了很多排版的命令,即标签(tag)。
安全的HTTP协议:HTTPS
HTTPS是HTTP的安全版本,使用SSL/TLS协议进行加密传输。HTTPS使用443端口。
SSL/TLS协议是在TCP之上的协议,SSL/TLS协议的主要功能是保护Internet通信的安全性。
电子邮件
发送电子邮件的协议:SMTP(Simple Mail Transfer Protocol)
接收电子邮件的协议:POP3(Post Office Protocol Version 3)、IMAP(Internet Mail Access Protocol)
电子邮件系统的两种实体:
- 用户代理(User Agent,UA):用户使用的邮件客户程序
- 邮件服务器(Mail Server):接收、存储和转发邮件的服务器,邮件服务器既可以作为客户,也可以作为服务器
SMTP协议
SMTP通信的三个阶段
- 连接建立:连接在发送主机的SMTP客户和接收主机的SMTP服务器之间建立,不使用中间邮件服务器
- 邮件传送
- 连接释放:邮件发送完毕后,SMTP释放TCP 连接
电子邮件的格式
一个电子邮件分为信封和内容两大部分:
- RFC 822只规定了邮件内容中的首部(header)格式,而对邮件的主体(body)部分则由用户自由撰写
- 首部中的主要字段
- To:后面填入一个或多个收件人的e-mail地址
- Subject:邮件的主题,反映了邮件的主要内容
- Cc:抄送(Carbon copy),表示给某人发送一个邮件副本
- From:发信人的电子邮件地址
- Date:发信日期
- Reply-to:对方回信地址
MIME协议
MIME(Multipurpose Internet Mail Extensions)协议是为了解决SMTP协议只能传送ASCII码文本的问题。
邮件首部中增加字段,定义数据类型和编码规则。