阅读 549

应用层中除了HTTP,你还知道点啥?

前言

Github链接地址,是我大三上考试前和朋友一起做的一些笔记,当然还有其他的学习内容,之后还会加入一些其他课程的学习内容。

思维导图

网络体系结构模型

上一篇文章中我们已经介绍过了网络的体系结构模型中的TCP层,这一次我们要讲的就是应用层,他给我们带来的用途到底有哪些呢?我想如果没做过了解的朋友们除了http也就可能只知道https了。

应用层

其实这是一个基层,为什么说是基层,因为他是一个专门为我们的开发而准备的一个平台,httphttpsDNSSMTP等一系列的协议都是在这一层建立的。

http

  • 请求行:放置请求方法(post、get。。。)、路径URL、使用的http版本、以及资源路径的位置。
  • 请求头:内部放置的是报文的部分信息。(形式:header(字段名):value(值))另外面试中的断点续传其实就是对请求头中添加Range和Content-Range来完成的。
  • 请求体:发送给服务器的数据信息。(User数据啊之类的)

http其实分为很多的版本,version1.01.1以及2

三大版本的区别

  1. 带不带流水线
  2. 是否为持久化连接

第一个问题:什么叫做流水线?

图的意思就是为了说明,数据传输只能发送一条,还是一次性能够发送多条数据的不同。这种方案需要思考的问题,就是一个数据包的分类,每个返回的数据包对应是什么数据。

第二个问题:什么叫做持久化连接?

图的意思就是为了说明,一次TCP连接只进行一次的数据传输,还是一次TCP连接能够进行多次数据传输。这种方案需要思考的问题,就是服务器的压力,因为过多的TCP连接进行了保持的话,那么造成的问题就是服务器崩溃。

https和http的区别

其实两者大致内容上来说是相同,作出的升级其实是一个安全性方面。

为什么要做安全性的升级呢? 看图说话好了,下图是通过wireshark软件对数据的一个抓包。

加密后 加密前

这还是一般的数据,如果我们数据里掺杂了我们的个人信息,比如说账号密码等等,被抓去之后,造成的结果就是灾难性的。而这就是https做了安全性处理带来的好处。害处自然也是存在的,就是需要加密和解密的时间,但是这个削弱程度已经完全的被现代社会的高速处理能力给弱化了。

DNS

DNS这个模块上,考察的点一般都是工作流程的问题,所以重点做一个讲解。

首先要知道DNS是干什么的,官方语言是将域名地址转化为IP地址。那俗话讲就是讲www.baidu.com转化为14.215.177.39。玩过云服务器的朋友应该知道,不管是哪家公司给你的公网地址都是一个IP地址。

那为什么不直接用IP地址来访问呢?

这个问题其实有挺多原因的:

  1. 好记。 生硬的数字,没有他的实际意义,如果我告诉他的IP地址和域名地址,你会记住哪个?这显然是域名地址。
  2. 分布式中的应用。 我记得很久以前听过分布式是一个轮询的请求方式,因为网络中IP是唯一的,但是和域名关联后,一个域名地址可以对应多个IP地址,你又是通过域名方式请求,也就做到了负载均衡。

请求过程详解

一般来说这种事件的发起人是我们的本地客户机,我们通过浏览器输入了www.baidu.com,那么这个时候他的探索历程开始了。

  1. 先搜索本地的hosts文件,这里可以比较清楚的看到一些IP地址对应的域名地址 (命令为:sudo vim /etc/hosts)
  2. 如果本地不存在,那我们就要改变策略,向本地域名服务器发出请求。很久以前我小时候玩qq的时候其实就是可以直接查看附近区域的IP地址存在哪些的。存在则直接返回,不存在,那我们只好继续往上找了。
  3. 这里需要注意,他是直接向根DNS服务器发出请求的,如果根DNS服务器中,我们同样的还是找不到,那我们才有开始下面的步骤,向下级服务器发出查找请求。
  4. 下级服务器不断向下查询,直到找到了对应的IP地址后,就将我们的数据进行一个返回,自此我们就得到了我们我们需要的IP地址。

总结

其实应用层还有很多很多的协议比如FTP(文件传输协议)这种专门用于文件传输的协议,SMTP(简单邮件协议)这种用于邮件发送的协议。这一类的协议他们基于的都是TCP层给出的协议作为基础的。

DNS基于的就是UDP协议完成,SMTP则是基于TCP的协议,这是因为他们对应用场景的思考,如果邮件没发到,那么跟没发没有区别,而DNS这种如果每次都要通过请求建立服务,完全比不上UDP直接发数据快的。

以上就是我的学习成果,如果有什么我没有思考到的地方或是文章内存在错误,欢迎与我分享。


相关文章推荐:

TCP层的那些知识,你掌握了多少?

Android必知必会的四大组件 -- ContentProvider篇

Android必知必会的四大组件 -- Activity篇

关注下面的标签,发现更多相似文章
评论