可以向网络发送数据
可以从网络接收数据
可以对数据进行处理
可以运行在不同端系统
如网页浏览器和网站服务器通过网络交流
快速开发和部署
不运行在网络核心设备上
客户端/服务器(Client/Server,C/S)
总是打开
拥有一个固定的地址
缩放的数据中心
与服务器通信
可能是间歇性连接
可能有动态的IP地址
客户端之间不能相互通信
不一定总在线
结点之间可以直接通信
结点的地址以及他们之间的连接可能随时发生变化
自扩展:新的节点带来新的服务能力,同时也带来新的服务需求
管理非常复杂
C/S+P2P
在端系统运行起来的程序
操作系统术语
一个程序可能产生多个进程
同一台主机上的不同多个进程之间的通信采用的是内部进程通信方式(操作系统决定)
不同主机之间的进程通信采用报文交换方式(应用层协议)
交换的报文类型
字段的语义
各种报文类型的语法
进程何时、如何发送报文及对报文进行响应
开放的协议:RFC定义,允许交互
专有协议:Skype, QQ……
每个网络应用进程都有一个属于自己的套接字,该套接 字在整个因特网上独一无二
主机地址:标识该网络应用进程运行在因特网上哪一台主机上,通常使用32位的IP地址进行标识
端口地址:在该主机上标示该网络应用进程,通常使用16位的端口号进行标识
发送进程将报文“推出”门
发送进程依赖门另一边的传输基础设施(传输层及以下) 来投递数据到接收进程的套接字
进程通过套接字来接收和发送报文
因特网上进程的唯一标识包括主机IP地址和进程相关的端口号
WEB服务器:IIS、Apache、TomCat……
浏览器:IE、Maxthon、Firefox
信息表达的协议——HTML
信息传输的协议——HTTP
属于C/S模式
Web 页面由一些对象组成。
对象可以是HTML文件,JPEG图片,音频文件, Java Applet……
HTML文件是Web页面的基础,它可以包括各种各样的对象,是一个容器对象
任何一个对象都可以用 URL来定位
客户端启动TCP连接(创建套接字) 到服务器, 端口 80
服务器接受来自客户端的 TCP 连接
http 报文(应用层协议 报文) 在浏览器 (http client) 和Web服务器 (http server)之间进行交换
关闭TCP 连接
HTTP是无状态的
通过TCP连接最多发送一个对象,连接然后被关闭
下载多个对象需要建立多个连接
TCP 连接
对象请求/传送
总时间=2RTT+文件传输时间
许多浏览器同时打开多个并行的连接来改善性能
客户端和服务器之间的单个TCP连接上可以发送多个对象
服务器在发送响应后,不再断开TCP连接,而是保持该连接,用于后续对象的传送,直至该连接“休息”了一个较长的时间后,方断开该连接
非流水线方式:一个对象传输完成方能传输下一个
流水线方式:可以一次性发送所有请求,慢慢接收
向服务器请求指定URL的对象
用于向服务器提交表单数据
也可以同时请求一个WEB页面
特别注意:可以不使用POST方法,而使用GET方法发送表单数据以获取新的WEB页面。e.g. 搜索引擎
请求服务器返回一个响应报文,但是该报文中并不包含请求的对象。该方法常常用来进行故障跟踪。
上传的文件放在实体主体字段中,目标路径由URL字段标明
删除URL字段中指定的文件
使用GET方法
将需要上传的数据放到URL中
限制用户的访问
把内容和用户身份关联起来
在HTTP响应报文中有一个Cookie首部行
在HTTP请求报文中也有一个Cookie首部行
在用户的端系统中保留了一个Cookie文件,由用户浏览器负责管理
在Web站点有一个后端数据库
加速客户端访问WEB页面的速度,减少时延
减少局域网与外部因特网交换的数据量,从而在达到同等服务质量的同时,可以使用较小的网络带宽,节约费用
使用TCP协议传输数据
C/S模式
端口:21/20
均使用TCP协议
FTP的控制信息是带外传送的,而HTTP的控制信息则是带内传送的
控制连接
数据连接
FTP连接是有状态的,而HTTP连接则是无状态的
把用户帐户和控制连接联系起来
追踪用户在远程目录树上的位置
对活动着的用户会话的状态进行追踪,以限制FTP会话总数
DNS是一个分布式数据库,由很多台DNS服务器按照层次结构组织起来
DNS运行在端到端系统上,且使用UDP协议(53号端口)进行报文传输,因此DNS是应用层协议
DNS以C/S的模式工作
DNS不直接和用户打交道,而是因特网的核心功能
单点故障的问题:一旦崩溃, 因特网何以堪
数据的流通量:使得DNS服务器不堪重负
远程的集中式数据库:带来严重的延时
维护量巨大: DNS服务器不得不拼命的更新以适应因特网上主机的增加与减少
负责顶级域名和所有国家的顶级域名解析工作,例如:com, org, net, gov, uk, cn, jp等
属于某个组织的DNS服务器, 为组织的服务器提供一个权威的域名到IP地址的映 射服务 (例如:Web 和 mail)
本地DNS服务器其并不属于DNS层次结构中的一层
每一个网络服务提供商都会提供一个本地DNS服务器,“默认DNS服务器”
当一台主机需要做一个域名查询的时候,查询请求首先被发送到本地域名服务器
一旦 (任何) 域名服务器得知了某个映射, 就将其缓存 在一定的时间间隔后缓存的条目将会过期(自动消除)
顶级域DNS服务器通常被缓存在本地DNS服务器中
这样可以减少根DNS的负载
更新/通知 机制由 IETF负责设计
域名到IP地址的转换
主机/邮件服务器别名
负载均衡
RR格式:(name, value, type, ttl)
Nslookup
通过ICMP Ping洪泛攻击根DNS服务器——难以成功
根服务器通常配备分组过滤器
大多数本地DNS服务器缓存了TLD DNS服务器的地址
难以过滤
DNS劫持攻击——攻击者截获来自主机的请求并返回伪造的回答
DNS毒害攻击——攻击者想一台DNS服务器发送伪造的回答,诱使服务器在它的缓存中接收伪造的记录
利用DNS服务器对目标主机采用DDoS攻击——反射攻击
没有始终在线的服务器
任意端系统直接通信
对等方间歇性连接并更改IP地址
参与一个特定文件分发的所有对
追踪器(tracker): 跟踪正参与在洪流中的对等方
256KB
向邻居请求哪些块——最稀罕优先
每10秒重新确定4个最高速率对等方
每30秒随机选择1个新的邻居