计算机网络:由联网的计算机构成的网络
节点:
主机节点——数据的源、数据的目标;
数据交换节点——路由器(工作在网络层)、交换机(工作在链路层)(它们既不是源也不是目标)数据中转节点
边:通信链路
接入网链路——把主机和交换节点
主干链路——交换节点和交换节点连在一起
协议:支持互联网工作的标准,控制发送、接收消息(TCP、IP、HTTP、PPP)
互联网:网络的网络
主机=端系统,运行网络应用程序
通信链路:传输速率=带宽(bps)
分组交换设备:转发分组(路由器、交换机)
协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文传输和/或接收或其他事件方面所采取的动作。
三种模式:
两种服务:
采用网络设施的面向连接服务(只有端系统维护连接、链路不知道)
目的:在端系统之间传输数据
在数据传输之前——握手(打招呼,作准备,确认两个通信主机之间为连接建立状态,再进行数据传输)
TCP服务:
可靠地(请求,确认,查询过去,查询结果返回。4步)、按顺序传送数据;
流量控制(协调接收方速度和发送方速度,速度需要匹配,不超过处理能力);
拥塞控制(网络拥塞时,发送方降低发送速率,减缓拥堵)
采用基础设施的无连接服务
目标:在端系统之间传输数据
无需握手——直接发送数据(上来就发送,对方直接回应)
UDP-用户数据报协议:
无连接(查询过去,查询结果返回。2步);
不可靠数据传输;
无流量控制;
无拥塞控制;
网络核心:路由器的网状网络
数据通过网络传输2中方式:
使用时将带宽分成片:
频分FDM、
时分TDM(周期)、
波分
不适合计算机之间通信
网络核心的关键功能
路由:决定分组采用的源到目标路径(全局,找到路径)
转发:将分组从路由器的输入链路到输出链路
由转发和路由相互配合,原主机将目标能够放出去,目标主机能够收到
分组交换:统计多路复用(时分复用链路资源,但划分时间片的方式不是固定的)
分组交换(按照网络层是否有连接)分成两种方式:
数据报方式:每一个分组携带目标主机完整地址,每个节点根据该完整地址存储转发,两个主机在通讯之前不需要握手,每个分组传递都是独立的。
虚电路:主机和目标主机通信前握手,之间的交换节点保持通信的状态,建立起一条虚拟的线路,每个分组携带一个虚电路号,节点根据虚电路号存储转发,每个节点都有相应标识
三种接入方式:
1.住宅接入:modem (猫),通过电话线调制解调;不能同时上网和打电话
2.DSL:仍使用电话线,1-4kHz保留通话,剩余带宽分为上行和下行()
3.线缆网络:用有线电视信号线缆(本身只能下行,保留电视信号,剩下带宽改造为上下行。HFC:上下行非对称,用户共享接入网)
分成两类:
1.导引性媒体:看得见摸得着的(电缆、光线,信号都局限在导体内部,传的远)
2.非导引性媒体:看不见摸不着(开放空间传电磁波,信号会向周边辐射,传的近)
互联网结构,有两种划分方式:
1.按照上文划分方式(按照节点和链路的类型划分):网络边缘、核心、接入网
2.把关系比较密集,在一个网络中的设备,称之为一个ISP的网络,互联网由很多ISP网络构成;任何一个端系统都是通过接入到ISP接入到互联网。建立全局ISP,将所有ISP接入其中。
松散的层次结构:
中心:第一层ISP,国家/国际覆盖(直接与其他第一层ISP相连,与大量第二层ISP和其他客户网络相连)
第二层ISP:更小些的(区域性)ISP(与第一层ISP相连,也可能与其他第二层ISP相连)
第三层ISP与其他本地ISP:接入网(与端系统最近)
分组丢失原因:路由器缓冲区已满,后来到达的分组被丢掉。
时延:分组到达链路的速率超过了链路输出能力,分组等待排到队头、被传输。
四种分组延时:
1.节点处理延时:检查bit是否出错,查去向(路由表)
2.排队延时:在输出链路上等待传输的时间,排到队头的时间(取决于路由器的拥塞程度)
3.传输延时:存储转发延时(将队头分组从路由器传出);R = 链路带宽,L = 分组长度,将分组发送到链路上的时间 = L/R
4.传播延时:在链路上的传播时间;d = 物理链路的长度,s = 在媒体上的传播速度(~2x10^8 m/sec),传播延时 = d/s
排队延时取决于流量强度:R=链路带宽,L=分组长度,a=分组到达队列的平均速率;流量强度 = La/R,不能超过1
丢失的分组可能会被前一个路由重传(链路提供可靠的服务),也可能不重传(链路提供不可靠的服务)。如果使用TCP,在链路提供不可靠服务时,由源主机重传。
1.服务:低层实体向上层实体提供它们之间的通信的能力
2.原语:上层使用下层服务的形式,高层使用低层提供的服务,以及低层向高层提供服务都是通过服务访问原语来进行交互的——形式
3.服务访问点SAP:上层使用下层提供的服务通过层间的接口——地点
服务的类型
面向连接的服务:TCP方式交互,需要握手。
无连接的服务:两个应用程序采用UDP方式交互,不需要握手。
服务和协议
1.区别:
服务:低层实体向上层实体提供它们之间的通信的能力,通过原语操作(垂直);
协议:对等层实体之间在互相通信过程中,需要遵循的规则和集合(水平)
2.联系:
本层协议的实现要靠下层提供的服务来实现;
本层实体通过协议为上层提供更高级的服务。
概念化:结构清晰,便于标示网络组件,以及描述其相互关系(分层参考模型)
结构化:模块化更易于维护和系统升级(改变某一层服务的实现不影响系统中的其他层次;如改变登机程序并不影响系统的其他部分)
应用层——报文
传输层——报文段(进程到进程之间的区分、提供可靠数据传输)
网络层——数据报(传输以分组为单位,源主机到目标主机端到端传输)
链路层——帧(解决相邻两点的传输)
物理层——bit(把数字数据转换成物理信号)
网络应用的体系结构:
进程通信:
进程:在主机上运行的应用程序
1.同一个主机内,使用进程间通信机制通信(操作系统)
2.不同主机间,通过交换报文来通信
客户端进程:发起通信的进程
服务器进程:等待连接的进程
分布式进程通信需要解决的问题:
1.进程标示和寻址问题(服务用户)
主机IP、TCP/UDP、相应端口号
2.传输层-应用层提供服务时如何(服务)
传输层提供的服务需要穿过层间的信息(应用层向传输层)
层间接口必须要携带:传输的报文;谁传的;传给谁;
传输层实体(tcp或udp实体)根据这些信息进行TCP报文段(UDP数据报)的封装:源端口号、目标端口号、数据等
使用socket简化传输的信息(源端口号ip和目的端口号ip不变,这四个信息不变,用一个代号标示通信双发或单方:socket)
tcp的socket是4元组的一个具有本地意义的标示
udp的socket(2元组):本IP,本端口;但传输报文时,需要提供对方ip和port
3.如何使用传输层提供的服务,实现应用进程之间的报文交换,实现应用(用户使用服务)
定义应用层协议:报文格式、解释、时序等
定义了:运行在不同端系统上的应用进程如何相互交换报文(类型、语法、语义、响应规则)
如何描述传输层的服务:数据丢失率、吞吐、延迟、安全性
互联网传输层提供的服务(两种)
1.TCP:可靠的传输服务,流量控制,拥塞控制,不能提供的服务:时间保证、最小吞吐保证,面向连接;
2.UDP:不可靠数据传输,不提供的服务:可靠、流量控制、拥塞控制、时间、带宽保证、建立连接。
UDP存在的必要性:
1.能够区分不同的进程
2.无需建立连接 :省去建立连接时间,适合事务性的应用
3.不做可靠性的工作:适合对实时性要求高对正确性要求不高的应用
4.没有拥塞控制和流量控制,应用能够按照设定的速度发送数据
TCP和UDP都不提供安全性,TCP加上SSL保证安全(如https)。
SSL在TCP上面实现,提供加密的TCP链接,私密性,数据完整性,端到端的鉴别
Web页:含有一个基本的HTML文件,该基本HTML文件包含若干对象的引用(链接,通过URL对每个对象进行引用)
web页:由一些对象组成
URL格式:访问协议、用户名、口令字、端口等;
Web的应用层协议:HTTP协议——超文本传输协议
使用TCP协议,端口号80
客户/服务器模式:
客户:请求、接收和显示Web对象的浏览器(HTTP request)
服务器:对请求进行响应,发送对象的Web服务器(HTTP response)
HTTP建立在TCP之上:
客户发起一个与服务器的TCP链接(建立套接字),端口号为80。
HTTP使用无状态服务器:不维护关于客户的任何信息(简单),不知道之前是否建立过连接,也不知道后续是否要建立连接,能支持更多的客户端。
维护状态的协议很复杂:需要维护历史信息;若服务器/客户端死机,导致二者信息状态可能不一致,二者必须一致;无状态服务器能支持更多的客户端
HTTP连接(类型)
非持久HTTP(HTTP/1.0):最多只有一个对象在TCP连接上发送(发送完一个对象,连接就关闭了,若要发多个需要开启新的TCP连接)
持久HTTP(HTTP/1.1):多个对象可以在一个TCP连接上传输(建立连接后不着急关闭,可以一直使用,发送多个对象)
响应时间模型
往返时间RTT:一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)
非持久HTTP:每个对象要2个RTT
响应时间:一个RTT用来发起TCP连接,一个RTT用来HTTP请求并等待HTTP响应,文件传输时间;响应时间一共为2RTT+传输时间
非流水方式的持久HTTP:每个引用对象花费一个RTT 客户端只能在收到前一个响应后,才能把新的请求发出去
流水方式的持久HTTP:所有引用(小)对象只花费一个RTT是可能的 客户端遇到一个引用对象就立即产生一个请求,不用等待收到前一个响应再发送。
HTTP/1.1的默认模式
HTTP请求报文:ASCII(人能阅读)
提交表单输入:
Post方式:包含在实体主体(entity body)中的输入被提交到服务器
URL方式:方法GET,输入通过请求行的URL字段上载
方法类型:
HTTP/1.0:GET、POST、HEAD(要求服务器在响应报文中不包含请求对象,用于故障跟踪)
HTTP/1.1:GET、POST、HEAD、PUT(将实体主体中的文件上载到URL字段规定的路径)、DELETE(删除URL字段规定的文件)
HTTP响应报文:
格式:状态行(协议版本、状态码、相应状态信息);首部行;数据(如HTML文件)
cookies维护用户-服务器状态(因为本身HTTP协议是无状态服务器)
4个组成部分:在HTTP响应报文中有一个cookies的首部行;在HTTP请求报文含有一个cookie的首部行;在用户端系统中保留有一个cookie文件,由用户的浏览器管理;在Web站点有一个后端数据库
Web缓存
目标:不访问原始服务器,就满足客户的请求
缓存即是客户端又是服务器
用户设置浏览器:通过缓存访问Web
浏览器将所有HTTP请求发给缓存:若对象在缓存中,直接返回;若不在,缓存请求原始服务器,然后再将对象返回给客户端
使用缓存的原因:降低客户端请求响应时间;减少一个机构内部网络与Internet进入链路上的流量;互联网大量采用缓存,可以使较弱的ICP也能够有效提供内容
条件GET方法:
目的:如果缓存器中的对象拷贝是最新的,就不要发送对象;
缓存器在HTTP请求中指定缓存拷贝的日期;
服务器:如果缓存拷贝陈旧,则响应报文没有包含对象
使用TCP协议,端口号21
FTP:文件传输协议
向远程主机上传输文件或从远程主机接收文件
客户/服务器模式
使用TCP传输协议
且是有状态协议
FTP命令、响应:控制连接以ASCII码文本
控制连接与数据连接分开:
客户端通过控制连接获得身份确认
客户端通过控制连接发送命令浏览远程目录
收到一个文件传输命令时,服务器打开一个到客户端的数据连接
一个文件传输完成后,服务器关闭连接
服务器打开第二个TCP数据连接用来传输另一个文件
“带内”传数据;“带外”传指令
SMTP使用TCP协议,端口号25
电子邮件3个主要组成部分:用户代理(客户端软件)、邮件服务器、简单邮件传输协议:SMTP
邮件服务器:
邮箱中管理和维护发送给用户的邮件;
输出报文队列保持待发送邮件报文
邮件服务器之间的SMTP协议:发送email报文(客户:发送方邮件服务器;服务器:接收端邮件服务器)
邮件发送协议SMTP
直接传输:从发送方服务器到接收方服务器
传输3阶段:握手,传输报文,关闭
命令:ASCII文本;响应:状态码和状态信息
报文必须为7位ASCII码
使用持久连接(建立一次连接后,可以发多个邮件)
SMTP:多个对象包含在一个报文中(HTTP:每个对象封装在各自的响应报文中)
邮件访问协议POP3/IMAP
从服务器访问邮件
POP:邮局访问协议(用户身份确认) 本地管理文件,在会话中无状态
IMAP:Internet邮件访问协议(在服务器上处理存储的报文)远程管理文件,在会话中保留用户状态
HTTP:Hotmail,Yahoo!Mail等
POP3协议:两个阶段
用户确认阶段:客户端命令、服务器响应
事务处理阶段,客户端
提供域名和IP地址的转换(DNS是域名解析系统,给其他应用使用,属于基础设施)
DNS存在必要性原因:IP地址标识主机、路由器,IP不好记忆,人们记忆“域名”,它把域名转换为IP地址。
DNS的主要思路:
1.分层的、基于域的命名机制
2.若干分布式的数据库完成名字到IP地址的转换
3.运行在UDP之上端口号为53的应用服务
4.核心的Internet功能,但以应用层协议实现
DNS主要目的:
1.实现主机名-IP地址的转换
2.其他目的:主机名到规范名字的转换;邮件服务器别名到邮件服务器正规名字的转换;负载均衡
DNS域名结构:
采用层次树状结构的命名方法;
Internet根被划为几百个顶级域:通用的(.com .edu);国家的(.cn .us .nl)
每个(子)域下面可划分为若干子域;
树叶是主机。
DNS名字空间
1.域名:从本域往上,直到树根;中间使用“.”间隔不同级别;域的域名:可以用于表示一个域;主机的域名:一个域上的一个主机
2.域名的管理:一个域管理其下的子域(.jp被划分为ac.jp co.jp);创建一个新的域,必须征得它所属域的同意。
3.域与物理网络无关:域遵从组织界限,而不是物理网络(一个域的主机可以不在一个网络;一个网络的主机不一定在一个域);域的划分是逻辑的,而不是物理的
名字服务器:
1.不能使用一个名字服务器:单点故障、通信容量、远距离的集中式数据库不方便操作。
2.使用区域(每个区域有一个名字服务器):区域的划分由区域管理者自己决定;将DNS名字空间划分为互不相交的区域,每个区域是树的一部分;名字服务器:每个区域都有一个名字服务器,维护它所管辖区域的权威信息;名字服务器允许放置在区域之外,保障可靠性
区域名字服务器维护资源记录
1.资源记录:
作用:维护 域名-IP地址的映射关系
位置:Name Server的分布式数据库中
DNS协议、报文
查询和响应的报文格式相同
使用缓存——提高性能,效率
一旦名字服务器学到一个映射,就将该映射缓存起来;如果情况变化,缓存结果可能和权威记录不一致,使用TTL(默认两天)
新增一个域:
在上级域的名字服务器中增加两条记录,指向这个新增的子域的域名 和 域名服务器的地址
在新增子域 的名字服务器上运行名字服务器,负责本域的名字解析:名字 到 IP地址
没有(极少)一直运行的服务器;任意端系统都可以直接通信;利用peer的服务能力;peer节点间歇上网,每次IP地址都有可能变化
文件分发问题(文件分发时间)
从一台服务器分发文件(大小F)到N个peer需要多少时间?
P2P文件分发:
非结构化P2P(三种方案)
方案1:集中式目录 (非结构化P2P)
有中心服务器。当对等方连接时,它告知中心服务器:IP地址,内容
可能存在的问题:单点故障,性能瓶颈,侵犯版权;文件传输时分散的,而定位内容则是高度集中的
方案2:查询洪泛(Gnutella)(非结构化)
全分布式:没有中心服务器
开放文件共享协议
向自己所有 的邻居查询,邻居再查询邻居
Gnutella协议:在已有的TCP连接上发送查询报文;对等方转发查询报文;以反方向返回查询命中报文
方案3:利用不匀称性(KaZaA)(非结构化)
每个对等方要么是一个组长,要么隶属于一个组长(对等方与其组长之间有TCP连接,组长对之间有TCP连接)
组长跟踪其所有的孩子的内容
组长与其他组长联系(转发查询到其他组长,获得其他组长的数据拷贝)
Kazaa小技巧:
1.请求排队(限制并行上载的数量;确保每个被传输的文件从上载节点接收一定量的带宽)
2.激励优先权(鼓励用户上载文件;加强系统的扩展性)
3.并行下载(从多个对等方下载同一个文件的不同部分,HTTP的字节范围首部,更快地检索一个文件)
HDT(结构化P2P)
哈希表、树状、环状
视频流化服务和CDN
如何向大规模用户同时提供视频服务,每个节点的带宽和上下载能力不同需求不同(异构性)
解决方案:分布式的,应用层面的基础设施CDN
视频
固定速度显示的图像序列
网络视频特点:高码率(高的网络带宽需求);可以被压缩;需求量大(90%以上的网络流量是视频)
数字化图像:像素的阵列
编码:使用图像内和图像间的冗余来降低编码的比特数
DASH——多媒体流化服务
1.服务器:
将视频文件分割成多个块;
每个块独立存储,编码于不同码率;
告示文件——提供不同块的URL
2.客户端:
先获取告示文件
周期性地检测服务器到客户端的带宽
查询告示文件,在一个时刻请求一个块,HTTP头部指定字节范围(如果带宽足够,选择最大码率的视频块;会话中的不同时刻,可以切换请求不同的编码块,取决于当时的可用带宽)
传输服务和协议:
为运行在不同主机上的应用进程提供逻辑通信
传输协议运行在端系统
发送方:将应用层的报文分成报文段,然后传给网络层;
接收方:将报文段重组成报文,然后传递给应用层。
有多个传输层协议可选择(TCP和UDP)
在发送方主机多路复用
从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装
在接收方主机解复用
根据报文段的头部信息中的IP地址和端口号将收到的报文段发给正确的套接字(和对应的应用进程)
主机收到IP数据报:
每个数据报有源IP地址和目标地址
每个数据报承载一个传输层报文段
每个报文段有一个端口号和目标端口号
主机联合使用IP地址和端口号将报文段发送给合适的套接字
无连接UDP多路解复用
创建套接字
在接收端,UDP套接字用二元组标识(目标IP地址、目标端口号)
当主机收到UDP报文段(检查报文段的目标端口号;用该端口号将报文定位给套接字)
如果两个不同源IP地址/源端口号的数据报,但有相同的目标IP地址和端口号,则被定位到相同的套接字
面向连接TCP多路复用
TCP套接字:四元组本地标识(源、目的IP地址,源、目的端口号)
解复用:接收主机用这四个值来将数据报定位到合适的套接字
服务器能够在一个TCP端口上同时支持多个TCP套接字