一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
应用层
应用层协议原理
网络应用程序
- 运行在不同主机上的程序,利用网络相互通信
- 不需要运行在网络核心中
应用系统结构和网络体系结构
- 应用系统结构由开发者确定,确定网络应用在不同端中的组织形式
- 网络体系结构固定且向应用提供特定的服务集合
典型结构
C/S
- C
- 可能不固定的IP
- 不永远在线
- Client不直接通讯
客户端。如果基于web,就是浏览器
- S
- 永远在线、提供设施和服务
- 周知固定的IP
服务器端
- 易于管理,Server可能是瓶颈
- web/FTP/telnet/email
P2P
- 无居中心位置的Server
- 主机间直接连接
- 可能间歇性连接
- IP地址可能不固定
- 特点
- 高扩展性
- 管理困难
混合型
- Napster
- 管理集中(C/S)
- 传输分布(P2P)
- 即时通讯
- 用户间通讯一般是P2P
- 状态检测/用户定位是C/S
进程间通信机制
- 进程
- 两个进程位于同一主机
- IPC
- 操作系统负责IPC
- 两个进程位于不同主机
- 使用Socket(套接字)交换信息
- 网络应用由成对的进程组成
- 客户进程:发起通信
- 服务进程:等待连接
运行在主机中的程序
- 进程通过socket向网络发送/从网络接收信息
- sorket是应用程序和网络之间的接口
- API可以选择传输层协议/设置协议的某些参数
- 进程寻址
- 进程必须有标识符(端口号)
- Internet主机用IP地址作为标识
- 进程标识=IP+端口号
- HTTP:80
- Mail:25
应用对网络的需求
- 可靠性
- 某些应用容忍一定的丢失
- 某些需要很高的可靠性
- 及时性
- 要求延时小
- 宽带(吞吐率)
- 带宽敏感
- 带宽不敏感
- 安全
- 机密性
- 完整性
- 不可否认性
- 可用性
- TCP
- 面相连接
- 可靠传输
- 流量控制
- 拥塞控制
- 不提供及时性、带宽保证
- UCP
- 不可靠数据传输
- 不提供
- 连接
- 可靠传输
- ….
- 为了最小带宽保证,对丢包不敏感
应用层协议
- 应用层负责进程间如何交换消息
- 消息类型
- request & response
- 消息结构
- 消息语义
- 何时发送如何响应
Web和HTTP
概述
- Web 提供On-Demand服务,用户主动拉取
- Web由对象组成
- html语言编写
- 一个基本html文件和引用其他对象
- 使用URL标示

- http是web应用层的协议
- c用browser利用http请求接收显示对象
- 利用HTTP消息传输对象
- 是一种无状态的协议
- 使用传输层的TCP
- 不管浏览器如何显示(解释)对象
HTTP使用TCP连接的两种方式
非持续的连接
- 建立一次连接只能传输一个object
- http/1.0默认使用
- 连接是串行或并行由浏览器配置
- 要多建立一个tcp连接(html)
- 实效性
- RTT(往返时间)
- HTTP响应时间
- 需要两个RTT加对象传输时间
- 非流水(串行)
- 一个RTT建立连接
- 一个RTT获取html文件并传输
- 重复N次
- 流水(并行)
- 一个RTT建立连接
- 一个RTT获取html基本文件并传输
- 一个RTT请求建立连接RTT,根据并发数M确定连接对象个数
- 一个RTT获取M个传输对象,
- 重复3、4直到所有对象传输成功
持续的连接
- 建立一次连接
- http/1.1默认使用
- 非流水的HTTP协议
- 串行
- 一个RTT建立连接
- 一个RTT获取一html或个传输对象,共重复N+1次
- 流水的HTTP协议
- 并行
- 并行连接前提
- 一个RTT建立连接
- 一个RTT获取html基本文件
- 一个RTT获取N个对象
- 并行不能减少对象传输时间
HTTP消息格式
request
- 是ASCII编码
- 每行之间用<cr><lf>隔开
- 请求头request line
- GET 路径名+对象名 HTTP版本
- 头部行head line
- host:主机服务器域名(域名加端口)
- user-agent:浏览器类型
- 便于对不同浏览器类型发送不同的版本
- connection:是否持续连接(close/keep-alive)
- URL
- 无法从中看出IP地址
http:// + 服务器域名 + 路径名 + 对象名
response
- status line
- 版本号 状态代码 状态短语
- head line
- Data:创建resond的时间
- Server:Server基本信息
- Last-Modified:创建或最后修改时间(提供回答时间)
- connection: 是否持续链接
- Content-Length:对象的长度
- Content-type:对象的类型
- 两个连续的<cr><lf>后是文件内容
版本方法
- GET
- 返回网页等
- POST
- 向server发送内容并返回对象
- GET+URL方式可以实现相同功能
- HEAD
- 用于调试
- 没有消息体
- PUT
- 把对象上载到sever
- DELET
- 删除服务器内容
状态代码和状态短语
- 200 ok
- 301 Moved Permanently
- 400 Bad Request
- 404 NOT FOUND
- 505 HTTP Version Not Supported
c和s的交互:cookie
- 实现了无状态的HTTP上实现用户会话层的功能
- sever在response中利用头部行设定cookie (携带id)
- 在request 时set cookie头部行携带cookie
- 主要信息存储在客户端cookie file
- 服务器存在各种数据库
- 保存到服务器:session
Web Catching
- 距离客户较近的地方设置缓存,代替sever向客户发送requst,缩短访问时间
- 代理服务器充当客户和服务器角色
- 降低access link流量强度
- 降低内容提供商的效率
- 可能获得陈旧内容
- 条件GET
- >>>
- 前言
- 异步通信
- 组成
- 用户代理
- 邮件服务器
- 简单邮件传输协议(SMTP)
- 在服务器中存储
- 简介
- Mail sever
- 电子邮件系统中的核心部件
- 邮箱保存用户到达的邮件
- 消息队列暂存发送的邮件
- SMTP
- 电子邮件应用层协议
- 负责发送端和接收端服务器的通信
- 传输层用TCP协议
- 是push协议区别于HTTP
- 邮件访问协议
- SMTP发送方
- POP3接收
- IMAP接收
- HTTP接收
- DNS
- 域名服务/域名服务
DNS
- 分布式数据库
- 存储IP和名字对应关系
- 层次结构的名字服务器实现
- 应用层协议
- 运行在UDP上,端口号:53
- IP地址
- 网络层
- 点分十进制表示
- 32bit
- DNS的服务
- 主机别名
- 邮件服务器别名
- DNS工作原理
- 分布式
- 不是集中式
- 单点故障
- 通信容量
- 查询延迟大
- 数据库系统维护和扩展问题
- DNS服务器层次结构
- 13个根服务器集群
- 12家机构,1698个实例
- TLD顶级域服务器
- 权威服务器
- Local DNS服务器
- 不严格属于名字服务器的层次结构
- C和DNS服务器层次结构的桥梁
- 主机查询服务器,若有,则走本地,否则走DNS服务器层次服务器
- 默认
- 主机名字的层次结构
- 节点服务器标识符(包括点)不能超过63字节
- 树形,路径逆序形成
- 域名解析方式
- 递归(recusive)
- “我替你查”
- 每一层返回确定结果
- 一般保存到权威服务器
- 迭代(iterated)
- “我不知道,他可能知道”
- 每一层不一定返回确定结果
- 根服务器只提供迭代
- DNS缓存
- Cacting table
- 存到本地或local DNS
- 提高查询速度
- 一致性问题
- DNS记录
- 名字与IP资源记录(RR)
- name value type ttl(存活时间)
- Type A
- 域名 IP地址
- Type NS
- 域名 管理该域的DNS服务器的名字
- Type CNAME
- 别名 规范化名字
- Type MX
- 邮件服务器别名 邮件服务器规范化名字
- 如果一服务器是主机的DNS服务器
- 会给出type A的RR
- 如果一服务器不是主机的DNS服务器
- 给出应该存在的DNS服务器的type NS的RR
- 以及该DNS服务器的type A的RR
- DNS协议-消息
- request和reply
- 注册域名
- 注册权威服务器,向顶级域名服务器要求提供:负责域所注册服务器的权威服务器的名字和IP地址
- 注册机构将在.com 域名服务器中添加两条记录:
- (networkutopia.com, dns1.networkutopia.com, NS)
- (dns1.networkutopia.com, 212.212.212.1, A)
- 课堂练习
- DNS采用客户服务器工作模式
- 子节点不能识别父节点的IP地址
- 父节点存子节点IP地址
- 域名不能反应计算机的物理地址
P2P文件分发
- P2P结构
- 特征
- 数量庞大,连接时断时续
- 定位内容方法
- 目录
- 查询泛洪
- 层次
- CS
- Us服务器上行速度
- di用户端下行速度
- ui
- NF/Us服务器发送N个F所需时间
- F/ui用户端下载文件时间
- Ucs=max(NF/Us,min(F/ui))
- P2P
- F/Us(P2P只要上传一份就可)
- F/d min
- U total=Us+sum(ui)
- NF/U total
- U p2p =max(F/Us,F/d min,NF/U total)
- P2P协议birTorrent分流
- tracker: 跟踪torrent中节点的进入/离开
- torrent: 交换同一文件的节点集合
- 文件被划分成(chunk,256KB)
- peer 加入torrent: 最初没有chunk,逐步积累chunk.
- 向tracker注册,以获得torrent中的peer列表,并选择性地与其中的某些peer建立TCP连接.
- 下载数据块的同时也向其他peer上载数据
- peer可以随时加入/离开torrent
- 视频流和内容分发网络
- 网络视频是Internet带宽消耗大户
- 可扩展和异构性面临挑战
- 分布式,应用层视频基础设施
- 视频流和CDN
- 视频
- 帧
- 编码解码
- 压缩方法
- 流式视频存储
- HTTP流
- 使用URL地址并找到,发送
- DASH
- 自适应,根据用户条件选择不同的URL链接
- CDN内容分发网站
- 集群选择策略
- 地理距离最近
- 基于性能测量
Socket程序设计
- 简介
- 标准/专用的网络应用
- Socket由应用创建,OS控制,是应用层和传输层的接口
- TCP Socket程序设计
- Socket:进程和传输层之间的接口
- TCP:进程间基于字节的可靠传输管道
- S
- S必须事先启动,等待C的连接
- 创建S并标识
- Port是Socket的本地标识
- 侦听
- 交互C
- 关闭
- C
- 创建TCP Socket
- 指定服务器的ip和Port
- 连接
- 服务器收到C的连接请求,Accept并创建新的TCP Socket
- 先向welcome Socket三次握手再创建新的连接
- 并行
- 字节流
- 输入流
- 输出流
- 字节流中无需目的地址
- UDP
- 无三次握手,
- 数据里要写地址
- Sever需要解析出源地址和源端口号
- 不可靠的数据传输
- UDP Socket 程序设计
Prev
计算机网络和因特网
Next
传输层
Loading...