计网第二章——应用层

应用层

应用程序体系结构

应用程序体系结构由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序。

客户-服务器体系结构(c-s)

  • 特点是“一台服务器 — 多个客户机”, 客户机通常充当发起请求的角色,而服务器则通常充当接收请求,提供响应的角色;

  • 服务器主机是总是打开的, 客户机主机则并不总是打开;

  • 服务器是处理所有逻辑的中心;

  • 基于2的原因,两个客户机一般是不能直接通信的, 要进行通信必须经过服务器。

  • 虽然客户机/服务器体系结构的特征是“一对多”,但是服务器却并不总是一台,因为有的时候要处理海量的客户机的请求, 一台服务器很快就会不堪重负,所以这个时候常用服务器集群技术(server clustering)创建强大的虚拟服务器。所以这里“一对多”的一要理解为一组服务器组成的“一”个整体的意思。

image-20210329151839910

image-20210329151849721

P2P

  • 进行通信的的并不是客户机/服务器,而是两台客户机,进行通信的可能是两台用户的电脑,两个手机,或者一台电脑和一个手机,总之,进行通信的任意一对都被称为“对等方”;
  • 客户机间的直接通信使得P2P有了强大的自扩展性(self-calability);
  • P2P体系结构对基础设施服务器有最小的依赖, 这是和基础设施密集的客户机/服务器体系结构是截然相反的。
image-20210329152210118

image-20210329152224593

进程通信

  • 端系统在进行通信的适合实际上是 进程 而不是 程序,通过跨越计算机网络交换报文;
  • 在C-S体系进程中,发送通信的进行被标识为客户,在会话开始前等待联系的进程是服务器;
  • 每队中的两个进行互相发送报文,进程通过一个套接字向网络发送和接收报文;
    • 套接字是同一台主机内应用层与运输层之间的接口;
    • 套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元;
    • 可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。
img

运输层(亿点点

对运输层的要求

  • 可靠数据传输;
  • 吞吐量——发送进程能够向接收进程交付比特的速率;
  • 定时;
  • 安全性;

应用层协议

内容

  • 交换的报文类型,例如请求报文和相应报文;
  • 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的;
  • 字段的语义,即这些字段中包含的信息的含义;
  • 一个进行何时以及如何发送报文,对报文进行相应的规则。

HTTP

HTTP详解

  • cookie一般由服务器附在响应头中传输给客户端,客户端会将其存在本地缓存中;
  • 客户端下一次发送请求的时候将其附加在请求头中,随着请求一起发送给服务器;
  • 服务器收到cookie通常会解析出来sessio66t6tnid,去session状态列表中进行查找(用户的状态信息)。

web缓存器

web缓存器也叫代理服务器,它是能够代表初始web服务器来满足HTTP请求的网络实体,它既是客户端又是服务器,可以大大减少对客户请求的相应时间。实例:CDN(内容分发网络)。

具体流程为:

  • 浏览器建立一个到Web缓存器的TCP连接,并向其发送一个HTTP请求;
  • Web缓存器进行检查,查看是否存储了该对象副本,若有就将其返回给浏览器;
  • 若没有,就建立一个与该对象的初始服务器的TCP连接,并向其发送HTTP请求,收到该请求后 初始服务器向该Web缓存器发送具有该对象的HTTP相应;
  • 当Web缓存器接收到该对象时,它在本地存储空间存储一份副本毛,并向浏览器用HTTP相应报文发送该副本。

电子邮件

邮件系统由三个主要部分组成:用户代理、邮件服务器、简单邮件传输协议(SMTP)。

  • 用户代理:用户使用的电脑、手机等用来查看邮件的设备;
  • 邮件服务器:每个用户都有一个邮件服务器,从发送方的用户代理传输到自己的邮件服务器,再发到接收方的邮件服务器;里面会有一个报文队列,若传输失败则会重传;
  • 简单邮件传输协议:用于从发送方的邮件服务器发送报文到接收方的邮件服务器,采用TCP可靠数据传输服务。

总体流程(A->B发邮件):

  • A调用其邮件代理程序并 提供B的邮件地址,撰写报文,然后指示用户代理发送该报文;
  • A的用户代理把报文发送给其邮件服务器,进入报文队列中;
  • 运行在A的邮件服务器上的SMTP客户端发现了报文队列中的报文后,创建一个运行在B的邮件服务器上的SMTP服务器的TCP连接
  • 经历一些SMTP握手后,SMTP客户通过该TCP连接发送报文
  • 在B的邮件服务器上,SMTP的服务器端接收该报文。B的邮件服务器将该报文放入B的邮箱中
  • 在B方便的时候,其调用用户代理阅读该报文。

SMTP特点

  • 采用TCP可靠数据传输服务;
  • 一般不适用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球两端也是这样;
  • 若采用持续连接,则若发送方邮件服务器有几个报文发往同一个接收邮件服务器,可通过同一个TCP连接发送这些所有的报文。

SMTP和HTTP对比

HTTP(超文本传输协议)与SMTP(简单邮件传输协议)都属于应用层的协议,在我们的生活中应用广泛。

通常情况下http协议负责从web服务器向web浏览器传输文件来给用户提供web服务;而smtp协议则负责将电子邮件从一个邮件服务器传输到另一个邮件服务器。

共同点

  • 它们都使用TCP连接;

  • 它们都可以采用持续连接(同一个用户有多个请求时可以连续使用一个TCP连接通道);

不同点

  • HTTP是一个拉协议,多为用户通过浏览器像web服务器请求资源,将资源下拉到本地,多为文件接收方来发起请求SMTP是一个推协议由发送方来发起请求,从而将邮件从发送方邮件服务器推到接收邮件服务器中;
  • SMTP将它的每个报文都按照7比特ASCII码来进行编码;HTTP则没有此限制;
  • HTTP和SMTP在进行文档处理时也不大相同:http将每个对象封装在自己的http响应报文中;smtp将所有的对象封装在一个报文里面。

邮件发送到B的邮件服务器后,B的用户代理是如何从邮件服务器上获取到相应的邮件的呢?这时已经不能用SMTP来获取了,因为SMTP是一个推协议,没法从服务器获取数据;因此就有了特殊的邮件访问协议

POP3(第三版的邮局协议)

当用户代理打开了一个到邮件服务器端口110上的TCP连接后,POP3就开始工作了,大概分为以下三个阶段:

  • 特许:用户代理发送(以明文形式)用户名和口令以鉴别用户;
  • 事务处理:用户代理取回报文,同时在这个阶段用户代理还能进行如下操作:对报文做删除标记,取消报文删除标记,以及获取有哦见的同极信息;
  • 更新:它出现在客户发出了quit命令后,目的是结束该POP3会话。

POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。

IMAP

IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。

同时,IMAPPOP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。

DNS域名服务器

每台主机会有自己的一个标识——主机名,但主机名可能是变长的路由器无法处理,因此每台主机会有自己的一个 Ip 地址。IP地址有层次结构,当从左到右扫描它时,会得到越来越具体的关于主机位于因特网何处的信息。

  • DNS请求和回答报文使用UDP数据报经端口53发送;
  • 采用分布式、层次设计方案,用集中式设计的问题:
    • 单点故障;
    • 通信容量;
    • 远距离的集中式数据库;
    • 维护困难。
  • 以层次方式组织且分布在全世界范围内,大致有三种类型的DNS服务器:
    • 根DNS服务器:根服务器主要用来管理互联网的主目录,全世界只有13台。在根域名服务器中虽然没有每个域名的具体信息,但储存了负责每个域(如COM、NET、ORG等)的解析的域名服务器的地址信息,如同通过北京电信你问不到广州市某单位的电话号码,但是北京电信可以告诉你去查020114。
    • 顶级域(TLD)DNS服务器:这些服务器负责顶级域名如com org net edu等以及所有国家的顶级域名;
    • 权威DNS服务器:一个组织机构的权威DNS服务器收藏了 该组织具有公共可访问主机的每个组织机构必须提供的公共可访问的DNS记录(也就是域名-IP),一般学校或者权威组织都有自己的权威DNS服务器;
    • 本地DNS服务器:每个ISP(网络服务提供商)都有自己的本地DNS服务器, 这是离用户最近的DNS服务器, 通常要么在用户本地缓存, 要么在某个路由器上.
  • 浏览器输入域名发送一次DNS请求流程大致为:
    • 浏览器->本地DNS服务器->根DNS服务器->顶级域(TLD)DNS服务器->权威DNS服务器;
    • 除最后一级外, 每一层都只是告诉你下一层DNS服务器的地址在哪;
    • 递归查询和迭代查询.

DNS缓存

在上述的一个请求链中, 当某DNS服务器接收一个DNS回答时, 它能将该回答中的信息缓存在本地存储器中. 下一次请求时就能直接从缓存中拿. 但是会定时丢弃缓存.

DNS记录

  • A记录:(WEB服务器的IP指向):A (Address)记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置域名的子域名。**简单的说,A记录是指定域名对应的IP地址; **

  • 如 (relay1.bar.foo.com, 145.37.93.126 A)

  • CNAME记录:通常称别名解析。可以将注册的不同域名都转到一个域名记录上,由这个域名记录统一解析管理,与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址.

    • 如 (foo.com, relay1.bar.foo.com CNAME)
  • NS记录 :NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。 您注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析的. 简单的说,NS记录是指定由哪个DNS服务器解析你的域名;

    • 如 (foo.com, dns.foo.com NS), 说明foo.com要由dns.foo.com域名服务器来进行解析.
  • MX记录 :MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。

    • 如 (foo.com, mail.bar.foo.com MX), 说明若你要发邮件给foo.com 实际上就是要发给 main.bar.foo.com这个邮件服务器.

DNS报文

DNS 分为查询请求和查询响应,请求和响应的报文结构基本相同。image-20210401214306954

  • 报文首部共12字节(前三行)

    • 事务 ID:DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的。
    • 标志:DNS 报文中的标志字段 (响应还是请求报文)
    • 问题计数:DNS 查询请求的数目
    • 回答资源记录数:DNS 响应的数目
    • 权威名称服务器计数:权威名称服务器的数目
    • 附加资源记录数:额外的记录数目(权威名称服务器对应 IP 地址的数目)。
  • 查询问题区域(第四行)

    • 查询名:一般为要查询的域名,有时也会是 IP 地址,用于反向查询
    • 查询类型:DNS 查询请求的资源类型。通常查询类型为 A 类型,表示由域名获取对应的 IP 地址
    • 查询类:地址类型,通常为互联网地址,值为 1
  • 回答问题区域: 包含了对最初请求的名字的资源记录. (Type(A NS CNAME MX)资源, Value字段和TTL字段)

  • 权威区域包含了其他权威服务器的记录

  • 附加区域包含了其他有帮助的记录

DDoS攻击(分布式拒绝攻击)

分布式拒绝服务(DDoS)攻击是一种恶意企图,通过大量互联网流量压倒目标或其周围的基础架构来破坏目标服务器,服务或网络的正常流量。DDoS攻击通过利用多个受损计算机系统作为攻击流量来源来实现有效性。

一个完整的DDoS攻击体系由攻击者、主控端、代理端和攻击目标四部分组成。主控端和代理端分别用于控制和实际发起攻击,其中主控端只发布命令而不参与实际的攻击,代理端发出DDoS的实际攻击包。对于主控端和代理端的计算机,攻击者有控制权或者部分控制权.它在攻击过程中会利用各种手段隐藏自己不被别人发现。真正的攻击者一旦将攻击的命令传送到主控端,攻击者就可以关闭或离开网络.而由主控端将命令发布到各个代理主机上。这样攻击者可以逃避追踪。每一个攻击代理主机都会向目标主机发送大量的服务请求数据包,这些数据包经过伪装,无法识别它的来源,而且这些数据包所请求的服务往往要消耗大量的系统资源,造成目标主机无法为用户提供正常服务。甚至导致系统崩溃。

攻击方式

  • 流量攻击: 主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机
  • 资源耗尽攻击: 主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽CPU被内核及应用程序占完而造成无法提供网络服务。

主要表现

  • 被攻击主机上有大量等待的TCP连接

  • 网络中充斥着大量的无用的数据包,源地址为假

  • 制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯

  • 利用受害主机提供的服务或传输协议上的缺陷,反复高速地发出特定的服务请求,使受害主机无法及时处理所有正常请求

  • 严重时会造成系统死机

P2P应用

就是因为P2P体系结构对基础设施服务器有最小的依赖,因此很自然的可以想到一种情况下P2P的表现会很好:即从单一服务器向大量主机(称为对等方)分发一个大文件。为什么呢?因为:

  • C-S文件分发中,该服务器必须向每个对等方发送该文件的一个副本,服务器承受了极大的负担,并且消耗了大量的服务器带宽;
  • P2P文件分发中,每个对等方能够重新分发它所有的该文件的任何部分,从而在分发过程中协助该服务器。

实际计算

  • us —— 服务器接入链路的上载速率;
  • ui —— 第i对等方接入链路的上载速率;
  • di —— 第i对等方接入链路的下载速率;
  • F —— 被分发的文件长度(比特);
  • N —— 要获得该文件副本的对等方数量;
  • 分发时间是所有N个对等方得到该文件的副本所需要的时间。
img

客户-服务器体系结构

  • 服务器必须向N个对等方传输该文件的一个副本:

    • 因此服务器必须传输 NF 比特,该服务器上载速率是 us分发该文件的时间至少是 NF/us
  • 令dmin表示具有最小下载速率的对等方的速率,即dmin = {d1, d2, ... , dn}:

    • 具有最小下载速率的对等方不可能在少于 F/dmin 的时间内下载完一个文件副本,因此下载时间至少为 F/dmin
  • 综合上面两点,客户-服务器体系结构最小分发时间为 Dcs = max{NF/us, F/dmin}

P2P体系结构

首先要明确它的最大优势为,每个对等方能够帮助服务器分发该文件;

  • 在分发的开始,只有服务器具有该文件:

    • 为了让社区所有对等方都得到该文件,服务器至少发送该文件一次(任意发给一个对等方都可以)。因此最小分发时间为 F/us
  • 与C-S一样,最低下载速率的对等方不能在小于 F/dmin 时间内下载文件副本;

  • 系统整体的总上载能力等于服务器是上载速率加上每个单独的对等方上的上载速率(也就是说每个对等方都可以上载,所以有个总上载速率):

    • 总上载速率为,utotal = us + u1 + u2 + ... + un ,总共需要上载 NF 比特,因此总上载时间最少为 NF/utotal
  • 综合上三点,P2P体系结构的最小分发时间为:DP2P = max{F/us, F/dmin, NF/utotal}

对比

在对等方的下载速率被设置得足够大,使之不会产生影响的情况下,由下图可知:

  • C-S体系结构,随着对等方数量的增加,分发时间成线性增长且没有界;

  • P2P体系结构,最小分发时间不仅总是小于C-S体系结构的分发时间,且无论N增至多大,有上界。

  • 由P2P体系结构可以得到其应用程序能够是自拓展的——因为对等方除了是比特的消费者外还是它们的重新分发者。

img

BitTorrent

比特流(BitTorrent)是一种内容分发协议。分配器或文件的持有者将文件发送给其中一名用户,再由这名用户转发给其它用户,用户之间相互转发自己所拥有的文件部分,直到每个用户的下载都全部完成。这种方法可以使下载服务器同时处理多个大体积文件的下载请求,而无须占用大量带宽。

最稀缺优先

既然每个对等方都可以作为分发者继续分发的话,那肯定是越快让更多的对等方拥有文件的副本越好啦。所以最稀缺优先就是,每次某一个对等方会选择 在其邻居中副本数量最少的块,并首先请求那些稀缺的块。其目标是大致的均衡每个块在 所有对等方 里的副本数量。

套接字编程

具体教程的话网上都有而且很详细,这里就只说以下TCP和 UTP 在进行套接字编程的时候有什么不同吧!

  • UDP是面向无连接的,因此它在发送请求之前不需要进行连接;
  • UDP不进行连接,所以在发送请求的时候就要显示指定 目的IP 和 对应套接字端口号;
  • TCP是面向连接的,在发送请求之前要进行三次握手进行连接;
  • TCP连接了之后,调用sendTo方法就可以直接只些要发送的内容 不需要目的IP和端口号了。
posted @ 2021-04-02 00:13  TRY0929  阅读(153)  评论(0编辑  收藏  举报