应用层

作者: freemanIT | 来源:发表于2022-03-22 14:26 被阅读0次

应用层

应用层: 解决通过应用进程的交互来实现特定网络应用的问题, 是计算机网络体系结构的最顶层, 是设计和建立计算机网络的最终目的, 也是计算机网络中发展最快的部分

应用层常见协议

  1. 超文本传输, HTTP, HTTPS
  2. 文本传输, FTP
  3. 电子邮件, SMTP, POP3, IMAP
  4. 动态主机配置, DHCP
  5. 域名系统, DNS

域名 Domain Name

ip 地址记忆不方便, 并不能表达组织的名称和性质, 用域名来表达

  • 最终还是得知道目标主机的ip 地址

为什么不直接使用域名?

  • ip 地址固定4 个字节, 域名比较长, 会增加路由器的负担, 浪费流量

根据级别不同, 可以分为

  • 顶级域名 (Top-level Domain, TLD)
  • 二级域名
  • 三级域名 ...

域名分类

通用顶级域名(General Top-level Domain, gTLD)

  • com(公司), net(网络机构), org(组织机构), edu(教育机构)
  • gov(政府部门), int(国际组织)

国家及地区顶级域名(Country Code Top-level Domain, ccTLD)

  • cn(中国), jp(日本), uk(英国)

新的通用顶级域名(New Generic Top-level Domain New gTLD)

  • vip, xyz, top, club, shop

二级域名

二级域名是指顶级域名之下的域名

  • 在通用顶级域名下, 它一般是指域名注册人的名称, google, baidu, microsoft
  • 在国家及地区顶级域名下, 它一般是指注册类别的, com, edu, gov, net
域名分类 域名分类

DNS 服务器

DNS(Domain Name System), 域名系统

  • 利用DNS 协议, 可以将域名解析成对应的ip 地址
  • DNS 可以基于UDP协议, 也可以基于TCP 协议, 服务器占用53 端口
dns服务器

DNS 服务器

  • 客户端首先访问最近的一台DNS 服务器, 客户端自己配置的DNS 服务器
  • 所有DNS 服务器都记录了DNS 根域名服务器的ip 地址
  • 上级DNS 服务器记录下一级DNS 服务器的ip 地址
  • 全球共有13 台IPv4 的DNS 根域名服务器, 25 台IPv6 的DNS 根域名服务器
dns域名系统转换

用户在浏览器地址中输入域名, TCP/IP的网际层使用IP 地址, 从域名到IP 地址的转换, 由属于应用层范畴的域名系统DNS, 在后台帮用户完成

dns查询总结 dns查询例题

客户/服务器方式(C/S方式)和对等方式(P2P)

概念

两种方式的概念

客户/服务器方式

客户服务器方式

对等方式

对等方式

DNS 常用命令

ipconfig /displaydons 查看DNS 缓存记录 
ipconfig /flushdns 清空DNS 缓存记录
ping 域名 ping 域名会自动解析DNS
nslookup 域名 主动解析DNS

DHCP(DISCOVER OFFER REQUEST ACKNOWLEDGE)

ip地址的分配

静态IP 地址, 动态IP 地址

  • 静态IP 地址

    手动配置, 场景: 不需要经常移动的台式机, 学校机房, 服务器等

  • 动态IP 地址

    从DHCP 服务器自动获取IP 地址, 场景: 移动设备, 无线设备等

DHCP, Dynamic Host Configuration Protocol, 动态主机配置协议

DHCP, 基于UDP 协议, 客户端68 端口, 服务器67 端口

DHCP 服务器会从IP 地址池中, 挑选一个IP 地址出租给客户端使用一段时间, 到期回收. 路由器可以充当DHCP 服务器.

提供了即插即用联网(plug-and-play networking)的机制.

dhcp的访问过程

分配ip 的过程

DISCOVER: 发现服务器

  • 发广播包(源IP为0.0.0.0, 目标IP 是255.255.255.255, 目标MAC是FF:FF:FF:FF:FF:FF)

OFFER: 提供租约

  • 服务器返回可以租用的IP 地址, 以及期限, 子网掩码, 网关, DNS等信息

REQUEST: 选择IP 地址

  • 客户端选择一个OFFER, 发送广播包进行回应

ACKNOWLEDGE: 确认

  • 被选中的服务器发送ACK 数据包给客户端, 分配完毕
dhcp分配ip过程 dhcp请求确认过程

遇到的问题?

DHCP服务器可以跨网段分配IP 地址吗? DHCP 服务器和客户端不在一个网段

  • 可以借助DHCP 中继代理(DHCP Relay Agent), 实现跨网段分配IP 地址
dhcp中继代理

自动续约

  • 客户端会在租期不足的时候, 自动向DHCP 服务器发送REQUEST 申请续约

常用命令

ipconfig /all DHCP 详细信息, 租约, 过期时间, DHCP 服务器地址
ipconfig /release 释放租约
ipconfig /renew 重新申请IP 地址, 申请续约

HTTP(Hyper Text Transfer Protocol), 超文本传输协议

URL 和URI 的关系

URI 包括了URL

html/login.html, 这是一个URI, 但是不能标识唯一标识

http://localhost:8080/hello/html/logn.html, 这是一个URL, 可以标识唯一

HTTP 协议

  • 互联网最广泛的应用层协议
  • 设计最初的目的, 提供一种发布和接收HTML 页面的方法, 由URI 来标识具体的资源
  • 之后传递的数据不仅仅是HTML, 应用非法广泛

HTML(Hyper Text Markup Language), 超文本标记语言

HTTP 版本和标准

HTTP/0.9

  • 只支持GET 请求获取文本数据, 且不支持请求头响应头等, 无法向服务器传递太多数据

HTTP/1.0

  • 支持POST, HEAD 请求方法, 支持请求头响应头, 支持更多种数据类型
  • 浏览器每次请求都需要与服务器建立一个TCP 连接, 请求处理完成后立即断开

HTTP/1.1(最广泛的版本)

  • 支持PUT, DELETE 方法
  • 采用持久连接(Connection: keep-alive). 多个请求公用一个TCP连接

HTTP/2.0 HTTP/3.0 ?

http版本

标准

万维网协会W3C, 互联网工程任务组IETF协调制定, 最终发布RFC

RFC(Request For Comments, 请求意见稿)

  • HTTP/2 标准已正式发表, 取代HTTP/1.1 称为HTTP 的实现标准

报文格式

http报文格式

ABNF

ABNF(Augmented BNF)

  • BNF 的增强版
  • 用作Internet 中通信协议的定义语言
  • 是最严谨的HTTP 报文格式描述形式

ABNF 规则

abnf规则 报文整体格式

报文格式 request-line, status-line

request-line格式

header-filed, message-body

header-field格式

URL 编码

url 中出现特殊字符, 例如中文空格等, 需要进行采用UTF-8 编码

请求方法

GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE

GET: 常用于读取操作, 请求参数直接拼接在URL 的后面

POST: 常用于添加, 修改, 删除操作, 请求参数放在请求体中, 没有大小限制

HEAD: 请求得到与GET 请求相同的响应, 但没有响应体, 场景, 下载一个大文件前, 先获取其大小HEAD, 再决定是否下载, 节省宽带资源

OPTIONS: 用于获取目的资源所支持的通信选项, 比如服务器支持的请求方法

PUT: 对已经存在的资源进行整体覆盖

PATCH: 对资源进行部分修改, 不存在则创建新的资源

DELETE: 删除指定资源

TRACE: 请求服务器回显其收到的请求信息, 主要用于HTTP 请求的测试和诊断

CONNECT: 可以开启一个客户端与所请求资源之间的双向沟通的通道, 它可以用来创建隧道(tunnel)

头部字段(Header Field)

分为4 种类型

  • 请求头字段(Request Header Fields), 有关要获取的资源或客户端本身信息的信息头
  • 响应头字段(Response Header Fields), 有关响应的补充信息, 服务器本身的例如名称版本等信息头
  • 实体头字段(Entity Header Fields), 有关实体主题的更多的信息, 例如主体的长度(Content-Length)或MIME类型
  • 通用头字段(General Header Fields), 同时适用于请求和响应消息, 但是与消息主体无关的信息头
请求头字段

Referer, 可用于防盗链

请求头字段2 请求头字段3

响应头字段

响应头字段1 响应头字段2 响应头字段3

Cookie 记录用户信息

cookie记录用户信息

状态码 Status Code

只是HTTP 请求是否已成功完成

分为以下几类

  • 信息响应: 100~199
  • 成功响应: 200~299
  • 重定向: 300~399
  • 客户端错误: 400~499
  • 服务器错误: 500~599

常见状态码

100 Continue

  • 请求的初始部分已经被服务器收到, 并且没有被服务器拒接, 客户端应继续发送剩余的请求, 如果完成就忽略
  • 允许客户端发送请求体的请求前, 判断服务器是否愿意接收请求, 服务器通过请求头判断
  • 在某些情况下, 如果服务器在不看请求体就拒接请求时, 客户端就发送请求体是不恰当或低效的

200 OK, 请求成功

302 Found, 请求的资源被暂时的移动到了由Location 头部指定的URL 上

304 Not Modified, 说明无需再次传输请求的内容, 可以使用缓存的内容

400 Bad Request, 语法无效, 服务器无法理解该请求

401 Unauthorized, 缺乏目标资源要求的身份验证凭证

403 Forbidden, 服务器端有能力处理该请求, 但是拒接授权访问

404 Not Found, 服务器无法找到所请求的资源

405 Method Not Allowed. 服务器禁止了使用当前HTTP 方法的请求

406 Not Acceptable, 服务器无法提供与Accept-Charset以及Accept-Language指定的值向匹配的响应

408 Request Timeout, 服务器想要将没有在使用的连接关闭

500 Internal Server Error, 所请求的服务器遇到以外的情况并阻止其执行请求

501 Not Implemented, 请求的方法不被服务器支持, 无法处理

502 Bad Gateway, 作为网关或代理角色的服务器, 从上游服务器中接收到的响应的时无效的

503 Service Unavailable, 服务器尚未处于可以接收请求的状态. 服务器停机维护或超载

form 提交 常用属性, multipart/form-data

action: 请求的URI

method: 请求方法(GET, POST)

enctype: POST请求时, 请求体的编码方式

  • application/x-www-form-urlencoded, 用& 分隔参数, 用= 分隔键和值, 字符使用URL 编码方式进行编码
  • multipart/form-data, 文件上传时必须使用这种编码方式

同源策略, 跨域资源共享

同源策略(Same-Origin Policy)

  • 默认情况先AJAX 请求只能发给同源的URL
  • 同源是指3个相同: 协议, 域名, 端口
是否同源判断

img, script, link, iframe, video, audio 标签不受同源策略的约束

解决方法

  • CORS(Cross-Origin Resource Sharing), 跨域资源共享

CORS的实现需要客户端和服务器同时支持

服务器返回相应的响应头, Access-Control-Allow-Origin, 允许跨域访问

跨域访问

代理服务器 (Proxy Server)

特点

  • 本身不产生内容
  • 处于中间位置转发上下游的请求和响应

正向代理 方向代理

正向代理: 代理的对象时客户端

反向代理: 代理的对象时服务器

代理对象

正向代理的作用

  • 隐藏客户端身份
  • 绕过防火墙(突破访问限制)
  • Internet 访问限制
  • 数据过滤
代理的过程

反向代理作用

  • 隐藏服务器身份
  • 安全防护
  • 负载均衡
负载均衡代理服务器

代理服务器 头部字段

代理服务器头部字段

HTTP 总结

http总结

CDN(内容分发网络)

CDN(Content Delivery Network), 内容分发网络

  • 利用最靠近每位用户的服务器
  • 更快更可靠的将音乐, 图片, 视频等资源文件, 一般是静态资源, 传递给用户
cdn服务器 使用前后对比

CDN 运营商在全国乃至全球的各个大枢纽城市都建立了机房, 部署大量拥有高存储高带宽的节点, 构建一个跨运营商, 跨地域的专用网络

FTP 文件传送协议

概念

ftp概念

文件传送协议FTP 应用

采用C/S 方式

FTP 客户计算机可将各种类型的文件上传到FTP 服务计算机上

ftp上传文件

FTP客户也可以从FTP 服务计算机下载文件

ftp下载文件

根据应用需求的不同, FTP 服务器肯需要一台高性能和高可靠的服务器计算机, 有可能是一台普通的个人计算机

FTP 工作原理

FTP 服务器监听端口21, 使得客户进程能够连接上

FTP 客户随机选择一个临时端口号与其建立TCP 连接, 这条TCP 连接用于FTP 客户与服务器之间传送FTP 的相关控制命令, 这条命令是FTP 客户与服务器之间命令的通道

ftp建立传输通道

FTP 服务器使用自己的端口号20 与其建立TCP 连接, 用于传送文件

服务器建立ftp通道

被动模式建立连接通道

ftp被动建立连接通道

两种模式对比

ftp两种模式对比

两种模式都是以下情况

  • 控制连接在整个会话期间保持打开
  • 数据传输完毕后关闭

FTP总结

ftp总结

电子邮件

概念

电子邮件过程概念

发送和接收过程

电子邮件发送传输过程

简单邮件传送协议SMTP(Simple Mail Transfer Protocol) 基本工作原理

发送接收的传递

电子邮件的信息格式

电子信息格式

邮件读取

邮件的读取

基于互联网的电子邮件

1643034561740.png

电子邮件总结

电子邮件总结

相关文章

  • Linux 网络管理

    ↓发送接口 ↕ 应用层 ← 应用层协议 → 应用层 APDU接口 ↕ ...

  • http网络编程

    http协议基础 所谓网络编程,指的是应用层和传输层。 层级 内容 应用层 <应用层>TELNET,SS...

  • http网络编程

    http协议基础 所谓网络编程,指的是应用层和传输层。 层级 内容 应用层 <应用层>TELNET,SS...

  • 网络分层包含哪几部分?分别的作用

    五层 应用层 - http / ftp / dns - 报文 (应用层、表示层、会话层合并为应用层) 传输层 - ...

  • 计网笔记-应用层

    应用层分为两部分:应用程序,应用层协议 应用层 为用户提供Web访问,电子邮件,文件传输等功能的服务 应用层协议 ...

  • 网络协议底层原理(八):应用层

    一、应用层 应用层位于五层模型中的第一层,应用层的作用就是遵守各种应用层协议,从而产生数据,然后向下发送给传输层,...

  • 应用层架构之重构Controller

    本篇在 应用层架构之CDD 这篇的基础上提出,重构Controller和应用层。 这是关于CDD那篇 应用层架构之...

  • 计算机网络体系结构

    1.应用层 应用层是体系结构中的最高层。应用层直接为用户的应用程序提供服务。应用层协议很多,比如支持万维网应用的H...

  • 29 分布式缓存重建并发冲突问题以及zookeeper分布式锁

    上一篇 “分发层 + 应用层” 双层nginx 架构 之 应用层实现, 主要讲解了实现应用层数据缓存更新,为模板提...

  • tcp/ip协议族

    关注应用层协议就行了, 应用层往下的就不要关注了

网友评论

      本文标题:应用层

      本文链接:https://www.haomeiwen.com/subject/bcupdrtx.html