计算机网络:应用层

体系结构

客户端-服务器(C/S)

http

P2P

qq

混合结构

  • Napster:文件传输p2p;文件搜索c/s

网络应用进程通信

  • 不同主机上的进程:消息交换(报文交换)
  • 客户机进程:发起通信请求的进程
  • 服务器进程:等待通信请求的进程
  • p2p架构中也有客户机进程服务器进程

Socket 套接字

使用下层提供的服务TCP,关于网络编程的API:传输协议的选择,参数的设置

寻址进程

进程的标识问题

  1. 标示主机:IP地址 唯一的标示一台主机
  2. 主机上每一个进程:端口号,有些是已经约定的 http:80 mail:25 0-65536
  3. 进程标识符:IP地址+端口号

应用层协议

去RFC文档查找详细的协议

  • 公开的协议:http
  • 私有的协议:许多p2p

内容

  • 消息类型:请求消息,响应消息
  • 消息格式(语法)
  • 字段的语义
  • 规则:何时 如何

需求

  • 数据丢失/可靠性
  • 时间/延迟
  • 带宽

Internet提供的服务

两个:TCP UDP

Web应用

  • 对象
  • 对象的寻址:URL 协议(scheme)?/host:port/path
http
  • C/S结构:浏览器,服务器(web server)如Apache(阿帕奇)
  • TCP 80端口
  • 无状态 不维护任何有关客户端过去请求的信息
连接类型
  • 非持久性链接 1.0版本
  • 持久性链接 1.1版本 连续传输多个对象
    • 无流水的持久性连接:客户端收到前一个响应后才能发送新的请求
    • 带有流水机制的持久性连接 1.1默认
响应时间分析
  • RTT往返时间
  • 响应时间:发起建立连接 1 发送http请求 响应消息前几个字节到达 1 响应消息中所含文件/对象的传输时间
消息格式

头部行是可扩展的

请求消息

ASCII:人直接可读

  1. 请求行:请求方法 URL HTTP版本
  2. 头部行:主机地址,客户端浏览器,连接,接受的语言,
  3. 携带数据:用户名,密码之类的

上传输入

  • POST:表格
  • URL方法:GET 信息比较少,可以放到request行的url里 ?username&password

HTTP 1.0:

  1. GET
  2. POST
  3. HEAD:不要把请求的对象放到响应消息中

HTTP 1.1:

  1. HTTP 1.0
  2. PUT
  3. DELETE
响应消息
  1. 状态行:版本 状态码
  2. 头部行
  3. 空行
  4. 数据
Cookie技术

HTTP的消息中加入cookie头部行

web缓存/代理服务器 proxy server

在不访问服务器的前提下满足客户端的http请求

  • 缩短响应时间;减少机构/组织流量;大范围内有效内容分发
  • 条件GET:最新版本,版本一致

Email应用

  • SMTP,邮件服务器,客户端
  • 异步应用
  • 邮件服务器:email的核心
    • 邮箱,消息队列
SMTP
  • 响应模式:命令/响应
  • 格式:
    • 头部行:
    • 消息体:
  • MIME 多媒体邮件扩展
    • 在邮件头部增加额外行
邮件访问协议
  • POP:认证/授权 下载
  • IMAP:更多功能,复杂,操纵存储消息
  • HTTP:基于Web的Email
POP3
  • 认证过程
  • 事务阶段
  • 模式:下载并删除,下载并保持
  • 无状态
IMAP
  • 有状态

DNS

互联网的核心服务

域名系统

互联网上主机/路由器的识别问题

两套:

IP地址

数字

域名

www.baidu.com 好识别

域名解析系统 DNS

IP与域名的映射,完成域名的解析

  • 分布式数据库
  • 应用层协议(有应用层软件)
  • 在应用层实现的
服务
  • 负载均衡:Web服务器 提供多个服务器的地址,轮流
  • 翻译
  • 主机别名
分布式层次式数据库
  • 根域名服务器 13个
  • 顶级域名服务器(TLD) .com .org .edu .cn 国家
  • 权威域名服务器:组织,解析内部的
  • 本地域名解析服务器:不严格属于层级体系,每一个ISP都有:客户发给本地域名服务器,本地域名服务器作为代理
查询过程

想获得IP地址-迭代查询:

  • 访问本地域名服务器-根域名-顶级域名
  • 本地-顶级-权威
  • 本地-权威-IP地址
  • 本地-主机

递归查询:

  • 本地-根-TLD-权威-TLD-根-本地
缓存&更新
  • 本地域名服务器会缓存TLD的映射
记录&消息格式
  • 资源记录 RR:四元组
  • 协议:查询恢复协议,格式是一样的
  • 消息头部:16位查询编号,回复相同
如何注册域名
  • 域名管理机构申请注册:提供名字 IP地址;管理机构插入两条记录

P2P

  • 动态更换IP地址
  • 节点阶段性接入
BitTorrent 文件传输
  • 查询邻居chunk 同时发送chunk
  • tit for tat
  • 上传速率高就能找到更好的交易伙伴
索引技术
  • 信息到节点位置(IP+ 端口号)
  • 文件共享。即时消息
Napster 集中式索引
  • 中央目录服务器
  • 单点失效/性能瓶颈/版权
洪泛式查询 Query flooding
  • 完全分布式
  • 节点只对自己有的文件检索
  • 覆盖网络:TCP-边-覆盖网络
  • 转发查询消息
  • 查询命中:反向路径
  • 网络负担
层次式覆盖网络
  • 超级节点 普通节点
  • 超级节点之间是洪泛的
  • Skype:私有应用层协议

Socket编程

  • 应用编程接口 API
开发网络应用程序

针对端系统,用户使用的主机,不包括路由器等

  • 面向网卡编程:硬件
  • 面向 Packet Driver 几乎针对所有网卡:直接面向数据链路层
  • NDIS Windows , LibPcap等等函数库
  • NetBIOS :会话层
  • 应用层传输层之间:套接字
  • 基于Web开发/中间件编程:应用层之上
应用编程接口 API
  • 应用层协议:应用进程的信息交互

  • 应用进程和底层的接口:API

  • API:系统调用的接口 应用进程控制权和操作系统控制权转换

  • 经典API:套接字(伯克利socket),WINSOCK,TLI传输层接口

Socket API
  • 面向BSD
  • 面向TCP/IP协议栈,提供接口
  • 目前:网络应用的工业标准,绝大多数操作系统都支持,最常用,通信模型(C/S)
  • 连接在传输层协议上的端口
  • 端口号:对应的哪一个套接字
  • IP地址:主机上的进程
  • 操作系统/进程 :套接字描述符
  • 文件的抽象
  • 端点地址:IP+端口号
  • sockaddr_in IP+端口号 地址族:可以面向各种协议栈
WINSOCK
  • WSAStartup(版本,WSADATA(实际提供的版本号))开始调用
  • WSACleanup(void) 最后调用,解除绑定释放资源
  • socket(协议族,套接字类型,协议号=0) 创建套接字
  • TCP:流式套接字SOCK_STREAM UDP:报问套接字SOCK_DGRAM 还有SOCK_RAW直接面向网络层
  • Closesocket(套接字描述符) 关闭套接字,不一定关闭套接字的数据结构
  • bind(套接字描述符,端点地址,)绑定套接字本地端点地址 IP+端口号
  • listen(sd,queuesize)
  • connect()只用于客户端
  • accept() 服务器端只用于TCP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值