408必看之·你确定你了解应用层吗?(每日补充中ing)

?首先得说!

?1.本专栏的计算机网络文稿主要是因为爱好,顺便包含了408考试的全部内容,如果可以将其内容全部掌握,408家族之一的计网组织便不攻自破了。

?2.本专栏将持续推送总结类笔记以及对应计算机网络习题总结,如对考试有所要求可以订阅本专栏获得第一手☝?更新信息哦~各位的点赞和收藏真的是满满地给我动力!!??

?3.后续可能会对408和各高校的计网题目分类拆解


L:大仙这就是“计网”组织吗?传说中408家族的四大组织之一?

?:没错!看来你也了解到这一步了?,那也就不瞒你了,对的

L:传闻四大组织服务的主子各不相同,不知“计网”为谁服务啊

?:简单来说,网络应用就是计算机网络存在的理由;如果我们不能构想出任何有用的应用,也就没有任何必要去设计它们的网络协议了

L:所以说,计网 是一个为网络应用服务的组织了?

L:就让我把这个组织搅个底朝天吧!

?:小子!胡闹,别乱来~ 


目录

?首先得说!

?一、假如你想设计一个网络应用

⚡️客户/服务器模型(C/S)

1.服务器特点

2.客户机特点

3.工作流程

4.主要特点

⚡️B/S结构(Browser/Server)

C/S与B/S谁更好呢?

⚡️P2P模型

1.优点

2.应用

3.缺点

⚡️进程通信

1.客户和服务器进程

2.进程与计算机网络之间的接口

⚡️DNS:因特网的目录服务

1.DNS提供的服务

·为什么说DNS是应用层协议?

2.层次域名空间

3.域名服务器

?根域名服务器

?顶级域名服务器

?权限/授权域名服务器

?本地域名服务器

4.域名解析过程


?一、假如你想设计一个网络应用

·假如咱们对网络应用有一些想法,自己也想制作一些网络应用。那么如何将此想法转变为现实呢?

·我们要知道,研发网络应用程序的核心是写出能够运行在不同端系统通过网络彼此通信的程序

·当咱研发新应用程序时,需要编写将在多台端系统上运行的软件(比如在mac上的CSDN和华为p40上的CSDN);同时由于网络核心设备(如路由器、链路层交换机)并不在应用层上起作用,因此我们无需在应用层编写运行在网络核心设备上的程序。


✨端系统:因特网上的所有主机:macbook、ipad、iphone等等

✨✨✨我是分割线✨✨✨

⚡️客户/服务器模型(C/S)


引子:

?:小子,看这名字,能猜猜这模型有什么特点吗?

L:客户和服务器?听名字挺像顾客和店家的感觉啊,那我就以KFC举个例子

L:把KFC类比为服务器,那么一家KFC的具体地址咱们得知道吧,不然怎么去KFC吃饭呢?其次KFC总不能开两分钟就关门吧,它得持续保持打开!

L:哦对了!KFC还不需要知道我们从哪来的!

服务器-客户机

1.服务器特点

  1. 永久提供服务
  2. 永久性访问地址/域名
  3. 服务器程序不需要知道客户程序的地址

?:小子,分析的不错。那你反向分析分析客户端啊,行吗你?

L:随随便便~我们去KFC就是去享受它提供给我们的服务;除此以外我们可以一周就星期四去(因为划算),也可以天天去,总的来说:我们间歇性地体验美食服务;我们可能从家里去KFC,也可能从学校去KFC,总之我们的起始地是动态的;最后我们也必须知道KFC在哪里,也就是知道它的地址

2.客户机特点

  1. 与服务器通信,使用服务器提供的服务
  2. 间歇性接入网络
  3. 可能使用动态IP地址
  4. 客户程序必须知道服务器程序的地址

·综上,出于好玩的心理,?或者你可以说是应试,我想了个好玩口诀:

·服务器特点:校门口的  KFC24小时营业,它不知道我今天从寝室来还是从教室来。
                          确定地址    永久提供服务           服务器不需要知道客户程序的地址

·客户机特点:我 每周四 放学都从教室或寝室出发校门口的KFC 体验美食

                              间歇性                   动态IP                      服务器地址     使用服务


3.工作流程

  1. 服务器处于接收请求的状态
  2. 客户机发出服务请求,并等待接收结果。
  3. 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。

4.主要特点

    1.网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的。

    2.客户机相互之间不直接通信(例如:Web应用中两个浏览器并不直接通信)

   

    3.可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数有限。

✨解决办法:应用数据中心

·一个数据中心能够有数十万台服务器,它必须要供电和维护

·一个流行的社交网站站点如果仅有1台服务器来处理所有请求,将很快变得不堪重负。为此配备大量主机的数据中心常被用于创建强大的虚拟服务器。例如:谷歌、百度、阿里、腾讯、字节就有一个或多个数据中心


⚡️B/S结构(Browser/Server)

B/S结构

简而言之,B/S架构是从C/S架构改进而来,可以说是三层C/S架构 :在客户机和服务器之间多了一个WEB服务器。

客户机上只要安装一个浏览器(如Chrome、Safari、Microsoft Edger)服务器安装(SQL Server、Oracle、MYSQL)等数据库。浏览器通过Web Server 同数据库进行数据交互。


C/S与B/S谁更好呢?

在响应速度,用户界面,数据安全等方面,C/S强于B/S

在业务扩展和适用www条件下,B/S明显胜过C/S。

可以这么说,B/S的强项就是C/S的弱项,反之亦然;它们各有优缺点,相互无法取代,因此采用C/S与B/S混合模式才是最佳方案。

✨✨✨我是分割线✨✨✨

⚡️P2P模型


·P2P模型中,所有主机是平等的,任意一对计算机称为对等方(Peer),直接相互通信


1.优点

  1. 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,大大提高了系统效率和资源利用率
  2. 多个客户机之间可以直接共享文档(BitTorrent)
  3. 可扩展性好:下载的人越多,下载速度越快传统服务器有响应和带宽的限制,因此只能接受一定数量的请求)
  4. 网络健壮性强,单个结点的失效不会影响其他部分的结点

2.应用

1.BitTorrent(P2P)

2.迅雷(P2SP) ·一边从服务器下载,一边从其他用户那下载

3.视频会议(Skype) 


3.缺点

  1. 在获取服务的同时,还要给其他结点提供服务,会占用较多的内存影响整机速度

✨✨✨我是分割线✨✨✨

⚡️进程通信

·用操作系统的术语来说,进行通信的实际上是进程(process)而不是程序。一个进程可以被认为是运行在端系统的一个程序。我们关注运行在不同端系统上的进程间的通信。

·在两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信。


1.客户和服务器进程

·在一对进程之间的通信会话场景中

?客户:发起通信(即在会话开始时发起与其他进程的联系)的进程被标识为客户

?服务器:在会话开始时等待联系的进程被标识为服务器

·对于web:浏览器是一个客户进程;Web服务器是一台服务器进程

·对于P2P文件共享:

(1)下载文件的对等方标识为客户,上载文件的对等方标识为服务器

(2)P2P文件共享的某些应用中,一个进程既能够是客户又是服务器

⚡️DNS:因特网的目录服务


?:小子,因特网上的主机和咱们人类一样,可以用多种方式进行标识。主机的一种标识方法是用它的主机名(hostname),如 www.baidu.com、www.google.com 等,这些名字便于记忆也乐于令人们记忆

L:哦哦,所以主机名就好比咱们人类的名字对吧,好记!

?:但是主机名几乎没有提供关于主机?在因特网中位置的信息;况且主机名可能由不定长的字母数字组成,路由器难以处理,因此主机也可以使用IP地址(IP address)进行标识。

L:所以IP地址就好比咱们人类的身份证号咯!


1.DNS提供的服务

·人们喜欢记好记的主机名;而路由器喜欢记定长的、有层次结构的IP地址,因此就需要一种能进行主机名到IP地址转换到目录服务——DNS的主要任务

·DNS是:

  1. 一个由分层次的DNS服务器实现的分布式数据库
  2. 一个能使主机查询分布式数据库的应用层协议
  3. DNS协议运行在UDP上,使用53号端口
  4. DNS服务器通常是运行BIND软件的UNIX机器

·从概念上可将DNS分为3个部分:层次域名空间域名服务器解析器


·为什么说DNS是应用层协议?

1.使用客户-服务器模式运行在通信的端系统之间

2.在通信的端系统之间使用下层的UDP传送DNS报文

❗️特别之处在于:DNS不是一个与用户直接打交道的应用(HTTP、FTP、SMTP),它为因特网上的应用程序及其他软件提供一种核心功能(主机名---->IP地址)

实现过程如下:

举例,林轩的mac上的一个浏览器请求URL  二·浮光掠影_kikokingの比特宇宙-CSDN博客https://blog.csdn.net/qq_54151955/article/details/121279919?spm=1001.2014.3001.5501

  • step1.林轩的mac上运行着DNS应用的客户端
  • step2.浏览器从上述URL中抽取出主机名CSDN博客 - 专业IT技术发表平台,并将这个主机名传给DNS应用的客户端
  • step3.DNS客户端向DNS服务器发送一个包含主机名的请求
  • step4.DNS客户最终会收到一份回答报文,其中包含有对于该主机名的IP地址
  • step5.浏览器能够向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接

2.层次域名空间

·因特网采取层次树状结构的命名方法:举例:kikoking.blog.csdn.net(119条消息) kikokingの比特宇宙_kikokingzz_CSDN博客-C的语言世界,数据结构的江湖,CSAPP 加油站领域博主https://kikoking.blog.csdn.net/

·域名即主机名;域是名字空间中一个可被管理的划分,域可以划分为子域,而子域可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域

·每个域名都由标号序列组成,各标号之间用点“.”隔开

·关于域名中的标号有以下几点需要注意:

  1. 标号中的英文不区分大小写
  2. 标号中除连字符(-)外不能使用其他的标点符号。
  3. 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符。
  4. 级别最低的域名写在最左边,级别最高的顶级域名写在最右边。

?:小子看看这层次域名空间,想到些什么?

L:这分成子域,子域的子域,不就相当于咱们现实生活中的地址嘛?不愧是美国人先研究出来的,这地址顺序和英文一样啊!

?:哟呵,小伙子发现的不错嘛!

L: 中国.黑龙江省.哈尔滨市.哈尔滨工程大学 

Harbin Engineering University.Harbin City.Heilongjiang Province.China

       四级地名                              三级地名     二级地名                 顶级地名

L:不就是如此!just so so~


·对于上述案例 也就很好理解了:

顶级域名(Top Level DomainTLD)分为如下三大类:

1.国家顶级域名(nTLD)

·国家和某些地区的域名,如“.cn”表示中国,“us”表示美国,.uk"表示英国。

2.通用顶级域名(gTLD)

·常见的有“.com”(公司)、“.net"(网络服务机构)、“.org”(非营利性组织)和“.gov"(国家或政府部门)等。

3.基础结构域名

·这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称反向域名。

3.域名服务器


  1. 因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型
  2. 域名到IP地址的解析是由运行在域名服务器上的程序完成
  3. 一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位),一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
  4. 每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器。
  5. ·DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上。

·采用分布式设计的DNS,是一个在因特网上实现分布式数据库的精彩范例。主要有4种类型的域名服务器


?根域名服务器

  • 1.最高层次域名服务器,因特网上有13个根域名服务器
  • 2.所有根域名服务器都知道所有的顶级域名服务器的IP地址
  • 3.本地域名服务器无法解析时,首先求助于根域名服务器
  • 4.根域名服务器掌管顶级域(.com/.net),但通常不直接将查询的域名转换为IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器查询

?顶级域名服务器

  • 1.管理在该服务器注册的所有二级域名
  • 2.对DNS查询请求可能是最后的结果,也可能让你找下一个服务器(就是给你下一个服务器的IP)

?权限/授权域名服务器

  • 1.每台主机都必须在授权域名服务器登记(1台主机最好至少有2个授权域名服务器-万一一个坏了呢?那就找不到主机了)
  • 2.许多域名服务器同时充当本地域名服务器和授权域名服务器
  • 3.授权域名服务器总能将其管辖的主机名转换为该主机的IP地址

?本地域名服务器

  • 1.每个因特网的服务提供者(ISP)、或一所大学、或者未来的林轩大佬!都可以拥有一个本地服务器
  • 2.当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器

4.域名解析过程


·正向解析:域名--->IP地址

·反向解析: IP--->域名

·重点:当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器(后面有道题,这里是重点!)

·两种查询方式:

 


 ·上题谈到了本地缓存问题,这边就补充一下:为了提高DNS的查询效率,在域名服务器中广泛使用高速缓存。当一个DNS服务器收到该DNS的查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同域名查询到该DNS服务器时,该服务器就可以直接告诉它答案啦!

·但是DNS服务器会在一段时间过后丢弃告诉户

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>