序言

       这是计算机网络基础的最后一篇博文了,大体的从物理层到最上层的应用层做了一个大概的了解,花了也有快1个月的时间了,在本章结尾会给你们我学习该课程的视频资料,我希望能帮到所有想学习想提高自己技术的同学,我看到很多厉害的的博客的文章都被锁了,我希望高手度能够帮助刚成长并且想努力提高技术的人。所以等我以后牛逼了,肯定会帮助哪些迷茫的人,因为自己曾经迷茫过,走了很多弯路。

                                                            --WH

一、回顾

        

    1、OSI体系结构分为7层:物理层、链路层、网路层、传输层、会话层、表示层、应用层。

    2、TCP/IP的体系结构分为4层:网络接口层(物理层、链路层)、网际层(网络层IP)、传输层(UDP/TCP)、应用层(会话层、表示层、应用层)

    3、原理体系结构:物理层、链路层、网络层、传输层、应用层(会话层+表示层+应用层)

    我写文章的过程就是按照第三点这样的排列顺序,这三者的关系不要弄混淆了,其中的关系是

        OSI七层协议体系结构:优点:概念清楚,理论完整,缺点但是复杂而不实用

        TCP/IP协议族四层,缺点:太简单,但被广泛使用,

      结合上面两个的优缺点,就有了5层协议的原理体系结构,即简洁又能把概念描述清楚。

    前面4层每层的作用和功能是什么?前面讲解的非常清楚

      物理层(一)    物理层(二)

      链路层(一)  链路层(二)  链路层(三)

      网络层(一)

      运输层(一)三次握手,四次挥手

二、应用层

   1、概念

      位于计算机网络体系结构的最上层,前面四层做的所有事情就是为了他服务,他也是设计和建立计算机网络的最终目的,通俗的讲,就是我们开发的应用软件,就处于这一层,比如,QQ,浏览器访问网页,等等你看得到的应用软件都是在这一层,但是这些软件在运行的过程中,也需要依靠一些特定的协议才能完成相应的功能,比如浏览器通过网址访问网页,其中是如何做到的,这就是我们所要学习的东西。

   2、应用层中的应用软件分两种。客户/服务器和P2P体系结构

       客户/服务器(client/server)

          这种类型,就是我们很熟悉的客户端,服务器模型,客户端请求服务器,服务器响应客户端这样的一种方式进行“交流”

       P2P

          也称为对等体系结构。P2P相当于每个人的电脑度可以当服务器,也可以当客户端,不单单限制于只能客户端访问服务器,你自己的计算机可以去访问别人的计算机上的内容,别的同样可以访问你计算机上的内容,这样达到一种共享的状态。

三、应用层协议的举例。

      1、DNS协议

          Domain Name System 域名系统。也可以叫做域名解析协议。在我们在浏览器访问网页的时候,通常度是用我们所熟悉的一连串有意义的英文字符标识,比如www.baidu.com、www.sohu.com等。 但是我们学了前面的知识,计算机并不是通过这些字符串去找到对应的计算机,而是通过32位的二进制,也就是我们的IP地址来找。所以就有了DNS协议。他的作用就是将域名解析成对应的IP地址。因为让我们人去记那些IP地址,很难记得住,所以就想办法让IP地址转变为了现在的域名,在进行访问的时候,只需要将域名解析为对应的IP地址就行了,这个域名也很有讲究,其中分为好多层域名,是独一无二的。这里不细讲这个,只要我们知道,域名通过DNS能找到对应的IP地址就行了

          DNS协议是如何工作的呢?

          1、通过域名访问网页

          2、计算机会先将域名发送到一个解析域名的服务器上

             2.1 在其服务器上有很多服务器,能解析各种各样的域名,比如有专门解析.org的,解析.com的,解析.net的。等等,最主要的有一个根域名服务器,

             2.2 域名解析(在服务器上查找IP地址)的过程有两种算法,迭代查询,递归查询。一般是两种查询的结合

             2.3 本机计算机找到其中一台解析域名的服务器(可能是.com),如果没有找到对应的IP地址,那么就会去找根域名服务器,根域名服务器知道所有的子服务器,所以他肯定知道该域名所对应的IP地址在那个子服务器中,所以告诉第一次查询的服务器要他去另一台服务器上找,找到了,就将其返回给计算机,以后在有另一台计算机也通过这个域名访问,那么第一台服务器会有原来的域名IP地址的缓存,就不用去找根服务器了。

          3、找到了,就能找到我们要访问的服务器了。

        

              

      2、http协议

          统一资源定位符URL。

          URL:统一资源定位符,通过下面格式,可以看出,就是用来定位我们所需要资源在服务器上的位置。

            格式:<协议>://<主机>:<端口>/<路径>

              协议:http

              主机:域名/IP地址,原理度一样,到头来还是会转换为IP地址,通过这个才能找到目标服务器

              端口: 在传输层需要使用的,访问目的主机的哪个端口号。 

              路径:精准的定位我们所需要的资源位置、    

                平常会省略协议和端口号,因为这些度是默认的,在访问主页时,路径也会省略。比如www.baidu.com这个默认进入百度的主页 完整写法 http://www.baidu.com:80/index.htm

          超文本传送协议HTTP。

          作用:怎样向服务器请求文档、服务器怎么把文档传送给浏览器,通俗点讲,就是我们想服务器访问网页资源时,服务器如何把网页上的东西传给我们。

          客户端向服务器:请求报文    服务器向客户端:响应报文

          什么意思呢?在通过URL访问你服务器时,就会发送一个请求报文,告诉服务器需要哪些东西,服务器知道后,返回一个响应报文给客户端,其中就会带有一些网页信息。就是通过这个来达到传送网页资源的目的,现在来具体看看,请求报文和响应报文的格式。

          格式度一样,内容不一样,格式都市

                  请求行            响应行

                  请求头部           响应体

                  请求数据           响应数据

          请求报文格式

              

          响应报文格式

              

            通过访问www.solu.com来看看我们发送的请求报文和响应报文是什么样的

          请求报文:

              

              

            1、GET /http://www.sohu.com HTTP/1.1 请求行,只不过这里被分开了,请求的方式  URL 版本

            2、Host:主机名 www.solu.com      

            3、User-Agent:使用什么代理服务器,这里就是FireFox,也就是火狐

            4、Accept:能接收的数据类型有哪些

            5、Accept-Language:表示用户希望优先想得到的版本,一次排列下去,先是中文,再是英文

            6、Accept-Encoding:通知服务端可以发送的数据压缩格式

            7、Cookie:浏览器端的一个技术,在服务器上记录用户信息,但是也会在浏览器中保存一份。

            8、Connection:连接的方式,有两种,非持续连接和持续连接,非持续连接,一次请求/响应就对应一个TCP连接,接到了响应该连接就关闭,然后在发送请求就在建立TCP连接,持续连接就相反,这里使用的是持续连接

            9、Upgrade-Insecure-Requests:该指令用于让浏览器自动升级请求从http到https,用于大量包含http资源的http网页直接升级到https而不会报错.简洁的来讲,就相当于在http和https之间起的一个过渡作用,这个可以放一放,不懂没关系。

            以上2到9就是请求头部,由于一般请求报文度不会有请求数据的,所以在9后面就没有内容了,一般如果想要发送数据过去度会通过在域名后面加?然后将数据创送过去

          响应报文

                

            这其中就来简单看看响应行中的状态码把,响应体中内容太多,一下子讲解不清楚

            状态码由三位数字组成,可以分为5大类共33种

            1xx:表示通知信息的,比如请求收到了或正在进行处理

            2xx:表示成功,也就是服务器接收到了你的请求,并成功处理了,一般最喜欢看到的就是200了

                200:这次请求成功了。

            3xx:表示重定向,服务器告诉浏览器要完成请求你必须采取进一步的行动,也就是去访问另一个网页,

            4xx:表示客户的差错,比如请求中有错误的语法或不能完成

                404错误:就是找不到资源,就是你的URL写的有错误,使定位不到正确的资源

            5xx:服务器的差错,如服务器失效,或者内部出现异常不能完成你的请求

                500错误:就是服务器写的代码中有问题。

          还有很多中状态码,有兴趣的可以百度查一查。

五、总结

      到此为止,就真正的结束了,可能http讲的很简单,但是http协议的内容实在是太多了,只能取重要的一点点讲解一下,有兴趣的同学可以自己去网上找找http的书籍观看,推荐一本HTTP权威指南,我有电子版,资源连接会在下面,可以自己去下载。。后续有时间,我也会花时间把这本书看完,然后写成博文。

      计算机网络教程视频资源链接      密码:9wr2

      

      HTTP权威指南        密码:k07z

      如果失效了,请加我qq:526745683 向我索取资源,注明博客园。谢谢

第六章 应用层(DNS和http协议详解)的更多相关文章

  1. “全栈2019”Java多线程第六章:中断线程interrupt()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  2. “全栈2019”Java异常第六章:finally代码块作用域详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  3. “全栈2019”Java多线程第五章:线程睡眠sleep()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. 第十六章 IIC协议详解+UART串口读写EEPROM

    十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...

  5. DNS协议详解

    DNS协议详解 简介 DNS(Domain Name System)域名系统,主要实现的功能是将域名转换成ip地址的一个服务.它是由一个分层的DNS服务器实现的分布式数据库,同时.他也是一个使得主机能 ...

  6. 第3章 TCP协议详解

    第3章 TCP协议详解 3.1 TCP服务的特点 传输协议主要有两个:TCP协议和UDP协议,TCP协议相对于UDP协议的特点是 面向连接使用TCP协议通信的双方必须先建立连接,完成数据交换后,通信双 ...

  7. “全栈2019”Java第六十七章:内部类、嵌套类详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. “全栈2019”Java第六十五章:接口与默认方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. 第二章 IP协议详解

    第二章 IP协议详解 2.1 IP服务的特点 它为上层协议提供了无状态,无连接,不可靠的服务 名称 简介 优点 缺点 对付缺点的方法 无状态 IP通信双方不同步传输数据的状态信息 无须为保持通信的状态 ...

随机推荐

  1. mvc深入理解

    对于v和c好理解, 对于model分为数据对象模型和业务逻辑模型,一般为一个类,数据对象模型包含对一个具体数据表的相关操作,业务逻辑模型为处理一些业务逻辑.

  2. zend 汉化

    http://jingyan.baidu.com/article/4f34706ecdb566e387b56d05.html

  3. cinder ha

  4. @gettrcname.sql

    http://www.eygle.com/archives/2007/05/script_gettrcname.html 最近有很多朋友问起<深入浅出Oracle>一书中的一个脚本gett ...

  5. Oracle primary,unique,foreign 区别,Hibernate 关联映射

    Oracle primary,unique,foreign 区别 转:http://www.cnblogs.com/henw/archive/2012/08/15/2639510.html NOT N ...

  6. 【JSP】自定义标签开发入门

    JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...

  7. 关于e^PI>PI^e

  8. Unix常用指令

    pwd 表示获取自己当前所在位置 ls 表示查看当前文件夹中的内容 cd 进入指定目录 mkdir  文件夹1 创建一个文件夹名为文件夹1的文件夹 rmdir  文件夹2 删除一个文件夹名为文件夹2的 ...

  9. 关于mysql占用CPU过高,问题解决

    使用SHOW PROCESSLIST 查看 原因: 使用了 一个触发器 不断的去删除日志,保证每个用户的日志只有10条 去掉之后,CPU使用率从97% 降到了 %. 利用show columns fr ...

  10. JSON.parse解析单引号名值对报错

    今天整理代码的时候发现JSON.pare解析时会报了一个错误,而且很难找原因,调试了几分钟没有成功,猜测可能是单双引号引起的错误.修改了单双引号后程序正常运行了,现在记录下这个bug. 关于JSON. ...