计算机网络----应用层

《域名系统》

  《什么是域名系统?》

    域名系统DNS(domain name system)是互联网使用的命名系统

  《为何需要域名系统?》

    应用层中问题的解决是通过

      不同主机 的多个应用进程 之间的 通信和协同工作完成的

 

    通过套接字(IP+端口号),可以唯一确定某主机上的某个进程

 

    IP对于人类来说太难记了,我们通常会使用机器名字(域名)来记录某个主机

    但是机器名字(域名)不是固定的,机器处理起来困难

       所以我们需要将域名解析成IP

    这就需要域名系统

 

  《什么是域名?》

    任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字

    为域名,“域”(domain)是名字空间中一个可被管理的划分

 

    规定域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符

    同时不区分大小写,标号中除连字符“-”外,不能使用其他的标点字符

 

        如:

      www.cnblogs.com

      从右到左,分别为顶级域名,二级域名,三级域名

  

    多个标号组成的完整域名总共不超过255个字符

    各个域名由其上一级管理,顶级域名由ICANN管理

   

   《什么是域名服务器?》

      域名服务器(Domain Name Server,DNS)是一种计算机网络服务

      用于将域名解析为IP地址,以便在互联网上定位和连接到相应的网络资源。

      当用户输入一个网站域名时,域名服务器将查询其存储的域名与IP地址的映射关系

      然后返回相应的IP地址给用户的计算机

      

    《区》

      理论上可以将每一级的域名都有一个相对应的域名服务器,但是如此

      会让域名服务器太多,导致运行效率降低

      所以

      DNS服务器的管辖范围是以区为单位,区<=域(即区是域的子集)

      如图:  

        

 

              可以看到:区管辖了多个域名

             即一个域名服务器都只对域名体系中的一部分进行管辖

             (分布式结构)

    

  《域名服务器的类型(按照作用来分)》

     DNS服务器通常把数据复制到几个域名服务器

     根域名服务器

       全世界的根域名服务器只使用13个不同的域名

       但是注意这并不代表根域名服务器仅由13台机器组成

      

       而是13套装置,每一套装置在很多地点安装根域名服务器,使用同一域名

       即

        一个域名可以对应多个IP(比如一个网站通常是由多个服务器来管理)

        一个IP可以对应多个域名(比如云服务器,给用户多个域名,但是都是在同一台服务器上)

         

       现在世界上大部分DNS域名服务器都能就近找到一个根域名服务器查询IP地址

       根域名服务器保存了所有的顶级域名服务器的域名,及其IP地址

       如:  

          要查询www.baidu.com

          告知本地域名服务器   管辖xxx.com的顶级域名服务器的ip地址

          

          

     顶级域名服务器

       存放在顶级域名服务器上注册的权限域名服务器的域名及其ip地址

       告知管辖xxx.baidu.com的权限域名服务器的ip地址

 

     权限域名服务器

        每一个区设置相应的权限域名服务器,直接负责维护该区中的所有主机的域名到

        IP地址的映射

              即到这里如果还找不到 www.baidu.com 那么就向其他权限域名服务器找

        还找不到就报错

     本地域名服务器

        开始本地域名服务器是空的,在向外不断找ip地址的过程中,

        利用高速缓存不断保存一些ip地址

 

  《域名系统的工作方式》  

    主机向本地域名服务器的查询一般为递归查询

      即本地域名服务器知道就返回

       不知道则 本地域名服务器以DNS客户的身份

       替主机继续向其他根域名服务器查询

      即递归查询的结果不是IP地址,就是报错

    

        本地域名服务器向根域名服务器查询通常是迭代查询

      即根域名服务器要么给出要访问的IP地址,

      要么告诉本地域名服务器下一步应该到哪个顶级域名服务器查询

      (告诉本地域名服务器 顶级域名服务器的ip地址)

    

    通常在域名服务器中都使用了高速缓存

   

  《DNS资源记录与报文格式》

    DNS资源记录

      

 

 

             

 

 

 

    报文格式

      

 

 

       hosts文件:

      

 

 

           

 

           奇怪的是,我的hosts文件是空的?不过没关系,

  如果想要改写hosts文件进行如下操作:

    具体看博客<-----

    

 

 

       

 

 

《HTTP》

  

 

   TCP三次握手,

  前两次握手是建立TCP连接吗,花费一个RTT

  第三次握手是客户端将请求报文发送给服务端

  然后服务端发送了响应报文,共花费了一个RTT (P277)

  然后就是开始接收文档的时间

  一旦服务器发送完响应后TCP断开

《HTTP/1.0》

  在这个版本,每一次请求文档都要走上面的一个流程

  即请求一个资源都要建立TCP(一个RTT)

   然后来回请求响应(一个RTT)

   响应发送后立马断开TCP

 

  如果一个网页中有1个html文件,2张图片(图片被当做文件)

  那么在这个版本下要建立3次TCP连接

  至少6个RTT时间

  这种被称为非持续连接

  

  而且只有在接受到响应报文后才能再次发送响应报文

 

《HTTP/1.1》

    这个版本改进:

   升级为了持续连接,即在服务器发送响应后仍然在一段时间内TCP连接还保存

   但是客户端接受完响应后还是会断开

   

   可以在受到响应报文之前,再次发送请求报文

  我们可以用流水线的模式:

    即可以一个接一个地发送请求报文,从而服务器也可以一个接一个(不断地)发送响应报文

    这样响应相当于一直没完,TCP连接得到多次使用

  同时还有非流水线的形式(P278)

 

《HTTP/2.0》

  这个版本下,服务器可以并行地响应

  TCP连接真正地达到复用(即客户端接受完响应,TCP还可以存在)

  不发送重复的首部,同时压缩首部

 

代理服务器

HTTP的报文结构

cookie

《文件传送协议》

  《FTP》

  《TFTP》

《电子邮件》

  《用户代理》

  《邮件服务器》

  《邮件发送协议》

      《SMTP》

      《MIME》

  《邮件读取协议》

      《POP3》

      《IMAP》

《远程终端协议》

   《telnet》

 

 《实验心得》

  《wireshark实验》

    实验中软件的接口没有显示的解决方法 <-----

 

  wireshark进行过滤的方法<-------

 

    其中常见的过滤方式:

    http.request.methord=="POST"

    

 

 

        还有就是可以通过追踪流,这个通过选定某一个,然后追踪可以筛选出

    这个请求和响应的全过程,不会有其他的请求

 

 

  如图是用wireshark抓的包:

 

   先从上到下来看看都是一些什么东西:

  Frame(帧)和 Ethernet II 都是 链路层中的

  

 

 

    其中的mac为物理地址的意思,即

    

      

  这个是网络层中的,显示了ip地址

 

  

 

    运输层中的,显示了端口号,而且这个是用的TCP协议

 

     

 

  这个即为HTTP,是应用层中的

  

  如果要抓QQ的包如何抓?

   一般要设置过滤

 

  这是QQ使用的协议

 

  如果要尝试在登入时看账号密码?

    那么过滤出HTTP,然后看POST请求

 

 

《DNS实验》

  你如何看到自己的本地域名服务器?(你的主机主动发送DNS请求报文?)

    试试命令行

    

        

 

  下面我们用wireshark来分析一下DNS报文

    这是一般DNS的报文格式:

 

  

 

      这个我用wireshark捕获到的DNS请求中的DNS部分:

 

          

      通过上面图的对比,现在可以很好知道分析了

    

        Transaction ID: 这个是标识唯一的一对DNS请求和响应

 

    在Flag中有部分详细信息:

      

 

 

           

 

 

         更加具体的内容<----

  

    <在Packet traced 中的DNS实验>

    

 

 

 

 

        如图PC1的本地域名服务器为dns.baidu.com

      现在我想让PC1通过dns.com这个顶级域名服务器来访问到www.sina.com

      如何设置DNS资源配置?

    

      首先来解释一下截图中dns.baidu.com的配置

      其作为PC1的本地域名服务器,那么PC1中进行DNS解析首先访问dns.baidu.com

      假设就是要解析www.sina.com

      则

        

 

 

        表示要解析com,那么就找管理com这个域的域名为dns.com的服务器吧

 

        

 

 

 

 

 

        表示dns.com这个域名所对应的IP地址是多少

        即告诉如何找到dns.com这个域名服务器

 

 

   

 

 

 

          然后dns.com和dns.baidu.com以上面相同的含义去设置

      最终可以达到目的

 《packet tracer 中的 电子邮件服务器 和 ftp服务器 配置》

   

 

   如图,我想要实现PC0发邮件给PC1,或反过来,均可发送成功

  要如何配置?

  首先说一下过程:

  假设是PC0发邮件给PC1,那么

  PC0配置如下:

  

     注意这个

 

 

  这个是配置哪一个电子邮件服务器用来运行incoming mail(收) 或者 outgoing mail (发)程序

  对于我这个图,两个程序都是在上跑

 

 

  然后发送邮件

     

   然后PC0发送邮件给PC1,通过本地域名服务器首先会找到smtp.sina.com,

   本地域名服务器这里我设置的是

  

 

 

    

  然后PC0通过域名解析找到了sina电子邮件服务器,

 sina电子邮件服务器配置如下:

  

 

 

 

 

    然后sina电子邮件服务器要与接受方电子邮件服务器建立TCP连接

   其通过1234@qq.com

  知道其电子邮件服务器为qq.com

  则我们要设置qq.com的域名解析

  注意这里设置的qq.com是最终的了,不能在设置如

    qq.com   dns.qq.com   NS

    dns.qq.com   xxxip     A

 

    然后在dns.qq.com  中放 qq.com 的ip

    而是要直接告知qq.com 这个电子邮件服务器的ip 

  

  1. SMTP服务器会从邮件地址中提取出收件人的域名部分(例如abc@xyz.com中,xyz.com就是收件人的域名)。

  2. SMTP服务器将提取出来的域名提交给本地DNS服务器进行解析。如果本地DNS服务器中有该域名的缓存,则直接返回对应的IP地址;否则将通过递归查询将请求转发至顶级域名服务器,逐步向下查询直到找到对应的IP地址。

   

  

   所以还是要域名解析,即要给sina电子邮件服务器设置本地域名服务器

   然后通过域名解析找到了qq电子邮件服务器

   然后邮件就放在这台服务器上等待PC1进行收取

   PC1进行收取时要找pop.qq.com,即还是要进行域名解析

   解析后找到了qq电子邮件服务器

    然后建立TCP连接,然后

    

 

 

     注意点两下receive

   

        然后配置ftp就简单了:

    

 

 

       ftp服务器上设置

    然后设置域名解析

    然后在主机终端上运行:

    

 

 

 

 

 

  

 

     

 

 

 

 

 

 

 

 

 

posted @ 2023-03-18 23:47  次林梦叶  阅读(70)  评论(0)    收藏  举报