计算机网络自顶向下方法笔记二
一.应用层协议原理
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)
计算机网络自顶向下方法笔记二相关推荐
- 计算机网络-自顶向下方法-笔记【第2章-应用层】
计算机网络-自顶向下方法-笔记[第2章-应用层] 学习的课程及图片来源:中科大郑烇.杨坚全套<计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)>课 ...
- 计算机网络-自顶向下方法-笔记【第3章-传输层】
计算机网络-自顶向下方法-笔记[第3章-传输层] 学习的课程及图片来源:中科大郑烇.杨坚全套<计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)>课 ...
- 计算机网络自顶向下方法笔记02
<计算机网络自顶向下方法>学习笔记02:运输层. 运输层介于应用层与网络层之间,为应用层提供了直接的通信服务.在应用层时已经介绍了两种运输层协议UDP和TCP,本章主要介绍这两个协议和运输 ...
- 计算机网络自顶向下方法笔记01
<计算机网络自顶向下方法>学习笔记.之前学习过计算机网络微课,已经对计网中的很多概念都有了印象和一定的了解了,这时候再读自顶向下感觉比较轻松了.这本书没有涉及太多物理层的内容,第一章为概述 ...
- 【计算机网络---自顶向下方法笔记1】计算机网络和因特网概述
今年大年初四,首先祝大家新年快乐哦~停更了好久,虽然有些忙过节了,但还是要对知识进行巩固啊! 本次的学习教材是黑皮书<计算机网络-自顶向下方法>,作者:James F.Kurose与Kei ...
- 计算机网络-自顶向下方法(笔记)
文章目录 一,计算机网络和因特网 1.1.1具体构成描述 1.1.3 协议 1.2 网络的边缘 1.2.1 接入网 1.2.2物理媒体 1.3网状网络 1.3.1 分组交换 存储转发 转发表与路由选择 ...
- 计算机网络:自顶向下方法 笔记
计算机网络:自顶向下方法 笔记 综述 因特网部件图例 交换方式 分组交换 电路交换 频分复用 时分复用 对比 五层/七协议 一个传输实例 攻击 DOS攻击 应用层 应用程序结构 客户-服务器结构 P2 ...
- 计算机网络自顶向下方法(二)——应用层
不作理想的巨人,行动的矮子 文章目录 写在前面 应用层协议原理 网络应用程序体系结构 客户-服务器(C/S)体系结构 对等体(P2P)体系结构 C/S和P2P体系结构的混合体 进程通信 分布式进程通信 ...
- 计算机网络自顶向下方法课程实验二华为三层交换机路由器配置vlan单臂路由以及三层交换
一 实验目的 1.配置vlan单臂路由. 2.配置三层交换. 3.掌握VLAN路由的应用场景. 4.掌握VLAN路由的工作原理. 5.掌握VLAN路由的基本配置. 二 实验原理: 三层交换机就是具有部 ...
最新文章
- HarmonyOS UI开发 PositionLayout(位置布局) 的使用
- 清华大学梁宸计算机系,2015年广东高考高等学校自主招生录取考生名单公示(2)...
- 状压动规_(POJ2817)
- Java笔记-Spring Boot生成MD5摘要
- 如何使用vSphere Client 将文件上传到EXSI服务器的方法步骤
- mysql怎么从1开始递增
- zend studio怎么打开一个已有项目
- 一篇极好的 CSS 教程 (ZZ)
- flowable实现多实例节点的自由跳转
- 在opensuse tumbleweed 上开发51单片机
- [2014]兄弟连高洛峰 php教程5.5.1,2014PHP兄弟连全套教程
- linux c实现通用hash表
- 火车头文章标题伪原创插件(文章双标题插件)
- 时间序列数据如何插补缺失值?
- itpt_TCPL 第二章:类型、运算符以及表达式
- 这才是陆奇看重的创业者:最小19岁,开拖拉机的斯坦福毕业生,弃医从文的武大学生……...
- kb3020369不适用计算机,适用于Windows 7的Service Pack 2 Microsoft发布KB3020369便利汇总更新 | MOS86...
- 【Leetcode-每日一题】找出游戏的获胜者
- MATLAB图像二值化函数im2bw与imbinarize对给定阈值的内部处理细节
- GeoJson的生成与解析,JSON解析,Java读写geojson,geotools读取shp文件,Geotools中Geometry对象与GeoJson的相互转换