1. 域名系统
1.1 域名系统的概述
域名系统DNS(Domain Name System)
:是互联网使用的命名系统,它的作用是用来把人们使用的机器名字(域名)转换为IP地址
,是互联网中的各种网络应用的核心服务。
互联网的命名系统中使用了许多的
域
互联网的域名系统DNS
被设计为一个联机分布式数据库系统,并采用客户服务器方式。
DNS使得大多数名字都在本地进行解析(resolve)
,仅少量的解析需要在互联网上通信。
域名到IP地址
的解析是由分布式在互联网上的许多域名服务器程序(可以简称为服务器)
共同完成的,域名服务器程序在专设的节点上运行,通常将这些服务器叫做域名服务器
1.2 互联网的域名结构
域名采用了层次树状结构
的命名方法,如www.myschool.edu
任何一个连接在互联网上的主机或者路由器都有一个唯一的层次结构的名字,也就是域名
,域是一个名字空间中一个可被管理的划分,域还可以被划分为子域,这样就形成了顶级域,二级域…
DNS
规定,域名中的标号都是由英文字母和数字组成,每一个标号不超过63个字符,不区分大小写字母,不能采用除了(-)意外的其他标点符号
同时还固定了由多个标号组成的完整域名总共不超过255个字符
级别最高的域名写在最右边,级别最低的域名写在最左边
域名只是个逻辑概念,并不代表计算机所在的物理地点。
凡是在com
下注册的单位都获得一个二级域名,域名树的树叶就是单台计算机的名字,它不能够再往下继续划分子域了。
1.3 域名服务器
一个服务器所负责管辖的或者有权限的
范围叫做区(zone)
,每一个区设置相应的权限域名服务器(authoriative name server)
,用来保存该区中的所有主机的域名到IP
地址的映射。
DNS服务器的管辖范围不是以
域
为单位的,而是以区为单位的,区是服务器实际管辖的范围,区可能小于等于域,但是一定不能够大于域,也就是说,区是域的子集
每一个域名服务器都能够进行部分域名到IP
地址的解析
当某个DNS服务器不能进行域名到IP地址的转换的时候,就会设法找互联网上别的域名服务器进行解析。
域名服务器的类型
[1]根域名服务器
根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP
,不管是哪一个本地域名服务器,如果要对互联网上任何一个域名进行解析,只要自己无法解析,就要先求助于根域名服务器,假设所有的根域名服务器都瘫痪了,那么DNS系统无法工作。
需要注意的是,根域名服务器并不是直接把待查询的域名直接转换为IP地址,根域名服务器也没有存放这种信息,而是告诉本地域名服务器下一步应该要查询哪一个顶级域名服务器。
[2]顶级域名服务器
负责管理的是在顶级域名服务器注册的二级域名,当收到DNS
查询请求的时候,就给出响应的答复
- 下一步应该要查找哪个权限服务器
- 或者是直接转换为
IP
地址
[3]权限域名服务器
负责一个区的域名服务器,当一个权限服务器还不能给出最后的查询回答的时候,就会告诉发出查询请求的DNS
用户,下一步要查找哪一个权限域名服务器
[4]本地域名服务器
当一台主机发出DNS
查询请求的时候,这个查询请求报文就发送给本地域名服务器,当所要查询的主机也属于用一个ISP的时候,该本地域名服务器立即就能够将所查询的主机名转换为它的IP地址,而不需要去查询其他的域名服务器
1.4 域名解析过程
递归查询方法
主机向本地域名服务器的查询一般都采用的是递归查询
,如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器查询,也就是说替主机进行查询,而不是让主机主机去查询,在这种情况下,递归查询返回的查询结果是所要查询的IP地址或者是报错找不到地址
迭代查询方法
当根域名服务器收到本地域名服务器发出的迭代查询请求之后,要么给出所要查询的IP地址,要么就告诉本地域名服务器:下一步应该要向哪一个域名服务器进行后续的查询,然后让本地域名服务器进行后续的查询。
通常就是根域名服务器给出顶级域名服务器的IP地址,然后让本地域名服务器去查询顶级域名服务器,如果顶级域名服务器也找不到对应的IP地址,那么就会让本地域名服务器去找对应的权限域名服务器,以这种的形式进行查询。
高速缓存
- 存放最近用过的名字以及从何处获得名字映射信息的记录
- 大大减轻根域名的负荷,使得DNS查询请求和回答报文的数量大大较少
- 域名服务器应该为每项内容设置计时器,并处理超过合理时间的项
- 当权限域名服务器回答一个查询请求的时候,在响应中指明绑定有效的时间值,增加此时间值可以减少网络开销,而减小此时间值可以提高域名转换的准确性。
2.文件传输协议FTP
2.1 FTP概述
文件传送协议FTP
曾是互联网是使用得最广泛的文件传送协议,它提供交互式的访问,屏蔽了各种计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
- 提供交互式的访问,允许客户指明文件的类型与格式,并且允许文件具有存取权限
- 是文件共享协议的一个大类
文件传送协议FTP
、TFTP
:复制整个文件,对文件的副本进行访问
- 如果要存取一个文件,那么就必须要先获得一个本地文件副本
- 如果要修改文件,那么只能对文件副本进行修改,然后再将修改后的文件副本传回到原来的节点
允许联机访问
- 允许同时对一个文件进行存取
- 远地共享文件的访问,如同对本地文件的访问
- 透明存取,不需要对该应用程序作明显的改动
- 由操作系统负责
2.2 FTP的基本工作原理
使用TCP
可靠的运输服务,使用的是客户/服务器
方式进行工作,一个FTP
服务器进程可以同时为多个客户进程提供服务,FTP服务器进程由两大部分组成
- 主进程:负责接受新的请求
- 从属进程:处理单个请求
工作流程
- 打开熟知端口(21),使得客户进程能够连接上
- 等待客户进程发出连接的请求
- 启动从属进程处理客户进程发来的请求,从属进程对客户进程的请求处理玩不之后就终止,但是从属进程在运行期间根据需要可能还要创建一些子进程
- 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。
拥有两个从属进程
控制进程
数据传送进程
在进行文件传输的时候,FTP的客户端和服务器之间要建立两个并行的TCP
连接,也就是
数据连接
控制连接
控制连接在整个会话期间都一直打开,FTP客户所发出的传送请求,通过控制连接
发送给服务端的控制进程,但是控制连接并不用来传送文件
实际上用来传送文件的是数据连接
,服务器端的控制进程
在接收到FTP客户发送来的文件传输请求后就创建数据传送进程
和数据连接
数据传送进程实际完成了文件的传送,在传送完毕后关闭数据传送连接,并且结束运行。
由于使用了一个分离的控制连接,因此FTP的控制信息是带外的
当客户进程向服务器发出建立连接请求的时候,要寻找的是连接服务器进程的熟知端口21
,同时还要告诉服务器进程自己的另一个端口号码,这个端口用来建立数据传送连接
然后服务器进程用自己传送数据的熟知端口20
与客户进程所提供的端口号建立数据传送连接
2.3 简单文件传输协议TFTP
TCP/IP
协议族中还有一个简单文件传送协议(TFTP)
,是一个很小并且容易实现的文件传送协议,虽然使用的是客户/服务器
方式,但是运输层采用的协议是UDP
需要有主机的差错改正措施
只支持文件传输,不支持交互
没有庞大的命令集,没有列目录的功能,不能对用户进行身份的识别
每次传送的数据报文中有512字节的数据,但是最后一次不可以足512字节
数据报文按序编号,从1开始
支持
ASCII
或者二进制初始弄可对文件进行读或者写
使用很简单的首部
很像停止等待协议
- 发送完一个文件块后就等待对方的确认,确认的时候应该要指明所确认的块编号
- 发完数据后在规定时间内收不到确认就要重发数据PDU
- 发送确认PDU的一方如果在规定时间内没有收到下一个文件块,那么就要发送确认PDU,保证文件的传送不致因为某一个数据报的丢失而失败
工作流程
- 开始工作的时候,TFTP客户进程发送一个读请求或者写请求报文给
TFTP
服务器进程,其UDP
数值端口号码为69
- TFTP服务器进程选择一个新的端口和
TFTP
客户进程通信 - 如果文件长度恰好是512字节的整数倍,那么在文件传送完毕后,必须在最后发送一个只含首部而无数据的数据报文
- 如如果文件长度不是512字节的整数倍,那么最后传送数据报文的数据字段一定不满512个字节,作为文件结束的标志
3.远程终端协议TELNET
TELNET
是一个简单的远程终端协议,用户用TELNET
就可以在其所在地通过TCP
连接注册(登录)
到远地的另一台主机上(使用主机名或者IP地址)
,TELNET
可以将用户的击键传输到远地主机,同时也能将远地主机的输出通过TCP
连接返回到用户屏幕。
这种服务是透明的,因为用户感觉到键盘和显示屏是直接连接在远地主机上的,因此TELNET
又叫做终端仿真协议。
TELNET
使用的是客户/服务器
方式,在本地系统运行TELNET
客户进程,而在远地主机运行TELNET
服务器进程,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接,
TELNET
定义了数据和命令应该如何通过互联网,这些定义就是所谓的网络虚拟终端(Network Vitural Terminal)
,客户软件把用户的击键和命令转换为NVT
格式并且送交到服务器上,服务器依据NVT
格式再转换成远地系统所需要的格式。
4.万维网WW
4.1 万维网概述
万维网WWW(World Wide Web)是一个大规模的、联机式的信息储藏所,不是什么特殊的计算机网络,万维网用连接的方式能够非常方便地从互联网上的一个站点访问另外一个站点,主动地按需获取丰富的信息。
万维网是分布式超媒体(hypermedia)系统
是超文本系统的扩充,由多个信息源连接而成,是万维网的基础。
- 超媒体与超文本的区别:文档的内容不同
- 超文本文档仅包含文本信息
- 超媒体文档还包含有其他信息,如图形、图像、声音
- 分布式系统:信息分布在整个互联网上,每台主机上的文档都独立进行管理
- 以客户服务器方式进行工作
- 客户程序:浏览器
- 服务器程序:在万维网文档所驻留的主机上运行,这个主机也叫做万维网服务器
- 客户程序向服务器程序发起请求,服务器程序向客户程序送回客户所要的万维网文档
- 在一个客户程序主窗口上显示出来的万维网文档叫做页面
4.2 统一资源定位符URL
统一资源定位符URL
是用来表示从互联网上得到的资源位置和访问这些资源的方法,URL给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位,它就相当于一个文件名在网络范围内的扩展,因此URL
与互联网相连的及其上的任何可访问对象的一个指针
URL的格式
由冒号(:)隔开的两大部分组成,对字符的大写或者小写都没有区别
<协议>://<主机>:<端口>/路径
- ftp
- http
- News
使用HTTP
的URL
最常用的形式把:端口
进行省略,如果将路径进行省略,那么就进入到某个主页。
省略的话默认访问的是80
4.3 万维网的文档
- 静态万维网文档
- 动态万维网文档:内容由应用程序动态创建
- 活动万维网文档:浏览器改变文档的内容
通用网关接口CGI
定义动态文档应该如何创建,输入数据应该如何提供给应用程序,输出结果如何使用的一种标准
- 通用:CGI标准所定义的规则对其他任何语言都是通用的
- 网关:CGI程序的作用像网关
- 接口:有一些已经定义好的变量和调用可以供其他CGI程序使用
正式名字CGI脚本
指的是一个程序,它被另外一个程序的处理机来解释或者执行
4.4 信息检索系统
5. HTTP协议
5.1 HTTP的操作过程
协议HTTP
定义了浏览器万维网客户进程
怎样向万维网服务器请求万维网文档,以及服务器怎样将文档传送给浏览器。从层次的角度看,HTTP
是面向事务的应用层协议,是万维网上能够可靠地交换文件的重要基础
每个万维网网点都有一个服务器进程,这个服务器进程不断监听TCP的端口80
,检查是否有浏览器向它发出连接请求,一旦监听到连接建立请求并且建立了TCP
连接之后,浏览器就向万维网服务器发出浏览整个页面的请求。
服务器在完成任何之后,TCP连接就被释放了。
- HTTP使用了面向连接的
TCP
作为运输层协议,保证数据的可靠传输 - 虽然HTTP使用了TCP连接,但是通信的双方在交换
HTTP
报文之前不需要先建立HTTP
连接 - HTTP协议是无状态的
当用户发起一次HTTP
请求的时候,协议HTTP
首先要先建立TCP连接,这需要使用三报文握手,当建立TCP连接的三报文握手的前两个报文完成后,万维网就把建立TCP连接的三报文握手的前两个报文完成后的第三个报文中组装HTTP请求报文,发送给万维网服务器,就把请求的文档作为响应报文返回给用户。
HTTP1.0的缺点就是每次请求一个文档就会有2个RTT的请求时间,这种非持续的连接会使得万维网服务器的负担很重。
HTTP1.1使用了持续连接技术,在万维网服务器发送完响应之后依然在一段时间内保持这条连接,使得同一个客户/服务会话能够在这一条已经建立好的连接上传输数据。
HTTP1.1工作方式
- 非流水式方式:收到一个响应后才能发出下一个气请求
- 流水式特点:客户在收到
HTTP
的响应报文之前就能够接着发送新的请求报文出去。
HTTP/2工作方式
[1]HTTP1.1中流水式的工作模式中的服务器,必须按照发送请求的顺序排队,逐个地发送给客户,如果有时候遇到某个响应迟迟不能够发回,那么排在后面的分组要等待很长时间。
HTTP2.0
把服务器发回的响应变成可并行地发回(使用同一个TCP连接)
[2]HTTP2允许客户复用TCP
连接进行多个请求,节省了建立和释放的花费
[3]HTTP/1.1
的请求和响应报文都是面向文本的,在TCP连接上传送的HTTP
报文首部称为不小的开销,在这些首部上的字段有很多都是重复的,HTTP/2
把所有的报文都划分为较多的二进制编码的帧,采用新的压缩算法,不发送重复的首部字段。HTTP/2
是向后兼容的,当使用HTTP/2
的客户向服务器发出请求的时候,如果服务器依然使用的是HTTP/1.1
,那么服务器同样可以收到请求报文,在发回响应的时候,就改成使用HTTP/1.1
与服务器进行交互
5.2 代理服务器
代理服务器(proxy server)
是一种网络实体,又称为万维网告诉缓存(Web cache)
代理服务器把最近的一些请求和响应暂存在本地磁盘中,当新请求到来的时候,如果代理服务器发现这个请求和暂时存放的请求是相同的,那么就返回暂存的响应,而不需要安装URL
的地址再次去互联网访问该资源。
代理服务器可以在客户端或者服务端工作,也可以在中间系统上工作。
[1]校园网中的计算机向互联网中的服务器请求服务的时候,就先和校园网的代理服务器建立TCP
连接,并且向代理服务器发出HTTP
请求报文
[2]如果代理服务器已经存放了所请求的对象,代理服务器就把这个对象放入到HTTP
响应报文中给计算机的浏览器。
[3]否则,代理服务器就代表发出请求的用户浏览器,与互联网上的源点服务器建立TCP连接,发送HTTP请求报文
[4]源点服务器把所请求的对象放在HTTP
响应报文中返回给校园网的代理服务器
[5]代理服务器收到这个对象之后,先复制在自己的本地存储器中,然后再把这个对象放在HTTP
响应报文中,然后通过已建立的TCP连接,返回请求该对象的浏览器。
内容分发网络CDN(content Distribution Network):是基于代理服务器构建的
5.3 报文结构
有两种报文
请求报文
开始行:请求行,用来区分是请求报文还是响应报文,只有三个内容
- 方法
- 请求资源的URL
- HTTP版本
首部行:说明浏览器、服务器、报文主题中的一些信息,以键值对的形式存储,每一行在结束的地方都要有回车和换行,在首部行结束之后,还有一个空行将首部和后面的实体相分开
实体主题:请求报文中一般都不用这个字段
响应报文
响应报文中的开始航叫做状态行
- 1xx:表示通知信息,如请求收到了或者正在处理
- 2xx,表示接受或者知道了
- 3xx,表示重定向,如果要完成请求则必须采取进一步的行动
- 4xx,表示客户的差错,请求中有错误的语法或者不能完成
- 5xx表示服务器的差错,比如说服务器失效或者内部出现错误
方法 | 意义 |
---|---|
OPTION | 请求一些选项的信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求由URL所标志的信息的首部 |
POST | 给服务器添加信息 |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除相关资源 |
TRACE | 进行环回测试的请求报文 |
CONNECT | 代理服务器 |
5.4 服务器上存放用户的信息
Cookie是这样工作的:当用户A浏览某个使用Cookie
的网站的时候,该网站的服务器就为A产生一个唯一的识别码(其实就是Session),并且以此作为索引在服务器的后端数据库中产生一个项目,接着在给A的HTTP响应报文中添加一个叫做Set-Cookie
的首部行
reponse.setCookie("xxx");
当A收到这个响应的时候,其浏览器就会在它管理的特定Cookie
文件中添加一行,其中就包括这个服务器的主机名
和Set-cookie
后面给出的识别码,当A在后续继续浏览这个网站的时候,每发送一个HTTP
的请求报文,就会取出这个网站的识别码,放到HTTP请求报文的Cookie首部行中。
6.电子邮件技术
6.1 电子邮件概述
- 电子邮件:使用电子设备交换的邮件及其方法
- 重要标准
- 简单邮件发送协议SMTP
- 互联网文本报文格式
- 通用互联网邮件扩充MIME
- 邮件读取协议POP3和IMAP
电子邮件系统的组成:三个主要构件
- 用户代理
- 邮件服务器
- 邮件发送和读取协议
- 用户代理
UA(User Agent)
:就是用户与电子邮件系统的接口,在大多数情况下就是运行在用户计算机上的程序,是用户与电子邮件系统的接口,被称为电子邮件客户端软件
基本功能是:撰写、显示、处理、通信
邮件服务区要使用两种不同的协议
- SMTP协议:用户代理向邮件服务器发送邮件或者在邮件服务器之间发送邮件
- 邮局协议POP3:用于用户代理从邮件服务器中读取邮件
SMTP和POP3都是基于
TCP
连接进行邮件的传输的。
6.2 简单邮件传送协议SMTP
SMTP规定了在两个相互通信的SMTP
进程之间应该要如何交换信息,由于SMTP
使用的也是客户/服务器
模式,因此规定发送邮件的就是SMTP
客户,而负责接收邮件的SMTP
进程就是SMTP
服务器
连接建立
发件人的邮件发送到发送方邮件服务器的邮件缓存之后,SMTP客户就每隔一段时间对邮件进行扫描,如果发现有缓存邮件,那么就使用熟知端口25与接收方的邮件服务器的SMTP服务器建立TCP连接,在连接建立之后,接收方SMTP服务器发出220 Service Ready
,然后SMTP客户向SMTP服务器发送HELO
命令附上发送方的主机名,如果服务器有能力接收邮件,那么就回答250 OK
,表示已经准备好接收。如果SMTP
服务器不可用,那么就回答421 Service not available
STMP
是不使用中间邮件服务器的,不管发送方和接收方的邮件相隔多远,TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立。
邮件传送
邮件的传送从MAIL
开始,后面接有发件人的地址,如果准备好接收邮件,那么就回答250 OK
,否则返回一个代码,比如说451(处理时出错)
、452(存储空间不够)
、500(命令无法识别)
下面跟着一个或者多个RCPT
命令,取决于把同一个邮件发送一个人还是多个人,其格式为RCPT TO:<收件人地址>
每一个RCPT
都会有一个响应信息,如250 OK
再下面就是DATA
命令,表示要开始传送邮件的内容
连接释放
邮件发送完毕后,SMTP客户就应该要发送QUIT
命令,SMTP
服务器返回的信息是221(服务关闭)
,表示SMTP
同意释放SMTP
连接,邮件传送的全部过程就结束了。
6.3 电子邮件的信息格式
一个电子邮件分为信封和内容两大部分,目前只规定了邮件内容中的首部格式,主体部分让用户自由撰写。
6.4 邮件读取协议POP3和IMAP
- POP3邮局协议(Post Office Protocol)第三个版本
POP3使用的是客户/服务器的工作方式,必须运行POP3客户程序
基于TCP实现客户端与服务器的通信
特点是只要用户从POP3服务器上读取了邮件,那么就将这个邮件删除掉
- IMAP:网际报文存取协议
使用的是客户/服务器模式
IMAP是基于TCP实现客户与服务器的通信
是一个联机协议
连接后只下载邮件的首部
可以直接在IMAP
服务器上创建和管理文件夹
用户可以搜索邮件内容
用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件
6.5 通用互联网邮件扩充MIME
增加了邮件主体的结构,定义了传送非ASCII
码的编码规则