计算机通信网课程自学笔记
前言
本人选择并阅读的参考书为《计算机网络——自顶向下方法第七版》,因此本人将尝试以书中的顺序来梳理自己的学习笔记。同时本人还借鉴了一些课程课件中的知识内容,也将一并与书本内容结合进行归纳。
应用层
- 网络应用是计算机网络存在的理由
2.1 应用层协议原理
2.1.1网络应用程序体系结构
- 现代网络应用程序中两种主流体系结构:客户-服务器体系结构和对等(P2P)体系结构
- 客户-服务器体系结构中,有一个总是打开的主机称为服务器,客户相互之间不直接通信。服务器具有固定的、周知的地址,该地址称为IP地址
- 对等(P2P)体系结构中,对位于数据中心的专有服务器有最小的(或者没有)依赖。应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。P2P体系结构具有自扩展性
2.1.2进程通信
- 进行通信的实际上是进程而不是程序
- 在两个不同端系统上的进程,通过跨越计算机网络交换报文而进行通信
1.客户和服务器进程
对每对通信进程,我们通常将这两个进程之一标识为客户,而另一个进程标识为服务器。发起通信的进程被标识为客户,在会话开始时等待联系的进程是服务器。
2.进程与计算机网络之间的接口
进程通过一个称为套接字的软件接口像网络发送报文和从网络接收报文。套接字是同一台主机内应用层与运输层之间的接口。套接字也被称为应用程序和网络之间的应用程序编程接口。
3.进程寻址
为了表示接收进程,需要定义两种信息:①主机的地址;②在目的主机中指定接收进程的标识符。
主机由其IP地址标识,IP地址是一个32比特的量且它能够唯一地标识该主机。
接收进程由目的地端口号标识。
2.1.3可供应用程序使用的运输服务
- 要求:可靠数据传输、吞吐量、定时和安全性
1.可靠数据传输
如果一个协议提供了有应用程序地的一端发送的数据正确、完全地交付给该应用程序的另一端,就认为提供了可靠数据传输
2.吞吐量
运输层协议能够以某种特定的速率提供确保的可用吞吐量
具有吞吐量要求的应用程序被称为带宽敏感的应用
弹性应用能够根据当时可用的带宽或多或少地利用可供提供的吞吐量
3.定时
服务为了有效性而要求数据交付有严格的时间限制
4.安全性
2.1.4因特网提供的运输服务
- 因特网(更一般的是TCP/IP网络)为应用程序提供两个运输层协议:UDP和TCP
1.TCP服务
TCP服务模型包括面向连接服务和可靠数据传输服务
一个TCP连接是双全工的,当应用程序结束报文发送时,必须拆除该连接
2.UDP服务
UDP是无连接的,因此在两个进程通信前没有握手过程
3.因特网运输协议不提供的服务
今天的因特网通常能够为时间敏感应用提供满意的服务,但是它不能提供任何定时或带宽保证
2.1.5应用层协议
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文:
- 交换的报文类型,例如请求报文和响应报文
- 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的
- 字段的语义,即这些字段中的信息的含义
- 确定一个进程何时以及如何发送报文,对报文进行响应的规则
2.2 Web和HTTP
2.2.1HTTP概况
- Web的应用层协议是超文本传输协议(HTTP)
- HTTP由两个程序实现:一个客户程序和一个服务器程序
- HTTP定义了Web客户端向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式
- Web浏览器实现了HTTP的客户端,Web服务器实现了HTTP的服务端
- Web页面是由对象组成的,一个对象只是一个文件,多数Web页面含有一个HTML基本文件以及几个引用对象
- 每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名
因为HTTP服务器并不保存关于客户的任何信息,所以称HTTP为一个无状态协议
2.2.2非持续连接和持续连接
- 对于客户-服务器交互:可以每个请求/响应经一个单独的TCP连接发送或者所有请求及其响应经相同的TCP连接发送
- 若采用第一种方法,该应用程序被称为使用非持续连接
- 若采用第二种方法,该应用程序被称为使用持续连接
- 非持续连接有两个缺点:
①必须为每一个请求的对象建立和维护一个全新的连接
②每一个对象经受两倍RTT的交付时延,即一个RTT用于创建TCP,另一个RTT用于请求和接收一个对象
2.2.3HTTP报文格式
- HTTP报文有两种:请求报文和响应报文
1.HTTP请求报文
HTTP请求报文的第一行叫做请求行,其后继的行叫做首部行
请求行有三个字段:方法字段、URL字段和HTTP版本字段
方法字段包括:GET、POST、HEAD、PUT和DELETE
2.HTTP响应报文
响应报文有初始状态行,首部行和实体体
状态行有三个字段:协议版本字段、状态码和响应状态信息
2.2.4用户和服务器的交互:cookie
- 一个Web站点通常希望能够识别用户,可能是因为服务器希望限制用户的访问,或者因为它希望把内容与用户身份联系起来
cookie技术有四个组件:
①在HTTP响应报文中的一个cookie首部行
②在HTTP请求报文中的一个cookie首部行
③在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
④位于Web站点的一个后端数据库
2.2.5Web缓存
- Web缓存器也叫代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体
- Web缓存器既是服务器又是客户,可以大大减少对客户请求的响应时间,也可以大大减少一个机构的接入链路到因特网的通信量
2.2.6条件GET方法
- 使得缓存器证实它的对象是最新的
①请求报文使用GET方法
②请求报文中包含一个“If-Modified-Since:”首部行
2.3 因特网中的电子邮件
- 因特网中的邮件系统主要组成部分:用户代理、邮件服务器和简单邮件传输协议(SMTP)
- 邮件服务器形成了电子邮件体系结构的核心
2.3.1SMTP
- SMTP一般不使用中间邮件服务器发送邮件
- 在SMTP握手的阶段,SMTP客户指示发送方的邮件地址(产生报文的那个人)和接收方的邮件地址
2.3.2与HTTP的对比
- 1.HTTP主要是一个拉协议。某些人在Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息。SMTP基本上是一个推协议,即发送邮件服务器把文件推向接收邮件服务器
- 2.SMTP要求每个报文(包括它们的体)采用7比特ASCII码格式,而HTTP数据不受这种限制
2.3.3邮件访问协议
- SMTP用来将邮件从发送方的用户代理传送到发送方的邮件服务器,再传输到接收方的邮件服务器。通过引入一个特殊的邮件访问协议,将邮件服务器上的报文传送给他的本地PC
- 目前流行的邮件访问协议包括:第三版的邮局协议(POP3)、因特网邮件访问协议(IMAP)以及HTTP
1.POP3 - POP3按照三个阶段来工作:特许、事务处理以及更新
- 在特许阶段,用户代理发送用户名和口令以鉴别用户
- 在事务处理阶段,用户代理取回报文;同时在这个阶段用户代理还能对报文做删除标记、取消报文的删除标记以及获取邮件的统计信息
- 在更新阶段,用户发出quit命令之后,目的是结束该POP3对话;这时,该邮件服务器会删除那些被标记为删除的报文
2.IMAP - IMAP服务器把每个报文与一个文件夹联系起来
- IMAP允许用户代理获取报文某些部分的命令
3.基于Web的电子邮件 - 用户代理就是浏览器
- 电子邮件报文从浏览器发送到邮件服务器使用的是HTTP协议
2.4 DNS因特网的目录服务
- 主机的一种标识方法是它的主机名,但是这并没有提供主机在因特网中位置的信息
- 主机也可以用所谓的IP地址进行标识,其具有层次结构
2.4.1DNS提供的服务
- 域名系统(DNS):一种能进行主机名到IP地址转换的目录服务
- 域名系统(DNS)是
①:一个由分层的DNS服务器实现的分布式数据库
②:一个使得主机能够查询分布式数据库的应用层协议 - DNS还提供一些重要的服务:
①:主机别名或规范主机名
②:邮件服务器别名
③:负载分配
2.4.2DNS工作机理概述
- 在单一DNS服务器上运行集中式数据库完全没有可扩展能力。因此,DNS采用了分布式的设计方案
1.分布式、层次数据库
①根DNS服务器:提供顶级域服务器(TLD)的IP地址
②顶级域服务器(TLD):提供权威DNS服务器的IP地址
③权威DNS服务器
④本地DNS服务器
- 当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中
2.DNS缓存 - 为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用了缓存技术
- 本地DNS服务器也能够缓存TLD服务器中的IP地址,因而允许本地DNS绕过查询链中的根DNS服务器。
2.4.3DNS记录和报文
- 共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(RR),RR提供了主机名到IP地址的映射
- 资源记录是包含了下列下列字段的四元组(Name,Value,Type,TTL)
- TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间
2.5 P2P文件分发
2.6视频流和内容分发网
2.6.1因特网视频
- 对流式视频的最重要的性能度量是平均端到端吞吐量
2.6.2HTTP流和DASH
- 在HTTP流中,字节被收集在客户应用缓存中。一旦该缓存中的字节数量超过预先设定的门限制,客户应用程序就开始播放。
- HTTP动态适应流(DASH),视频编码为几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。客户动态地请求来自不同版本且长度为几秒的视频段数据块。
2.6.3内容分发网
- 几乎所有主要的视频流公司都利用内容分发网(CDN)
- CDN管理分布在多个地理位置上的服务器在它的服务器中存储视频(和其它类型的Web内容,包括文档、图片和音频)的副本,并且所有试图将每个用户请求定向到一个将提供最好的用户体验的CDN位置
- CDN可以分为:专有CDN和第三方CDN
1.CDN操作 - 大多数CDN利用DNS来截获和重定向请求
2.集群选择策略 - 集群选择策略动态地将客户定向到CDN中的某个服务器集群或数据中心
2.7套接字编程:生成网络应用
- 典型的网络应用是由一对程序(即客户程序和服务器程序)组成的,它们位于两个不同的端系统中。当运行这两个程序时,创建了一个客户进程和一个服务器进程,同时它们通过从套接字读出和写入数据在彼此之间进行通信
- UDP套接字与TCP不同的是,TCP是面向连接的协议,需要先握手并创建一个TCP连接。除此之外,TCP有欢迎套接字(这是所有要与服务器通信的客户的起始接触点)和连接套接字(这是随后为与每个客户通信而生成的套接字)
跳转
我们将以以下顺序进行总结: