chapter2-应用层

本周进入到第二章应用层的学习,不得不说自顶向下学习果然能激发兴趣,因为平时开发工作经常也就是和应用层打交道,但是对具体原理总是一知半解,随着这章的阅读,能让自己对我们开发的应用程序,是怎样利用网络实现其功能的,有了更深入的了解。

我们日常中所用到的,开发的软件基本都是基于应用层的软件。不需要关心数据包到底是如何传输的,只需要按照应用层对接下一层的协议接口进行开发就可以了。

应用程序体系结构,我们最常用的是客户-服务器体系结构,比如生活中最常用的浏览器就是这种模式的。有一个总是打开的服务器用来接收各个客户端的请求,返回对应的数据。 另一个就是P2P 体系结构,和客户-服务器相反,这些应用程序在间断连接的主机之间使用直接通信,这些主机也被称为对等方。

在操作系统中,程序之间的通信是通过进行来进行的,而不是程序。一个进程可以被认为是一个端系统中的一个程序,当进程运行在同一个端系统上时,它们使用进程间通信机制进行通信。进程间的通信规则有端系统山的操作系统决定。

我们现在知道了多数应用程序是通过通信进程对组成,每对中的两个进行 互相发动报文。从一个进程向另一个进行发送报文必须通过下层的计算机网络。这里进程是通过一个被称之为套接字的软件接口向网络发送报文和从网络接收报文的。

进程寻址

为了向特定的目的地的主机上的进程发送分组,接收进程需要一个地址,而为了标识接收进程是需要通过:

  1. 主机的地址;
  2. 定义在目标主机的进程的端口号;

我们在开发应用层程序时,是不需要考虑具体是怎样将发送的数据分组发送到目的主机的,对于应用层程序来说,只需要将数据分组推送进套接字。而在套接字的另一侧, 运输层协议负责使该数据分组进入接收进程的套接字。

因特网提供的运输层的协议不止一种,我们最常见的当属 TCP、UDP 了,具体使用需要从以下几个方面进行衡量:

  1. 可靠数据传输;
  2. 吞吐量;
  3. 定时
  4. 安全性;

总结来说,TCP 提供了可靠地数据传输,因为其建立在三次握手的基础上,能够保证数据到达目的进程。UDP 是一种轻量级运输协议,没有拥塞控制,提供一种不可靠数据传输服务,也就是说,UDP客户端可以用任何它选定的速率向其下层注入数据,一般网络电话可以容忍范围内的数据丢失,更愿意应用运行在UDP上。

应用层协议

说到Web其应用层协议就是HTTP。
HTTP 请求报文:

GET /api/monitoring/converged-status HTTP/1.1\r\n
Host: 192.168.8.1\r\n
Connection: keep-alive\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36\r\n
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8\r\n

第一行为请求航,其后的都叫做首部行。

请求行的三个字段代表的是 方法字段、URL字段、HTTP版本字段
当请求为POST方式时,在首部行下方还有一个实体体,用来存放表单提交的数据。

HTTP响应报文:

HTTP/1.1 200 OK\r\n
Cache-Control: no-cache, no-store, max-age=0, must-revalidate\r\n
Content-Type: text/html\r\n
Connection: Keep-Alive\r\n
Content-Length: 1073\r\n

File Data: 1073 bytes


响应报文,也有三个部分,状态行、首部行、然后是实体体。实体体是报文的主要部分,即它包含了所请求对象的本身。

FTP文件传输协议

应用层协议FTP,作为一个文件传输协议,其和HTTP有相似的地方,底层都采用TCP传输协议,然而这两个应用也有也有一些重要的区别,其中最显著的就是 FTP 使用了两个并行的 TCP 连接来传输文件,一个是控制连接,一个是数据连接。 控制链接 用来在两主机之间传入控制信息,如用户表示、口令、改变远程目录的命令以及存放和获取文件的命令。数据连接用来实际发送一个文件。

SMTP

SMTP 是因特网电子邮件应用的核心,这个协议是用来从发送方的邮件服务器发送报文到接收方的邮件服务器的。

image.png

如上图所示,SMTP 的作用就是将邮件报文从发送邮件服务器送到接收邮件服务器。 下面大概解释下具体流程。
首先,客户SMTP(运行在发送邮件服务器上)在25 端口建立一个到服务器SMTP(运行在接收邮件服务器上)的TCP连接。 如果服务器没有开机,客户会在稍后进行重试,一旦连接建立,服务器和客户执行某些应用层的握手后,就向人们在互相交流前先进行自我介绍一样。在SMTP握手阶段,SMTP 客户指示发送方邮件地址(产生报文的那个人)和接收方邮件地址,一旦该SMTP客户和服务器彼此介绍之后 ,客户发送该报文。

这里在记录一个比较明显的问题,那就是在Bob的邮件服务器接收到邮件后,他的本地PC上的代理是如何获得位于他的某ISP 邮件服务器上的邮件呢? 这里不能再使用SMTP了,因为这里需要的是一个拉协议, 而SMTP 是一个推协议,目前流行的一些邮件访问协议可以解决这个问题,包括第三版的邮局协议(POP3) 、因特网邮件访问协议(Internet Access Protocol,IMAP) 以及HTTP。

总结: SMTP 用来将邮件从发送方的邮件服务器传输到接收方的邮件服务器;SMTP 也用来将邮件从发送方的用户代理传送到发送方的邮件服务器。如POP3这样的邮件访问协议可以用来将邮件从接收方的邮件服务器传送到接收方的用户代理。

DNS (Domain Name System)

DNS 是: 1. 一个由分层的 DNS服务器(DNS server) 实现的分布式数据库;2. 一个使得主机能够查询分布式数据库的应用层协议。 DNS服务器通常是运行BIND (Berkeley Internet Name Domain) 软件的UNIX机器。 DNS 协议运行在 UDP之上,使用53号端口。与 HTTP、FTP 和 SMTP 协议一样,DNS 协议是应用层协议。

DNS服务器不可能是单一部署的,它是一个巨大的具有代表性的分布式数据库;

image.png

DNS 是由很多DNS服务器组成,映射关系分布在全世界范围内的所有DNS服务器上。

DNS服务器分为三种: 根DNS服务器、顶级域(TOP-Level Domain,TLD) DNS服务器和 权威DNS服务器。

接下来记录一下,这三种DNS服务器之间的交互方式, 假设我现在要访问 www.baidu.com , 首先我本机的DNS客户端与根服务器之一联系,它将返回顶级域名 com 的TLD服务器 IP地址。然后 我在与这些TLD服务器之一联系,它将返回 baidu.com 的权威服务器的 IP地址。最后我将与 baidu.com 权威服务器之一联系,它将为 www.baidu.com 返回其 IP 地址。

上面说的三类DNS服务器都是处在 DNS服务器的层次结构中, 在这里我们学习到还有一类非常重要的DNS服务器,称为 本地DNS服务器。 一个 本地DNS服务器,严格来说不属于DNS服务器的层次结构,但它是非常重要的。 每个 ISP(Internet Service Provider) 都有一台本地DNS 服务器。 通过访问Windows 或者UNIX 的网络状态窗口,能够很容易的确定你本地DNS服务器的IP地址。 一般 本地DNS服务器“临近” 本主机。 基本上 ISP 的本地DNS服务器与主机相隔不超过几个路由器。

下面这幅图用来理解本地DNS服务器在交互中起的作用:

image.jpeg

接下来,要说一个DNS系统中非常重要的一个特色,DNS 是有缓存的。为了减少时延并且有效减少因特网上到处传输的DNS报文数量, DNS 会将每一个DNS 回答缓存在本地存储中。 例如本地DNS服务器在接收到一个回答时,它能够将回答中的任何信息都缓存起来,在下一个相同主机名查询时可以直接返回。由于主机和主机名以及IP地址之间的映射不是永久的,因此会有一个过期时间,一般缓存2天。

本地 DNS服务器 也能缓存 TLD服务器的IP 地址,因而允许本地DNS绕过查询链路中的根DNS服务器。

学习了上面几种应用层协议,接下来我们了解下P2P协议。

P2P

说到P2P我们常见的就是文件分发了,它和客户端-服务器模式不同,采用了一种对等方的概念。

举例来说,平时我们用的种子下载,传统下载我们是从本地客户端和资源服务器建立连接,从服务器下载,下载速度受限于服务器的上载速率以及本地客户端网络的下载速率。 而P2P下载则是所有下载方都是可以一边下载,一边将自己已经下载的资源利用上载带宽上传供其他下载者下载,从而提高效率。
常见的应用有如:BitTorrent等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容