计算机网络原理 - 应用层

1 应用程序体系结构

可能的应用架构:
客户-服务器模式(C/S:client/server)
对等模式(P2P:Peer To Peer)
混合体:客户-服务器和对等体系结构
编程 :
1 在不同的端系统上运行
2 通过网络基础设施提供服务,应用进程彼此通信

例如 Web
: Web服务器软件和浏览器进行通信

大多数网络应用都不在网络核心而在网络边缘

2 应用层协议

协议 :定义在不同端系统上应用进程之间如何相互交换报文
交换报文类型 : 请求和应答报文
应用层协议仅仅是应用层的一部分

2.1 HTTP

HTTP是无状态的,服务器并不会维护关于客户端的任何信息

1 HTTP使用tcp连接
1 客户端发起与服务器的tcp连接(建立套接字)端口为80
2 服务器接收客户端的tcp连接
3 在浏览器和服务器之间交换HTTP报文
4 tcp连接关闭

非持久HTTP 有第四步
1 最多只有一个对象在tcp连接上发送
2 下载多个对象需要多个连接
3 HTTP1.0使用非持久连接

在这里插入图片描述
在这里插入图片描述

持久HTTP 无第四步
1 多个对象可以在一个tcp连接上传输
2 HTTP1.1默认使用持久连接
RTT : 往返时间
在这里插入图片描述
2 HTTP报文类型 :请求与响应
3 通用格式
在这里插入图片描述
4 提交方式

Post方式
1 网页中包含的表单输入,传输时提交到请求体中再被提交给服务器

URl方式
方法 :GET
通过URL字段在后面进行添加上传

5 方法类型
HTTP1.0
GET
POST
HEAD

HTTP1.1
GET
POST
HEAD
PUT
DELETE

6 HTTP响应状态码

200 OK 请求成功,请求对象包含在响应报文的后续部分
301 Moved Permanently 请求的对象已经被永久转移了;
新的URL在响应报文的Location: 首部行中指定 客户端软件自动用新的URL去获取对象
400 Bad Request 一个通用的差错代码,表示该请求不能被服务器解读
404 Not Found 请求的文档在该服务上没有找到 505 HTTP Version Not Supported

7 Cookies
因为HTTP默认无状态,所以后期给HTTP打了一个补丁 Cookies
在这里插入图片描述
cookie文件由用户的浏览器管理

cookies能带来什么 ?
1 用户验证
2 购物车
3 推荐
4 用户状态

缺点
1 能够知道许多客户隐私

3 DNS(Domain Name System)域名系统

1 将域名转换成对应的IP ,人类提供要访问机器的字符串,由DNS负责转换成为二进制网络地址

3.1 DNS的主要思路
1 分层 , 基于域的命名机制
2 若干分布式的数据库完成名字到IP的转换
3 运行在UDP之上的端口为53的应用服务
4 核心的Internet功能,但是以应用层实现,处于网络边缘

3.2 DNS主要目的
1 实现主机名 - IP地址的转换
2 主机规范名和别名的转换
3 邮件别名和规范名的转换
4 负载均衡

3.3 DNS域名结构
 一个层面命名设备会有很多重名
NDS采用层次树状结构的命名方法
Internet 根被划为几百个顶级域(top lever domains)
通用的(generic)
.com; .edu ; .gov ; .int ; .mil ; .net ; .org .firm ; .hsop ; .web ; .arts ; .rec ;
国家的(countries)
.cn ; .us ; .nl ; .jp
 每个(子)域下面可划分为若干子域(subdomains)  树叶是主机

在这里插入图片描述
在这里插入图片描述
TLD服务器 : 负责顶级域名和所有国家的域名
Network solution是公司维护
Educause公司维护edu TLD服务器

在这里插入图片描述

3.4 DNS的大致工作过程
1 应用调用解析器
2 解析器作为客户端, 向Name Server发出查询报文(封装到UDP报文)
3 Name Server 返回响应报文

在这里插入图片描述
3.5 本地名字服务器(Local Name Server)
1 每个ISP在居民区 , 公司 ,大学 都有一个本地DNS服务器
2 当一个主机发起一个DNS查询时,查询被送到本地DNS服务器
作用 :
1 缓存作用 , 提高效率
2 防止DNS攻击

作用 :起着代理的作用,将查询转发到层次结构当中

3.6 DNS查询方式
在这里插入图片描述

在这里插入图片描述

3.6 攻击DNS
DDoS攻击 : 对根服务器进行流量轰炸
方式 :发送大量ping

重定向攻击
1 中间人攻击
截获查询,伪造回答,从而攻击 某个(DNS回答指定的IP)站点
2 DNS中毒
发送伪造的应答给DNS服务器,希 望它能够缓存这个虚假的结果
措施 :
1 根服务器都配置了流量过滤器 , 防火墙
2 Local DNS 服务器

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

服务器
1 一直运行
2 固定的IP地址和周知的端口号
3 扩展性 : 服务器场(服务器集群)

客户端
1 主动与服务器通信
2 与互联网有间歇性的连接
3 可能是动态IP
4 不直接与其他客户端通信

4.1 进程通信
进程 :在主机上运行的应用程序
1 在同一个主机内,使用进程间通信机制通信,由操作系统定义
2 不同主机,通过交换报文来通信,由OS提供的通信服务,按照应用层协议交换报文,借助于传输层的服务

进程之间的通信通过IP和端口来确认地址,进行通信

应用层的功能由传输层的服务来进行支持,即应用层可以通过原语来操作传输层

5 P2P模式

1 没有或者很少一直运行的服务器
2 任意端都可以相互通信
3 利用peer的服务能力
4 peer节点间歇性上网,每次IP地址都有可能变化

在这里插入图片描述

6 CDN(Content Distribution Networks )和视频流化服务

1 多媒体流化服务 :DASH
DASH: Dynamic, Adaptive Streaming over HTTP

服务器
1 将每个·视频都分割成多个块
2 每个块独立存储,编码于不同的码率
3 告示文件 :提供不同块的URL

客户端
1 先获取告示文件
2 周期性地测量服务器到客户端的带宽
3 查询告示文件,在一个时刻请求一个块,HTTP头部指定字节范围

如果带宽足够,选择最大码率的视频块
会话中的不同时刻都可以切换不同的编码块(取决于当时的带宽和客户端的选择)

**服务器如何分发大量的视屏文件,并且重复居多 ,浪费大量带宽,如果中间跳转较多,客户体验很差 **
解决 :
通过CDN , 全网部署缓存节点,存储服务内容,就近为用户提供服务,提高用户体验

1 enter deep :将CDN服务器深入到许多接入网

更接近用户,数量多,离用户近,管理困难

bring home :部署在少数的关键位置

采用租用线路将服务器连接

在这里插入图片描述
在这里插入图片描述

7 Socket编程

socket :分布式应用进程之间的门,传输层协议提供端到端的服务接口

TCP : 可靠的 ,字节流服务
在这里插入图片描述
对于使用面向连接服务(TCP)的应用而言,套接 字是4元组的一个具有本地意义的标示
4元组:(源IP,源port,目标IP,目标port)
唯一的指定了一个会话(2个进程之间的会话关系)

在这里插入图片描述

UDP :不可靠(UDP数据报)服务

在这里插入图片描述
对于使用无连接服务(UDP)的应用而言,套 接字是2元组的一个具有本地意义的标示
2元组:源IP,源port (源端指定)
UDP套接字指定了应用所在的一个端节点(end point )

如何描述传输层的服务 ?
1 数据丢失率
2 吞吐
3 延迟
4 安全性

在这里插入图片描述
Internet 传输层提供的服务

TCP服务
1 可靠的传输服务
2 流量控制 :发送方不会淹没接收方
3 拥塞控制 :当网络出现拥塞时,能够抑制发送方
4 面向连接

不能提供的服务 :时间保证 最小吞吐保证和安全

UDP服务
传输效率高

不提供服务 :可靠性 ,建立连接 ,拥塞控制 ,时间 ,带宽保证 ,

在这里插入图片描述

TCP套接字编程
服务器首先运行,等待连接建立
1 服务器进程必须处于运行状态

创建欢迎socket
和本地端口进行捆绑
在欢迎socket上阻塞是等待接收用户的连接

客户端和服务器建立连接
2 创建客户端本地套接字(隐式捆绑到本地端口)

 指定服务器进程的IP和端口,进行连接

3 当服务端等到客户端的连接时
服务器接收客户端的请求,解除阻塞式等待,返回一个新的socket,与客户端通信

 允许服务器与多个客户端通信
  使用源IP和源端口来区分不同的客户端

4 连接API调用有效,客户端和服务器就建立了TCP连接

在这里插入图片描述

UDP Socket编程
1 客户端和服务器之间并没有连接
2 传送的数据可能乱序也有可能丢失

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值