一.应用层协议原理

1.1网络应用程序体系结构

客户-服务器体系结构:有一个总是打开的主机称为服务器,服务器具有固定、周知的地址(IP地址),客户之间不直接通信。对服务器的要求高,常配备数据中心。应用:搜索引擎、电子邮件、电商、社交网络(facebook)。

对等(P2P)体系结构:对专用服务器依赖小或没有,客户之间直接通信。应用:文件共享Torrent,协助下载加速器(迅雷),因特网电话(skype),IPTV。

一些即时讯息软件结合了客户-服务器和P2P,服务器用于跟踪客户的IP地址,用户到用户的报文在客户机之间直接发送。

P2P结构具有自扩展性,每个客户机向其他客户机分发数据都能增加系统服务能力。是成本有效的,不需要庞大的服务器基础设施和服务器带宽。

P2P应用的挑战:(1)ISP友好。P2P的上载流量带给了ISP压力。(2)安全性。(3)激励,说服用户愿意提供带宽,存储和计算资源。

1.2进程通信

客户和服务器进程:P2P文件共享中上载的是服务器,下载的是客户。P2P中发起通信的被标识为客户进程,等待通信的是服务器进程

套接字:进程与计算机网络的接口,是同一台主机内应用层和运输层之间的接口,套接字也称为应用层和运输层的应用程序编程接口(Application Programming Interface, API)。

程序员可以控制套接字在应用层的一切,但对于运输层权限仅限于选择协议和设定个别的参数(最大缓存、最大报文长度等)。

1.3运输层协议的选择

(1)可靠数据传输:容忍丢失的应用(Loss-Tolerant Application)可以接受不可靠的数据传输。

(2)吞吐量:可用吞吐量:发送进程能够向接收进程交付比特的速率。由于其他会话会共享网络路径的带宽,可用吞吐量是变化的,运输层协议能够以某种特定速率提供确保的吞吐量。有吞吐量要求的是带宽敏感应用(bandwidth-sensitive application),相反的是弹性应用(elastic application)。

(3)定时:保证低时延。

(4)安全性:运输协议加密传输数据。

1.4运输层协议

(1)TCP:面向连接的服务、可靠的数据传送服务。拥塞控制机制。

安全套接字层(Secure Sockets Layer, SSL):--->SSL(加密)--->TCP发--->TCP收--->SSL(解密)--->

(2)UDP:无连接(不握手)、不可靠传输,到达接收进程的数据可能是乱序,无拥塞控制机制,是一种轻量级运输协议,只提供最小服务。

二.Web和HTTP

2.1HTTP(Hypertext Transfer Protocol,超文本传输协议)

Web使用客户-服务器应用程序体系结构,服务器具有固定的IP地址,一直打开服务于不同的浏览器需求。

客户向套接字接口发送HTTP请求报文并从套接字接口接收HTTP响应报文,使用TCP作为支撑运输协议,服务器从套接字接口接收HTTP请求报文并向套接字接口发送HTTP响应报文。

HTTP服务器不存储客户的状态信息,是一种无状态协议。

2.2非持续连接和持续连接

非持续性连接:客户发出的一系列请求/响应对分别经单独的TCP连接发送。

持续性连接:客户发出的一系列请求/响应对经过相同的TCP连接发送。

HTTP默认使用持续性连接,但也可配置成非持续性连接。

往返时间(Round-Trip Time, RTT):一个短分组从客户到服务器再返回客户所需的时间。包括:分组传播时延、分组在中间路由器和交换机上的排队时延、分组处理时延。

用户点击超链接后建立TCP连接(3次握手后传输HTML文件),前两次握手用去一个RTT,第三次握手和HTML文件刚传输到客户用去一个RTT,到传输HTML文件结束要再加上传输时间,总共的响应时间是2个RTT加服务器传输HTML文件时间。

对于非持续连接,每一个对象请求都要建立TCP连接,客户和服务器都要分配TCP缓冲区并保持TCP变量,给服务器带来负担,并且每一个对象都要经受两倍RTT的时延(一个RTT建立TCP,一个RTT请求对象、开始接收)。

对于持续连接,只有当一个连接超过一定时间未使用时HTTP服务器才会关闭连接。

2.3HTTP报文格式

HTTP请求报文

例:

GET /somedir/page.html HTTP/1.1                请求行:方法字段+URL字段+HTTP版本字段

Host: www.somecshool.edu                           首部行:指明对象所在的主机

Connection: close                                            首部行:不适用持续连接

User-agent:Mozilla/5.0                                    首部行:指明用户代理,即发送请求的浏览器类型

Accept-language:fr                                           首部行:该对象的语言版本,如没有返回默认版本

HTTP响应报文

例:

HTTP/1.1 200 OK                                        状态行:协议版本字段+状态码+相应状态信息

Connection:close                                         首部行:发送报文结束关闭TCP连接

Date: TUE, 09 Aug 2011 15:44:04 GMT      首部行:服务器产生并发送报文的时间

Server: Apache/2.2.3 (CentOS)                   首部行:指明服务器

Last-Modified: TUE, 09 Aug 2011 15:11:03 GMT    首部行:对象创建或最后修改的时间

Content-Length: 6821                                  首部行:被发送对象中的字节数

Content-Type: text/html                                首部行:指示实体中的对象是html文本

(空行)

(data data data data data···)                   实体体:包含了请求对象本身

2.4cookie

用于服务器识别用户。

cookie计数四个组件:(1)在HTTP相应报文中的一个cookie首部行;(2)在HTTP请求报文的一个cookie首部行;(3)在用户端系统中保留有一个cookie文件,由浏览器管理;(4)位于Web站点的一个后端数据库。

例:浏览器首次与taobao.com联系的过程:

1.HTTP请求报文到达taobao Web服务器时,Web站点产生一个唯一的识别码,并以此作为一个索引在后端数据库产生一个表项。

2.taobao Web服务器用一个包含Set-cookie:(如Set-cookie 1657(1657是识别码))的首部的HTTP相应报文对浏览器进行响应。

3.浏览器接收到响应报文后会看到Set-cookie首部,并在cookie文件中增加一行,该行包含服务器主机名和Set-cookie:首部中的识别码。

4.之后在浏览taobao服务器页面时,浏览器会从cookie文件中获取识别码,每次HTTP请求报文都会包含cookie首部行(Cookie-1657)。

如此taobao服务器能够跟踪用户,在不登陆的情况下也能管理购物车,隔一段时间再次浏览服务器还会根据以往信息智能推荐。如果在taobao注册,服务器会将识别码与注册的个人信息相关联。

2.5Web缓存

Web缓存器(Web cache)也叫代理服务器(proxy server),是能够代表初始Web服务器满足HTTP请求的网络实体,其有自己的磁盘存储空间并存储最近请求过的对象副本。

使用Web缓存器时的过程:当用户浏览器请求一个对象时:

(1)浏览器建立到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求。

(2)Web缓存器检查本地是否存储了该对象副本,如果有则用HTTP响应报文将对象返回客户。

(3)如果Web缓存器本地没有该对象副本,则打开与初始服务器的TCP连接,并发送对目标对象的HTTP请求报文。初始服务器收到请求后向Web缓存器发送具有该对象的HTTP响应。

(4)Web缓存器接收到对象后,在本地存储一个副本,在现有的TCP连接向客户发送具有对象的HTTP响应。

作用:(1)减少对客户请求的响应时间,尤其是客户与初始服务器之间的瓶颈带宽远小于客户与Web缓存器的瓶颈带宽。

(2)减少一个机构到因特网接入链路的流量,降低了机构增加带宽的费用。

(3)降低因特网上的Web流量,改善所有应用性能。

三.文件传输协议FTP

用户通过一个FTP用户代理与FTP交互。用户首先提供远程主机的主机名,使本地主机的客户进程建立一个TCP连接到远程主机的FTP服务器进程。该用户接着提供用户标识和口令,作为FTP命令的一部分在该TCP连接上传送。服务器向用户授权后,用户可以将本地文件系统中的文件传输到远程文件系统,也可以将远程文件系统中的文件传输到本地文件系统。

FTP使用了两个并行的TCP连接来传输文件:控制连接(control connection)和数据连接(data connection)。由于FTP协议采用了一个独立的控制连接,所以称FTP是带外(out-of-band)传送的,HTTP是带内(in-band)传送的。

控制连接:控制连接用于在两主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“存放(put)”和“获取(get)”文件的命令。

数据连接:用于实际发送一个文件。

FTP会话过程:(1)FTP的客户端首先在服务器的21号端口与服务器端发起一个用于控制的TCP连接。客户端通过该TCP连接发送用户标识、口令和改变远程目录的命令。

(2)FTP服务器端从TCP连接上收到一个传输文件的命令后,向客户端发起一个TCP数据连接。FTP准确的在数据连接上传输一个文件并关闭连接。如果在会话期间还要传输另一个文件,则再建立一个数据连接。

控制连接在FTP会话期间是持续的,始终不关闭,数据连接是非持续的,每次传输文件建立一个。

FTP必须在会话期间保留用户的状态(state),必须把特定的控制连接和用户账户联系起来,用户在远程文件目录树徘徊时,FTP时刻跟踪位置用户的在远程目录树上的当前位置。对每一个用户状态进行跟踪,限制了FTP同时维持的会话总数。与HTTP的无状态相对。

FTP命令和回答:从客户到服务器的命令和从服务器到客户的响应都是7bitASCII格式。

五.DNS因特网的目录服务

5.1DNS提供的服务

域名系统(Domain Name System):(1)一个由分层的DNS服务器(DNS server)实现的分布式数据库;(2)一个使得主机能够查询分布式数据库的应用层协议。

DNS运行在UDP之上,使用53号端口。

主要任务:进行主机名到IP地址转换的目录服务。

DNS通常由应用层其他协议使用,如HTTP、SMTP和FTP,将用户名解析未IP地址。

用户主机浏览器请求URL www.baidu.com/index.html时,为了使用户主机能够将HTTP请求报文发送到Web服务器www.baidu.com,用户主机必须获得www.baidu.com的IP地址,过程如下:

(1)同一台主机上运行着DNS应用的客户端;

(2)浏览器从URL中抽取主机名www.baidu.com,并将主机名传给DNS应用客户端;

(3)DNS客户向DNS服务器发送一个包含主机名的请求;

(4)DNS客户最终收到回答报文,含有主机名对应的IP地址。

(5)浏览器收到来自DNS的IP地址,向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接。

DNS的其他服务:(1)主机别名(host aliasing)。应用程序可调用DNS获得主机别名对应的规范主机名(canonical hostname)以及IP地址。

(2)邮件服务器别名(mail server aliasing)。调用DNS服务器对邮件服务器别名解析,获得规范主机名和IP地址。

(3)负载分配(load distribution)。在冗余的服务器间进行负载分配。如繁忙站点有多台服务器,各自IP地址不同,但规范主机名相同。当客户对主机名发出DNS请求时,在回答中循环IP地址次序。

5.2DNS工作机理概述

DNS集中式设计(因特网上只使用一个DNS服务器,该服务器包含所有映射)的问题:

(1)单点故障(a single point of failure):该DNS服务器崩溃,整个因特网会瘫痪。

(2)通信容量(traffic volume):单个DNS服务器处理所有的DNS查询。

(3)远距离的集中式数据库(distant centralized database):来自远距离的查询会导致严重的时延(经过长链路,还可能经过低速、拥塞的链路)。

(4)维护(maintenance):单个DNS服务器保留所有因特网主机记录,使得数据库非常庞大,并且为新添加的主机频繁更新。

由于上述问题,DNS采用分布式设计方案

(1)分布式、层次数据库。因特网上所有主机的映射分布在大量的DNS服务器上,他们以层次方式组织,分布于世界范围内。三种类型:根DNS服务器顶级域(Top-Level Domain, TLD)DNS服务器权威DNS服务器

例:一个DNS客户要主机名www.amazon.com的IP地址,首先与跟服务器之一联系,它返回顶级域名com的TLD服务器的IP地址。客户与这些TLD服务器之一联系,为主机名amazon.com返回权威服务器的IP地址。最后客户与amazon.com权威服务器之一联系,它为主机名www.amazon.com返回其IP地址。

根DNS服务器:因特网上有13个根DNS服务器(标号A到M),每个服务器是一个冗余的服务器网络,以提供安全性、可靠性。

顶级域DNS服务器:负责顶级域名如com、org、net、edu、gov和所有国家顶级域名如uk、fr、ca和jp。

权威DNS服务器:一个组织机构的权威DNS服务器收藏了将公共可访问主机名映射的IP地址记录。

本地DNS服务器(local DNS server):不属于服务器层次结构。每个ISP都有一台本地DSN服务器(也叫默认名字服务器)。主机发起DNS请求时,该请求被发往本地DNS服务器,本地DNS服务器起代理作用,将该请求转发到DNS服务器层次结构中。到客户收到IP地址共发送4份查询报文和4份回答报文。

在一般情况下,TLD服务器不知道主机的权威DNS服务器IP地址,只知道中间某个DNS服务器,该中间服务器知道用于主机的权威DNS服务器。这就需要发送10份报文。DNS查询既可以是递归查询也可以是迭代查询,上图主机到本地DNS服务器是递归查询,其他3个是迭代查询。而下图所有查询都是递归的。

DNS缓存(DNS caching):为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用了缓存技术。

DNS缓存原理:在一个请求链中,当某DNS服务器接收一个DNS回答(如包含主机名到IP地址的映射)时,它能将该回答中的信息缓存在本地存储器。当另一个对相同主机名的查询到达该DNS服务器时,该DNS服务器就能提供所要求的IP地址,即使它不是该主机名的权威服务器。由于主机和主机名与IP地址的映射不是永久的,DNS服务器在一段时间后(通常设置为2天)将丢弃缓存信息。本地缓存器也能够缓存TLD服务器IP地址,从而可以绕过根DNS服务器。

5.3DNS记录和报文

5.3.1记录

DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR)。RR提供了主机名到IP地址的映射,是一个包含了下列字段的4元组:(Name,Value,Type,TTL)。

TTL:该记录的生存时间,决定了资源记录应当从缓存中删除的时间。

Name和Value值取决于Type:

Type=A:Name=主机名,Value=对应的IP地址。如(relay1.bar.foo.com, 145.37.93.126, A)。

Type=NS:Name=域(如foo.com),而Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。这个记录用于沿着查询链路来路由DNS查询。例如(foo.com, dns.foo.com, NS)就是一条类型为NS的记录。

Type=CNAME:Name=别名,Value=Name主机对应的规范主机名。

Type=MX:Name=别名,Value=Name邮件服务器的规范主机名。

5.3.2报文:DNS只有查询和回答两种报文,且格式相同。

首部区域:前12个字节,多个字段。

字段1:标识符,16bit数,标识符会被复制到对查询的回答报文中。

字段2:标志,1bit的“查询/回答”标志位(查询报文0,回答报文1);1bit的“权威的”标志位(当DNS服务器请求的名字是权威DNS服务器时,1bit的“权威的”标志位被置在回答报文中);1bit的“希望递归”标志位(客户希望进行递归查询);1bit的“递归可用”标志位(服务器支持递归查询)。

字段3、4、5、6:指出在首部后的4类数据区域出现的数量。

问题区域:包含查询信息:(1)名字字段,正在被查询的主机名。(2)类型字段,有关该名字的正被询问的问题类型(A、NS、CHAME、MX)。

回答区域:包含对最初请求的名字的资源记录(Type字段,Value字段,TTL字段)。回答区域可以包含多条RR(Resource Record,资源记录),因为一个主机名可以有多个IP地址。

权威区域:包含其他权威服务器的记录。

附加区域:包含其他有帮助的记录。如MX请求的回答报文中附加区域包含一个类型A的记录,提供了IP地址。

5.3.3在DNS数据库中插入记录

例子:当登记注册域名 dashi.com 时,需要向注册登记机构提供基本和辅助权威DNS服务器的名字和IP地址。名字分别是:dns1.dashi.com 和 dns2.dashi.com 及 212.212.212.1 和 212.212.212.2。对每一个权威服务器都将一个类型为NS和一个类型为A的记录输入TLD com 服务器。

(dashi.com, dns1.dashi.com, NS)

(dns1.dashi.com, 212.212.212.1, A)

计算机网络自顶向下方法笔记二相关推荐

  1. 计算机网络-自顶向下方法-笔记【第2章-应用层】

    计算机网络-自顶向下方法-笔记[第2章-应用层] 学习的课程及图片来源:中科大郑烇.杨坚全套<计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)>课 ...

  2. 计算机网络-自顶向下方法-笔记【第3章-传输层】

    计算机网络-自顶向下方法-笔记[第3章-传输层] 学习的课程及图片来源:中科大郑烇.杨坚全套<计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)>课 ...

  3. 计算机网络自顶向下方法笔记02

    <计算机网络自顶向下方法>学习笔记02:运输层. 运输层介于应用层与网络层之间,为应用层提供了直接的通信服务.在应用层时已经介绍了两种运输层协议UDP和TCP,本章主要介绍这两个协议和运输 ...

  4. 计算机网络自顶向下方法笔记01

    <计算机网络自顶向下方法>学习笔记.之前学习过计算机网络微课,已经对计网中的很多概念都有了印象和一定的了解了,这时候再读自顶向下感觉比较轻松了.这本书没有涉及太多物理层的内容,第一章为概述 ...

  5. 【计算机网络---自顶向下方法笔记1】计算机网络和因特网概述

    今年大年初四,首先祝大家新年快乐哦~停更了好久,虽然有些忙过节了,但还是要对知识进行巩固啊! 本次的学习教材是黑皮书<计算机网络-自顶向下方法>,作者:James F.Kurose与Kei ...

  6. 计算机网络-自顶向下方法(笔记)

    文章目录 一,计算机网络和因特网 1.1.1具体构成描述 1.1.3 协议 1.2 网络的边缘 1.2.1 接入网 1.2.2物理媒体 1.3网状网络 1.3.1 分组交换 存储转发 转发表与路由选择 ...

  7. 计算机网络:自顶向下方法 笔记

    计算机网络:自顶向下方法 笔记 综述 因特网部件图例 交换方式 分组交换 电路交换 频分复用 时分复用 对比 五层/七协议 一个传输实例 攻击 DOS攻击 应用层 应用程序结构 客户-服务器结构 P2 ...

  8. 计算机网络自顶向下方法(二)——应用层

    不作理想的巨人,行动的矮子 文章目录 写在前面 应用层协议原理 网络应用程序体系结构 客户-服务器(C/S)体系结构 对等体(P2P)体系结构 C/S和P2P体系结构的混合体 进程通信 分布式进程通信 ...

  9. 计算机网络自顶向下方法课程实验二华为三层交换机路由器配置vlan单臂路由以及三层交换

    一 实验目的 1.配置vlan单臂路由. 2.配置三层交换. 3.掌握VLAN路由的应用场景. 4.掌握VLAN路由的工作原理. 5.掌握VLAN路由的基本配置. 二 实验原理: 三层交换机就是具有部 ...

最新文章

  1. HarmonyOS UI开发 PositionLayout(位置布局) 的使用
  2. 清华大学梁宸计算机系,2015年广东高考高等学校自主招生录取考生名单公示(2)...
  3. 状压动规_(POJ2817)
  4. Java笔记-Spring Boot生成MD5摘要
  5. 如何使用vSphere Client 将文件上传到EXSI服务器的方法步骤
  6. mysql怎么从1开始递增
  7. zend studio怎么打开一个已有项目
  8. 一篇极好的 CSS 教程 (ZZ)
  9. flowable实现多实例节点的自由跳转
  10. 在opensuse tumbleweed 上开发51单片机
  11. [2014]兄弟连高洛峰 php教程5.5.1,2014PHP兄弟连全套教程
  12. linux c实现通用hash表
  13. 火车头文章标题伪原创插件(文章双标题插件)
  14. 时间序列数据如何插补缺失值?
  15. itpt_TCPL 第二章:类型、运算符以及表达式
  16. 这才是陆奇看重的创业者:最小19岁,开拖拉机的斯坦福毕业生,弃医从文的武大学生……...
  17. kb3020369不适用计算机,适用于Windows 7的Service Pack 2 Microsoft发布KB3020369便利汇总更新 | MOS86...
  18. 【Leetcode-每日一题】找出游戏的获胜者
  19. MATLAB图像二值化函数im2bw与imbinarize对给定阈值的内部处理细节
  20. GeoJson的生成与解析,JSON解析,Java读写geojson,geotools读取shp文件,Geotools中Geometry对象与GeoJson的相互转换

热门文章

  1. python实现excel的10个常用操作
  2. 用计算机操纵Photoshop快速做事
  3. switch语句练习:春夏秋冬
  4. Neural Architecture Search: A survey
  5. 各种语言主要用途整理
  6. CentOS搭建web服务器,并内网穿透实现公网访问
  7. 闲来无事,分析一下淘宝千牛客户端
  8. vue echarts地图省市区下钻详解
  9. 计算机学平面设计,学计算机平面设计专业好吗?
  10. 由于找不到MSVCR120.dll,无法继续执行代码,重新安装程序可能会解决此问题。