基本概念
- 进程:主机上运行的程序,一个主机同时可以有多个进程
- 通过网络报文交换通信
- P2P之中一个进程即可以是客户也可以是服务器
- 一对进程之中,发起进程的是客户;等待联系的是服务器
- Socket:连接应用进程和传输层的接口(API)
- 开发者可以控制API在应用层的一切
- 对传输层只有极少选择、控制权
- 进程寻址
- 主机识别标志:IP地址
- 不同进程的标识符:端口号
- HTTP:80
- HTTPs:443
- Mail(SMTP):25
- POP3:110
- 不同主机之间进程通信依据:IP+端口号
- 应用层协议:公有协议(HTTP)+私有(P2P)
网络对传输服务的需求
- 需要100%可靠数据传输:文件传输、telnet
- 允许一定数据丢失:网络电话
- 弹性带宽应用:Email
- 有最低带宽要求应用:直播
互联网传输层服务
TCP服务
- Cilent/Server进程间的连接
- 可靠传输——但无延时保障、带宽保障
UDP服务
- 无连接,尽力而为、无保障
- 无握手,容易被防火经配置阻挡
网络应用的结构
- C/S(client/server)架构:服务器随时在线,客户机只能通过服务器通信
- P2P架构:结点IP可变、间歇性入网、节点间可以直接通信
- P2P结构中结点可以同时是客户进程和服务进程
- C/S+P2P混合结构:文件检索-C/S、文件传输P2P
HTTP
基本概念
- HTTP(HyperText Transfer Protocol):超文本传输协议,应用层协议
- 一个Web页面=一个HTML文件+多个对象(图片、文字、音乐等)
- 基于TCP连接
- 无状态协议——服务器不维护任何有关客户端过去所发请求的信息
- URL(Uniform Resoure Locator) : 统一资源定位器
- URL格式:Scheme://host:port/path,协议;//主机名:端口/文件路径
HTTP连接
- RTT(Round Trip Time)——C/S之间发送一个无穷小数据包的往返时间
- 请求一个网页文件所需时间——2RTT+文件传输时间
- 第一个RTT为握手阶段的前两步骤
- 第二个RTT为握手阶段的第三步骤+请求+响应
- 非持久连接:
- 建立TCP连接——请求1——响应1——关闭TCP连接——建立TCP连接——请求2——响应2——关闭TCP连接
- 持久性连接:
- 建立TCP连接——请求1——响应1——请求2——响应2——关闭TCP连接
HTTP报文
HTTP请求报文
- 组成:请求行+头部+消息体
- HTTP1.0请求的方法
- POST方法:信息存储在Body里面
- GET方法:信息存储在URL字段
- HEAD:Serve的响应消息只返回头部
- HTTP1.1新增方法:
- PUT:将消息体中的文件上传到URL指定路径
- DELETE:删除URL字段指定的文件
HTTP响应报文
- 组成:状态行+头部+消息体
- 状态码:表示请求处理的状态
- 200 0K:请求成功,信息在返回的响应报文中
- 301 Moved Permanently:请求的对象已经被永久转移
- 400 Bad Request:该请求不能被服务器理解
- 404 Not Found:被请求的文档不在服务器上。
Cookies技术
- 核心功能:解决HTTP无状态特性
- 存储:
- 浏览器有一个cookies文件(本地保存用)
- 资源服务器的数据库有一个cookies文件(验证cookies用)
- HTTP请求报文的头部有cookies字段(请求时带上)
- HTTP响应报文的头部有cookies字(响应时带上)
- 特点:保存在本地,请求响应时存在于头部字段
- cookies类似技术,session、token机制
Web缓存/代理服务器技术
基本概念
- 核心功能:建立Web缓存器,让客户在不访问资源服务器的情况下快速获取资源(前提是代理中有相应资源)
- 缓存命中时——代理服务器 = 服务器 + 客户
- 缩短响应时间、减轻服务器压力、减少流量传输、提高效率
条件GET方法
- 功能:保证缓存服务器中资源的时效性
- 实现:当缓存命中时,代理服务器向资源服务器发送GET请求,头部包含If-Modified-Since字段
- 资源是最新时:资源服务器只返回响应首部
- 资源不是最新时:资源服务器返回响应首部+响应体
Email应用
邮件传输协议——SMTP
- SMTP(Simple Mail Transfer Protocol),基于TCP,25号端口
- 特点:
- 邮件服务器之间的通信
- 基于TCP+长连接
- 服务器 = 客户端+服务端
- Email消息必须由7位ASCII码构成
- 不使用中继服务器,即使两个服务器跨越太平洋也是这两个服务器直接传输
- 其他
- 传输三阶段:握手、传输、关闭
- 命令:ASCII文本
- 响应:状态码+语句
- 报文以CRLF.CRLF结尾(CR=回车,LF=换行)
- SMTP与HTTP:
- HTTP: 拉协议(pull),每个对象封装在独立的响应消息中。
- 响应一个文本+图形的文件,封装在两次响应里
- SMTP: 推协议(push),多个对象放进同一个报文
- 响应一个文本+图形的文件,封装在一个报文里
- SMTP报文强制使用7bits的ASCII编码,HTTP无限制
- 都使用命令/响应交互模式,命令和状态代码都是ASCII 码
- HTTP: 拉协议(pull),每个对象封装在独立的响应消息中。
- SMTP报文首部格式:From+To+Subject(可选)
邮件访问协议
- 用户代理访问服务器端邮件的协议(区分SMTP传输协议)
POP3
- POP3(Post Office Protocol——Version 3):第三版邮局协议,基于TCP,端口110
- 工作阶段:授权、事务处理、更新
- 授权:用户代理(浏览器)以明文形式发送给服务器用户名+口令
- 事务处理:下载邮件到本地
- 更新:更新服务器的邮件状态,例如下载后自动删除服务器中的已读邮件
- 弊端:不维护会话信息,多设备使用不方便
IMAP
- IMAP(Internet Mail Access Protocol):因特网邮件访问协议
- 维护会话信息:解决多设备问题
HTTP
- 使用HTTP通过浏览器和邮件服务器交互获取邮件,但是传输邮件还是使用SMTP!
DNS
基本概念
- DNS(Domain Name System):域名服务系统,基于UDP,53号端口
- 作用:代替IP地址,方便记忆(类比手机通讯录服务)
- HTTP、SMTP、FTP均基于DNS服务
工作机制
- 基本原理:从下往上,一层一层查询,可设立缓存机制(不访问高级DNS服务器)
- 层次、分布式
DNS报文
- 报文结构
P2P文件分发
- P2P(peer-to-peer):点对点传输
- Web/Mail/DNS均采取Cilent/Server结构,P2P实现平等协议传输
- 架构图:u表示上传速度,d表示下载速度,F表示文件大小
C/S架构 VS P2P架构文件传输
- 文件大小为F,Us为服务器上传速度,dmin为最小下载速度,N个客户机
- C/S架构:
- NF/Us表示服务器需要向N个客户机总共上传NF大小的数据需要的时间
- F/dmin表示最慢客户机的下载时间
- 取两者最大值
- P2P架构:
- F/Us表示服务器至少需要上传一个完整的副本(可能分散在各个客户机)
- F/dmin表示最慢客户机的下载时间
- 最后一项表示文件总流量为NF/总上行速度
- 伴随着用户数量的增加(一定条件下),P2P架构的优势愈发明显
BitTorrent——P2P协议
- 请求——最稀缺原则——请求邻居最少的部分
- 响应——激励算法——上传快下载快
HTTP流和CDN
HTTP流
- 流式视频——应用接收到视频就进行播放,同时缓存该视频后面部分的帧
- DASH(Dynamic Adaptive Streaming over HTTP):HTTP动态适应流
- DASH中,视频编码为不同的比特率的不同版本。客户根据带宽情况动态播放合适码率的视频。
- 服务器发送告示文件说明有不同的版本
CDN
- CDN(Content Distribution Network):内容分发网
- 核心:利用DNS进行重定向
- 运作机制
- ①用户访问网页www.NetCinema.com
- ②用户向本地DNS发送DNS查询请求
- ③本地DNS向权威服务器查询,权威服务器检测到在CDN范围之内,不返回自己的IP,返回CDN范围内专属查询的DNS权威服务器
- ④本地DNS向新得到的DNS服务器发送请求
- ⑤本地DNS返回已得到CDN内容的站点服务器
- ⑥用户和专属内容分发服务器发送下载请求