学习计算机网络:自顶而下方法(第二章-应用层)

第一节

应用程序体系结构:包括客户-服务器体系结构和P2P体系结构。
进程:运行在端系统上的程序。
套接字(socket)或应用程序编程接口(API):联系应用程序和网络的可编程接口。
应用程序可能需要的运输服务:

  • 可靠数据传输:如邮件,文件,讯息等。可以发的慢,但不能有丢失的内容。
  • 吞吐量:传输数据的速率有最低要求,对带宽敏感的应用,比如视频通话,或者多人在线游戏。
  • 定时:对传输数据的时间有要求,比如视频或网络游戏。
  • 安全性:需要对数据进行加密处理。

因特网能提供的运输服务:

  • TCP:包括确认连接的服务和可靠数据传输的服务。TCP的加强版本SSL,增加了保证安全的服务。
  • UDP:轻量级运输协议,啥也不保证。

第二节 Web和HTTP

HTTP:超文本传输协议,是一种无状态的协议。Web的应用层协议是HTTP。
客户与服务器两种的通信方式

  • 持续连接:是指在客户和服务器通信期间,保持一个TCP连接,直到所用信息交互完毕。
  • 非持续连接:通信期间,每一个请求-响应对,都建立一个TCP连接,随开随关。

HTTP请求报文格式:
第一行是请求行,包含要请求的文件地址和HTTP版本
后面几行是首部行,包含服务器名,时间,语言等信息,除了服务器名,其他都是可选项
最后是实体体,包含用户输入的文本,比如在搜索引擎上输入的搜索内容。
HTTP响应报文格式:
第一行:初始状态行,指示返回是否成功。
后面几行:首部行,返回内容的各种信息。
最后:实体体,即返回的具体内容

cookie技术:跟踪用户行为,收集用户信息的技术,为了弥补HTTP的无状态特点而存在。
Web缓存器:也叫代理服务器,是初始Web服务器的好帮手,将用户经常访问的服务器的内容缓存进来,也会缓存最近用户访问过的内容,以方便用户快速的访问。通常在一个局域网内采用这种技术,会极大的减少服务器的响应时间,减少通信投资。
条件GET:为了解决Web缓存器中的内容可能是过时的问题,所以在用户向Web缓存器发送请求时,Web缓存器会问一下初始服务器,我的信息过没过时?

第三节 电子邮件和SMTP

电子邮件系统的组成:

  • 用户代理:就像QQ邮箱,网易邮箱的客户端。用来写,查阅,接收邮件。
  • 邮件服务器:用来将用户代理写的邮件通过SMTP协议,传递给收件人的邮件服务器。
  • SMTP:简单邮件传输协议,用于服务器之间的传输。

当SMTP客户和SMTP服务器建立了TCP连接之后,先打声招呼,进行握手,告诉对方我的邮件从哪来到哪去,然后再发送报文。

SMTP报文的格式(四部分):
from:
to:
subject:
内容

与HTTP的对比

  1. HTTP是由客户端提起TCP连接的拉协议,而SMTP是要发送内容的服务器提起TCP连接的推协议
  2. SMTP要求报文用ASCII码格式编写,但HTTP没有要求。
  3. HTTP把对象封装到响应报文中,再调用包含多媒体文件的报文; 而SMTP则把所有内容全都放在了一个报文中。

邮件访问协议:

  • POP3:能将邮件从服务器上下载到用户代理上,特许阶段输入用户名和密码,事务处理阶段发送接受邮件,更新阶段更新服务器上的内容。只能下载到客户端上看。
  • IMAP:邮件仍然在服务器上,,用户登录服务器查看。
  • HTTP:用浏览器作为用户代理,采用HTTP协议,和当地的邮件服务器进行联系。

第四节 DNS

DNS:既是个分布式的域名系统,也是支持该系统的协议。DNS的作用:

  • 把域名转化成IP地址,这是DNS最重要的作用。
  • 获取主机别名对应的规范名,如www.baidu.com对应的规范名就是www.a.shifen.com
  • 邮件服务器别名,和主机别名作用类似,把不好记的邮件服务器起个好记的名字。
  • 负载分配:在一个站点很繁忙时,会把资源分给多个服务器,当请求整个站点时,DNS系统会循环分配服务器。

DNS是一个分布式数据库,自顶而下分为三层:

  1. 根DNS服务器:全世界只有400个,用于管理顶级域服务器。
  2. TLD顶级域服务器:例如.com .edu这些都是顶级域服务器。
  3. 权威服务器:是各个公司或学校的服务器例如baidu.com , hust.edu.cn

在这三层之外还有一个本地DNS服务器,作为用户主机的代理,与这三层服务器进行交互。从用户主机到本地DNS服务器是递归查询,其余的都是迭代查询。

DNS缓存技术:将最近刚通过过该服务器的DNS信息缓存,下次用户再申请时该域名的IP地址时,就能直接给他,而不用再向其他的服务器发出请求。

DNS资源记录:因为DNS系统实际上就是个数据库,里面放着各种IP地址和域名的数据。DNS资源记录是一个四元组:
(Name,Value,Type,TTL)

TTL是生存周期,我们不管。
Type是资源类型,根据Type的不同,Name和Value表示的意义也不同:

  • Type是A,则Name是主机名,Value是其对应的的IP地址,这个资源是我们向DNS服务器请求的最终的资源。
  • Type是NS,则Name是主机名,Value是知道其IP的权威DNS服务器的名字,这个类型的资源通常储存在顶级域服务器中。
  • Type是CNAME,则Name是别名,Value是其规范主机名。
  • Type是MX,Name是邮件服务器的别名,Value是其规范主机名。

当我们创建了一个公司,想要注册其域名时,首先要做的就是,把公司网站服务器(例如www.baidu.com)对应的权威DNS服务器(例如dns.baidu.com)告诉TLD服务器,把权威DNS服务器的A型资源和NS资源储存进去:
例如(www.baidu.com, dns.baidu.com ,NS)
(dns.baidu.com,212.212.11.22,A)
这样就保证了权威服务器连上了服务器的分布式网络,然后只要保证权威服务器里有公司网站服务器的A资源和邮件服务器的MX资源就行了。

DNS报文:
这是一个用Wireshark捕获的报文:
在这里插入图片描述
前六行每一行有2字节,共12字节,

  • 第一行是时标识符,就是这个DNS报文的名字
  • 第二行是标志位,标志了是请求还是回答,要不要递归,是不是权威等信息。
  • 第三到六行,后面几栏的数量,这里问题栏有一项,其余的回答栏,权威栏和附加栏都是0项
  • 最后是问题栏,显示了要查询的域名和资源类型。
  • 如果回答栏,权威栏和附加栏内容数量不是0的话,后面也会有对应的信息。

第五节 P2P文件分发

不同于客户-服务器的文件传输模式,P2P模式在对等的客户之间互相传递文件。最为流行的P2P分发协议是BitTorrent。

P2P体系的自拓展性:即不管客户有多少,把所有文件都传输给客户的时间是差不多的。原因是所有的客户除了是接收者,还是发送者。

BitTorrent:参加特定文件分发的对等方的群体称为洪流,每个洪流中的个体,选择接收哪些文件的策略是稀缺性优先,即哪些文件在洪流中数量少,就接收哪些;个体不能只是接收文件,还必须发送文件,选择发送文件的策略是,“谁给我传输的速率高,我优先给他发”,这种激励机制被称为**“一报还一报”**。

第六节 流视频和内容分发网

HTTP流:视频文件是HTTP服务器中的一个普通文件,我们想看一个视频时,建立于HTTP服务器的TCP连接,然后获得文件。缺点是获得的视频的比特率都是固定的,无法按需选择适合自己的版本。
DASH流:视频文件被编码成几个不同比特率的版本,用户可以按需选择。

内容分发网CDN: 为了面对全世界巨额视频数据的分发需求,视频流公司都用了内容分发网。有些大型的视频流公司建立了自己的内容分发网,小型公司则用别人提供的内容分发网。

CDN利用DNS服务器来分发内容:

  1. 当客户在网页上请求一个视频时,和DNS解析域名的步骤类似,本地DNS服务器向管理该视频域名的权威DNS服务器发送请求。
  2. 但是权威DNS服务器不直接返回IP地址,因为内容不在权威DNS服务器管理的主机上,而是在CDN的服务器上。所以权威DNS服务器返回一个CDN的主机名。
  3. 本地DNS服务器向该CDN主机的权威DNS服务器发送请求,并最终得到了存有视频的CDN的主机IP。
  4. 客户于该IP建立TCP连接,发送HTTP get的请求。如果用来DASH,则动态选择不同版本的视频。

第七节 套接字编程

套接字编程是创建应用层和运输层之间的接口,并利用运输层TCP或UDP协议,在客户端和服务器之间进行通信的编程。
套接字编程分为服务器端编程和客户端编程

  • UDP编程:
    - 客户端:创建套接字,把数据以及接收端的IP和端口号打包发出去。
    - 服务器端:创建套接字,接收数据,处理完后再按客户端的IP和端口号发出去。
  • TCP编程:
    - 客户端:创建套接字,与服务器创建TCP连接,连接上后再发消息。
    - 服务器端:创建欢迎套接字专门欢迎客户来敲门,敲门之后再创建连接套接字,与客户端连接上,接受数据,发送数据。当连接结束后,连接套接字关闭,但欢迎套接字继续等待下一个敲门的人。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值