域名系统
概述
- IP地址太难记,因此我们就使用主机名,域名来代替
- 为什么机器处理IP时使用IP而不使用域名呢,是因为域名的长度是变化的,对于机器来说处理困难
- DNS是一个联机分布式数据库系统,并采用客户服务器方式
- DNS使大多数名字都在本地进行解析,仅少量解析需要在因特网上通信
- 域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成的
- 过程要点
- 某个应用进程需要把主机名解析为IP,该应用进程就调用解析程序
- 其成为DNS的客户,并把待解析的域名放入DNS的请求报中,以UDP(提高效率)发送给本地域名服务器
- 如果查找到,则本地域名服务器将IP放在回答报文中返回
- 若没有,则域名服务器向其他域名服务器发出查询请求
域名结构
域名服务器
- 一个服务器所管辖的范围叫做区,区可能小于等于域,绝不可能大于域
- 根据域名服务器所起的作用,可以讲将域名服务器分为以下四类
- 根域名服务器
- 根域名服务器就最高层次的域名服务器,也是最重要的域名服务器
- 每一个根域名服务器都知道所有的顶级域名服务器的域名和IP地址
- 因为不管是哪一个本地域名服务器,若想对因特网上的一个域名进行解析,只要自己无法解析,那么首先就要求助于根域名服务器
- 假定所有的根域名服务器瘫痪了,那么整个DNS系统就无法工作了
- 全球共有13个不同的IP地址的根域名服务器,他们的名字是用一个英文字母命名。从a-m。a.rootservers.net,...,m.rootservers.net
- 但是安装的根域名服务器机器已经有123个
- 就近查找,速度快,也能更合理的利用因特网的资源
- 在很多情况下,根域名服务器,并不是直接把待查询的域名直接转换成IP地址,而是告诉本地域名度武器下一步应当找哪一个顶级域名服务器进行查询
- 顶级域名服务器
- 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名
- 当收到DNS查询请求时,就给出相应的回答
- 该回答,可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址
- 权限域名服务器
- 这就是负责一个区的服务器
- 本地域名服务器
- 该服务器并不属于以上图的结构。
- 但是他对于域名系统非常的重要
- 没太看懂,感觉像是本地局域网的域名服务器?
- 为了提高域名服务器的可靠性,一般都把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其他的是辅助域名服务器
- 当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断
- 域名的解析过程
- 递归查询:主机向本地域名服务器的查询
- 如果主机向本地域名服务器查询的域名,本地域名服务器不知道其IP,则本地域名服务器就会作为DNS客户的身份,向其他根域名服务器继续发出查询请求报文
- 迭代查询:本地域名服务器向根域名服务器的查询
- 要么给出IP,要么,就告诉本地域名服务器下一步应当向哪一个域名服务器进行查询
HTTP和HTTPS
- 简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL
- SSL协议位于TCP/IP协议与各种应用层协议之间
HTTPS和HTTP的区别主要为以下四点:
- 一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
- 二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
- 三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- 四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
文件传送协议(File Transfer Protocol)
FTP原理
- 文件传送的问题
- 1.计算机存储数据的格式不同
- 2.文件的目录结构和文件命名的规定不同
- 3.对于相同的文件存取功能,操作系统使用的命令不同
- 4.访问控制方法不同
FTP的工作步骤
- 其使用客户服务器方式
- 一个服务器进程可以为多个客户进程服务
- 服务器进程主要有两大部分组成:一个主进程,一个从属进程
- 主进程负责接受新的请求。从属进程负责具体处理每个请求
- 过程
- 打开熟知端口(21)使客户进程能够连接上
- 等待客户进程发送连接请求
- 启动从属进程来处理客户进程发来的请求。处理完毕后,即终止
- 回到等待状态,继续接受其他客户进程发来的请求
- 主进程和从属进程,是并发的进行的
- 在进行文件传输时,要建立两条并行的TCP连接,控制连接和数据连接
- 控制连接全程一直保持打开,客户端发出的传送请求,通过控制连接发送给服务器端的控制进程
- 服务器端的控制进程,在接收到客户端发来的文件传输请求后,创建数据传输进程和数据连接
- 数据传输进程完成数据的传输
当客户端向服务器进程发处建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务武器自己的另一个端口号码,用于建立数据传送连接。
接着,服务器进程用自己的传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。由于FTP使用了两个不同的端口号,所以数据连接和控制连接不会发送混乱
- FTP并非对于所有的数据传输都是最佳的
- 例如计算机A上运行的应用程序要在远程B的一个很大的文件末尾添加一行信息
- 若使用FTP,那么就需要先把文件传过来,再把信息修改,再传回去
- 实际上这种传送是不必要的
- 网络文件系统NFS
- A中的NFS客户软件,将要添加的数据和在文件后面写的数据的请求一起发送到B
- B的NFS服务器更新文件后返回应答信息
- 在网络上传送的只是少量的修改数据
- 简单文件传输协议(Trivial File Transfer Protocol)
- 使用UDP数据报,只支持互传,不支持交互
- 当需要将程序或文件同时向许多机器下载时,往往使用
- 代码所占内存小,可固化至设备
- 熟知端口号69
万维网WWW
万维网概述
- 超文本指的是包含指向其他文档的连接的文本
- 超媒体指的是,图形,声音,动画等
统一资源定位符URL(Uuniform Resource Locator)
格式
- <协议>://<主机>:<端口>/<路径>
- 第一部分是最左边的协议,指出是用什么协议来获取该万维网文档,现在最常用的就是超文本传送协议http,其次是ftp
- 第二部分是主机,他指出文档是在哪一个主机上。就是指该主机在因特网上的域名
- 后面两部分有事可省略
- 其实就是我们访问网页时的地址
使用HTTP的URL
- HTTP的默认端口号是80,通常可以省略
- 要查找清华大学的信息,就可进入到其主页,其URL为:
- http://www.tsinghua.edu.cn
- 这里省略了默认的端口号80
- 如果再细化路径,如:
- http://www.tsinghua.edu.cn/chn/yxsz/index.htm
- 就是该网页中的个用超文本标记语言HTML写出的文件
超文本传输协议HTTP
- HTTP是面向事务的应用层协议。他是万维网上能可靠地交换文件的重要基础
- 每个网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向他发出连接建立请求
- 当监听到连接并建立了TCP连接之后,浏览器向万维网服务器发出浏览某个页面的请求
- 服务器就返回所请求的页面作为相应
- 最后释放连接
- HTTP使用了面向连接的TCP协议,但是其本身是无连接的,就是双方在交换HTTP报文之前不需要建立HTTP连接
- HTTP是无状态的,即服务器并不记得曾经访问过的客户,也不记得其访问了多少次
- 这简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求
请求一个万维网文档所需的时间
- 如下图所示,所需的时间是:文件传输的时间+两倍的往返时间(RTT)
- 一个往返用于建立TCP连接,一个往返用于请求HTTP和应答HTTP
- 缺点:
- 每次请求一个文档就需要两倍RTT的开销
- 如果一个主页上有好几个需要依次下载的连接
- 那么每次下载都导致两倍的RTT
- 并且,每建立新的TCP连接,都会消耗一定的缓存和变量
- HTTP/1.1 很好的解决了这个问题
- 就是在完成了HTTP资源响应过后,并不断开连接,而是在一定时间内保持该连接
- 这样就可以一定程度上减少连接的次数,因此也就可以减少消耗的往返时间?
代理服务器
- 它是一种网络实体,它又称为万维网高速缓存
- 它把最近的一些请求和相应暂存在本地磁盘中
- 当新请求到达时,若代理服务器发现这个请求和暂存的请求相同,那就返回暂存的相应,而不再去按照URL访问网络资源
- 这样可以高速访问,也可减缓网络的压力
- 如果没有,则代理服务器就代表发出请求,访问资源
- 随后先将资源拷贝至代理服务器本地
- 然后再把该资源放入HTTP响应报文中
HTTP的报文结构
在服务器上存放用户信息
- 虽然上面讲过,其是无状态的,但是,有时候,我们就需要服务器能够记住客户
- 比如我们向购物车添加物品,最后才结账
- 就需要服务器记住我们,这些都是我们添加的
我们的做法就是,Cookie
- 工作原理
- 我在初次访问网站时,网站就会给我生成一个唯一的Cookie:12345678
- 浏览器将会把此Cookie存储
- 以后每次访问该网站,浏览器就会从其Cookie文件中取出该Cookie
- 并放到HTTP请求报文的Cookie首部行中
- 于是这个网站就能跟踪用户在该网站的信息了
万维网的文档
- 1.静态文档
- 不会变文档,除非人为去修改,否则既不会改变
- 最大的优点就是排版简单,可以有外行人使用
- 缺点就是不够灵活,且内容格式单调,修改麻烦
- 2.动态文档
- 万维网生成一个应用程序,不断将新的文档传送给浏览器
- 3.活动文档
- 用JAVA写的小程序
- 交由浏览器进行运行
浏览器的结构
信息检索系统
- 全文检索搜索引擎
- 等于是爬虫,不断访问各种网站。然后按照一定的规律建立一个很大的在线数据库供用户查询
- 可能很多信息都是过时的,因此需要定期维护
- 缺点是可能不够准确
- 谷歌,百度
- 分类目录搜索引擎
- 由网站主动提供信息,
- 查询时不需要关键字,有分好的目录
- 雅虎中国,搜狐,网易
电子邮件
- 简单邮件传送协议SMTP(Simple Mail Transfer Protocol)
- 邮局协议POP(Post Office Protocol)
- 过程
- 发件人调用PC中的用户代理来撰写和编辑要发送的邮件
- 点击发送邮件按钮后,发送的工作就交给了用户代理来完成
- 用户代理把邮件用SMTP协议发送给发送方的邮件服务器
- SMTP服务器收到邮件后,就把邮件临时存放在邮件缓存队列中,排队等待发送到接收方的邮件服务器
- 发送方的邮件服务器的SMTP客户与接收方邮件服务器的SMTP服务器建立TCP连接,并发送
- 接收方邮件服务器中的SMTP收到邮件后,就放入收件人的用户邮箱中,等待读取
- 收件人运行PC中的用户代理,使用POP3协议,读取发送给自己的邮件
- 图中代表的是邮件传送的发现,但是POP3的通信,是POP3客户端发起的
- 是不能够直接把邮件发送到对方的PC的
- 一方面,有的计算机没有充足的内存等资源来在后台运行邮件服务器程序
- 一方面,如果不能保持24h的互联网连接,就会漏掉邮件
- 这显然是不现实的