计算机网络-应用层

文章目录

  • 应用层协议原理
  • 万维网和HTTP协议
    • 万维网概述
      • 统一资源定位符
      • HTML文档
    • 超文本传输协议(`HTTP`)
    • HTTP报文格式
      • 请求报文
      • 响应报文
      • cookie
    • 万维网缓存与代理服务器
  • DNS系统
    • 域名空间
    • 域名服务器和资源记录
    • 域名解析过程
      • 递归查询
      • 迭代查询
  • 动态主机配置协议(DHCP)
    • DHCP中继代理
    • DHCP交互过程
  • 电子邮件
    • 电子邮件系统的组成
      • 简单邮件传送协议
      • 邮局协议POP3
      • 互联网报文存取协议
    • 电子邮件格式和MIME

应用层协议原理

万维网和HTTP协议

万维网概述

万维网简称Web是一个大规模的、联机式的信息存储空间,是运行在互联网上的一个超大规模的分布式应用
万维网应用通过统一资源定位符URL来指明因特网上任何种类资源的位置,通过超文本标记语言html描述信息资源、通过超文本传输协议http传递信息资源

统一资源定位符

url的组成
< 协议 > : / / < 主机 > : < 端口 > / < 路径 > {<协议>://<主机>:<端口>/<路径>} <协议>://<主机>:<端口>/<路径>
比如湖南科技大学的官网:
image

  • < 协议 > : / / {<协议>://} <协议>:// :他指出访问该资源所使用的协议,或称为服务方式,最常用的协议就是HTTPHTTPS
  • < 主机 > : < 端口 > {<主机>:<端口>} <主机>:<端口> :他指出保存该资源的主机和处理该URL的服务器进程。其中 < 主机 > {<主机>} <主机>是指保存该资源的主机的域名或者IP地址, < 端口 > <端口> <端口>指明处理该url的进程,如果服务器上采用的端口是已经在IANA注册过的熟知端口,则 : < 端口 > {:<端口>} :<端口>可以省略,HTTP在IANA注册的熟知端口是80端口,当Web采用80端口时,就可以省略 : < 端口 > {:<端口>} :<端口>
  • / < 路径 > {/<路径>} /<路径> :指出资源在该主机中的具体位置,如目录和文件名,/代表根目录,根目录时一个逻辑目录,它可以映射到主机上的某个物理目录,映射关系由服务器程序指定

eg:例如,郑州大学主页的URL为"http://www/zzu.edu.cn",省略了HTTP的熟知80端口, 也省略了 / < 路径 > {/<路径>} /<路径>部分,它代表使用HTTP访问主机 w w w . z z u . e d u . c n {www.zzu.edu.cn} www.zzu.edu.cn 上的根目录下的默认资源,于目的主机的80端口绑定的服务器进程负责处理该URL指定的资源的访问。

HTML文档

万维网引入了超文本标记语言(HTML)作为万维网页面的标准语言

  • HTML是一种标记语言,或者说是一种描述如何格式化文档的语言,使用标记标签来描述网页文档,HTML标记标签简称为HTML标签

  • HTML标签是由一对 < > {<>} <>包含的关键词,通常成对出现,第一个标签是开始标签,第二个标签是结束标签,从开始标签到结束标签之间的所有代码称为HTML元素
    image

  • HTML定义了几十种不同的元素,用来定义不同的对象,如 < i m g > {<img>} <img>来定义图像, < p > {<p>} <p>来定义段落, < a > {<a>} <a>定义超链接

  • HTML的目标是指定文档的结构而不是文档外观,文档外观指定使用CSS,javascript是一种脚本语言用来控制网页的行为

  • 静态HTML文档:静态HTML文档在创作完毕后就存放在万维网服务器中,它的内容不会根据浏览器发来的数据而改变

  • 动态HTML文档:动态HTML文档在浏览器访问服务器时才创建,当浏览器的请求到达时,服务器会将URL映射到一个应用程序,由应用程序根据请求中的数据创建一个HTML文档,根据请求不一样,得到的文档也不一样

  • 活动HTML文档:活动文档HTML是把创建文档的工作移动到浏览器里进行,服务器发回给浏览器的文档中包含脚本程序,浏览器执行脚本后,得到完整的HTML文档,一旦文档建立后,她所包含的内容荣也就被固定下来了

超文本传输协议(HTTP

HTTP由两个一个客户程序(浏览器程序)和一个服务器程序(通常是万维网服务器),浏览器和万维网服务器一般运行在不同的端系统中,通过HTTP报文进行会话。
HTTP大致的工作过程如下:
image
hhtp/1.0:仅支持非持续连接
http/1.1:既支持非持续连接也支持持续连接

  • 非持续连接方式
    image
    非持续连接方式下每获取一个文件就要有两倍的RTT的时间开销
  • 持续连接方式
    不用每次传输都建立TCP连接,只需要在最开始的一次传输中建立TCP连接即可
    持续连接方式中还可以采用两种不同的方式,一种是流水线方式,一种是非流水线方式
    流水线方式就是我们在未收到HTTP相应报文是也可以发送新的HTTP请求报文
    非流水线方式是只有在接收到上一次HTTP响应报文后才能发送新的HTTP请求报文

HTTP报文格式

http报文分为两类一类是请求报文,一类是响应报文, http是面向文本的,因此报文中的每一个字段都是一些ASCLL码串。
请求报文和响应报文均由三部分组成

  1. 开始行:在请求报文中开始行叫请求行,在响应报文中开始行叫状态行
  2. 首部行:用来说明浏览器、服务器、或报文主体的一些信息。首部行可以包含多行,也可以不使用。每一行都有首部字段名和它的值
  3. 实体主体:在请求报文中叫请求主体,在响应报文中叫响应主体

请求报文

image
image
http的几种方法:
GET用于获取URL指定的资源
POST用于提交信息或数据
HEAD用于请求读取URL所指定的资源的首部
PUT向指定URL上传内容
DELETE请求服务器删除指定URL的资源
TRACE回显服务器收到的请求,用于测试或诊断
CONNECT用于代理服务器
OPTION请求服务器告知选项功能

响应报文

image
image

cookie

http是无状态协议,每次请求之间是相互独立的,cookie可以弥补http协议无状态的不足
cookie包含四个组件:

  1. http响应报文中的Set-cookie首部行
  2. http请求报文中的cookie首部行
  3. 在用户系统中保存的cookie,cookie可以保存在磁盘上由浏览器管理
  4. 位于万维网服务器的后端数据库
    image
    image

万维网缓存与代理服务器

DNS系统

域名空间

image
顶级域名

  1. 国家顶级域名:cnusuk
  2. 通用顶级域名:com(公司企业)net(网络服务机构)org(非营利组织)int(国际组织)edu(美国的专用教育机构)gov(美国的政府部门)mil(美国的军事部门)
  3. 基础结构域名/反向域名:arpa(只有这一个)用于反向域名解析

二级域名:(我国)

  1. 类别域名ac(科研机构)com(工商金融等企业)edu(中国的教育机构)gov(中国的政府机构)net(提供互联网络服务的机构)org(非营利性的组织)mil(中国的国防机构)
  2. 行政区域名:用于各省、自治区、直辖市例如bj、js

根是顶级域名后面的一个.

域名服务器和资源记录

域名服务器:

  1. 根域名服务器:最高层的域名服务器也是最重要的域名服务器,所有根域名服务器知道所有顶级域名服务器的域名和IP地址。互联网上面目前有13个根域名服务器使用13个不同的IP地址的域名a.rootservers.net~m.rootservers.net
    根域名服务器并不会直接把待查询的域名直接转换成IP地址(根域名服务器中也没有保存这些信息),而是告诉DNS解析器下一步应该找哪一个顶级域名服务器进行查询
  2. 顶级域名服务器:负责管理在该顶级域注册的所有二级域名,当收到DNS查询请求时他的回答可能是最终的IP地址,也可能是下一步应当找的域名服务器的IP地址
  3. 权限域名服务器:负责管理某个区的域名服务器,保存了该区域中的所有主机的域名到IP地址的映射
  4. 本地域名服务器:直接为用户提供域名解析服务的域名服务器。当一台主机发出DNS查询请求时,这个查询请求报文被发送给本地域名服务器。每个互联网服务提供方都可以拥有一个本地域名服务器,这种域名服务器有时也称默认域名服务器

image

域名解析过程

image

递归查询

image
如果DNS客户所询问的域名服务器不知道被查询域名的IP地址,那么该域名服务器就将代替DNS客户,继续向其他域名服务器发出查询请求报文,直至得到结果

通常主机向本地域名服务器发起的查询是递归查询

迭代查询

image
当域名服务器收到迭代查询的请求报文时,要么给出所要查询的主机的IP地址,要么告诉DNS客户下一步应当向哪一个域名服务器进行查询,而不会代替DNS客户进行下一步查询

本地域名服务器向其他域名服务器发出的查询是迭代查询

高速缓存

  1. 高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录,
  2. 为了保证高速缓存中的内容正确,域名服务器为每项内容设置计时器并删除超过合理时间的项,
  3. 本地DNS服务器不仅缓存最终查询结果,也能缓存顶级域名服务器的IP地址,因而本地DNS服务器可以绕过根域名服务器

动态主机配置协议(DHCP)

  • 互联网上广泛使用动态主机配置DHCP来自动配置网络参数,配置信息一般包括IP地址子网掩码默认路由器的IP地址和本地域名服务器的IP地址
  • DHCP服务分配给DHCP用户的IP地址等网络参数是临时的,只能在一段时间内使用,这段时间称为租用期
  • DHCP客户使用UDP68端口,DHCP服务器使用UPDP67端口

DHCP中继代理

为什么需要DHCP中继代理
DHCP客户启动时,需要利用广播报文寻找DHCP服务器,该报文称为DHCP发送报文,DHCP发送报文采用本地网络广播地址作为目的的IP地址,该报文不能被路由器转发,因此DHCP只能发现本网络上的DHCP服务器,这就要求在每个网络上都配置一台DHCP服务器,为了简化配置,避免DHCP服务器过多,我们采用DHCP中继代理解决这个问题

DHCP交互过程

image

  1. DHCP客户从UDP端口68以广播方式发送DHCP Discover报文,目的IP:255.255.255.255,源IP地址:0.0.0.0
  2. DHCP服务器广播发送DHCP Offer报文给予相应
  3. DHCP客户从收到的Offer报文中选择一个服务器,向所选择的DHCP服务器广播发送DHCP Request报文
  4. DHCP服务器收到Request报文后,向DHCP客户广播发送DHCP ACK报文

收到DHCP ACK报文时,DHCP客户真正获得、并能够分配IP地址

  1. 将租期记为T,当到达0.5T时,DHCP客户单播发送DHCP Request报文请求续租,如果没有DHCP ACK报文,则在0.875T时,会再次单播发送DHCP Request报文请求续租
  2. DHCP服务器收到单播DHCP Request报文,向DHCP客户单播发送DHCP ACK报文或DHCP NAK报文

如果DHCP客户收到DHCP ACK报文,则更新租用期,重新设置计时器
如果DHCP客户收到DHCP NAK报文则停止使用原来的IP地址,发送DHCP Discover报文重新请求
DHCP客户可以随时发送DHCP Release报文,释放IP地址

电子邮件

电子邮件系统的组成

image

  • 用户代理:发送发用户代理、接收方用户代理,用户与电子邮件系统的接口,通常情况下是主机中运行的程序
  • 邮件服务器:发送方邮件服务器、接收方邮件服务器,主要功能是发送和接收邮件,以及向发信人报告邮件传送的情况
  • 协议SMTP(发)POP3(收)IMAP(收)
    image

简单邮件传送协议

  1. SMTP规定了在两个相互通信的SMTP进程之间如何交换信息
  2. SMTP客户使用25端口与SMTP服务器建立TCP连接
  3. SMTP使用客户-服务器工作方式
  4. SMTP规定了14条命令、21种应答信息每条命令用几个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始,后面附上(也可不附上)很简单的文字说明

SMTP协议的缺点,不能传送可执行文件或其他二进制对象
仅限于传送7位ASCLL码,不能传送其他非英语国家的文字,SMTP服务器会拒绝超过一定长度的电子邮件

邮局协议POP3

特点C/S、TCP连接、端口号110
pop3工作方式

  1. 下载并保留(在服务器)
  2. 下载并删除

互联网报文存取协议

  • 特点:C/S、端口号143
  • 发出删命令之前IMAP服务器中的邮件一直保存这
  • IMAP允许用户只读取邮件中某些部分,如只读取一个邮件的首部
  • IMAP为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令

电子邮件格式和MIME

一封邮件由一个基本的信封数个首部字段一个空行邮件主体组成。首部的每个字段由一行ASCLL文本组成
常见的电子邮件首部及其含义如下:
image

  • MIME在原有的邮件格式基础上,增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。
  • MIME定义了五种新的邮件首部
  • MIME规定了非ASCII码文件的编码方式
  • MIME定义了多种邮件主体的类型和子类型
    image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/114690.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决CSS中height:100%失效的问题

出现BUG的场景&#xff0c;点击退出到登录页面&#xff0c;发现高度不对 上面出现了一种只是占了内容的高度&#xff0c;没有占满100%&#xff0c;为什么会出现这种情况呐&#xff1f; 让div的height"100%"&#xff0c;执行网页时&#xff0c;css先执行到&#xff0…

华为OD机试 - 数组组成的最小数字 - 逻辑分析(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

YOLOv5:按每个类别的不同置信度阈值输出预测框

YOLOv5&#xff1a;按每个类别的不同置信度阈值输出预测框 前言前提条件相关介绍YOLOv5&#xff1a;按每个类别的不同置信度阈值输出预测框预测修改detect.py输出结果 验证修改val.py输出结果 参考 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更…

H5ke9

上次fetvh就一个参数url,,就是get请求 fetch还可以第二个参数对象,可以指定method:改为POST 请求头header :发送txt,servlet,json给客户端,,异步请求图片 1 这节客户端传到服务器端 2异步文件上传,两三行代码把文件传输 mouseover事件 .then()的使用 是Promise对象的一个方法…

持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)

Faster-Whisper是Whisper开源后的第三方进化版本&#xff0c;它对原始的 Whisper 模型结构进行了改进和优化。这包括减少模型的层数、减少参数量、简化模型结构等&#xff0c;从而减少了计算量和内存消耗&#xff0c;提高了推理速度&#xff0c;与此同时&#xff0c;Faster-Whi…

tmux工具

B站学习地址&#xff1a;tmux教程

vue封装独立组件:实现手写签名功能

目录 第一章 效果展示 第二章 准备工作 2.1 使用的工具vue-sign 2.1.1 安装 2.1.2 了解 2.1.3 参数说明 第三章 源代码 第一章 效果展示 第二章 准备工作 2.1 使用的工具vue-esign 2.1.1 安装 npm install vue-esign --save 2.1.2 了解 兼容pc端和移动端有对应的参…

Redis的四种部署方案

这篇文章介绍Reids最为常见的四种部署模式&#xff0c;其实Reids和数据库的集群模式差不多&#xff0c;可以分为 Redis单机模式部署、Redis主从模式部署、Redis哨兵模式部署、Cluster集群模式部署&#xff0c;其他的部署方式基本都是围绕以下几种方式在进行调整到适应的生产环境…

@RunWith(SpringRunner.class)注解的作用

通俗点&#xff1a; RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类&#xff0c;比如Autowired注入的类&#xff0c;有了RunWith(SpringRunner.class)这些类才能实例化到spring容器中&#xff0c;自动注入才能生效 官方点&#xff1a; RunWith 注解是JUnit测…

构建mono-repo风格的脚手架库

前段时间阅读了 https://juejin.cn/post/7260144602471776311#heading-25 这篇文章&#xff1b;本文做一个梳理和笔记&#xff1b; 主要聚焦的知识点如下&#xff1a; 如何搭建脚手架工程如何开发调试如何处理命令行参数如何实现用户交互如何拷贝文件夹或文件如何动态生成文件…

Android工具栏ToolBar

主流APP除了底部有一排标签栏外&#xff0c;通常顶部还有一排导航栏。在Android5.0之前&#xff0c;这个顶部导航栏以ActionBar控件的形式出现&#xff0c;但AcionBar存在不灵活、难以扩展等毛病&#xff0c;所以Android5.0之后推出了ToolBar工具栏控件&#xff0c;意在取代Aci…

Python 获取cpu、内存利用率

获取cpu、内存利用率 # -*- coding: latin1 -*- import psutil cpuPercent 0 psutil.cpu_percent() while True:vm psutil.virtual_memory()memoryPercent vm.percentcpuPercent psutil.cpu_percent(1) *10print("cpuPercent:"str(cpuPercent)" %")prin…

TiDB 7.4 发版:正式兼容 MySQL 8.0

MySQL 是全球最受欢迎的开源数据库&#xff0c;长期位于 DB-Engines Ranking 排行榜第二名&#xff0c;在世界范围内拥有数量庞大的企业用户和开发者。然而&#xff0c;随着时间的推移&#xff0c;MySQL 用户正面临新挑战。Oracle 官宣将在 2023 年 10 月终止 MySQL 5.7 版本的…

【小白福音】手把手教学搭建Vue+SpringBoot开发环境完整教程

前言:在很多新手小白在准备开发一个属于自己的前后端分离项目的时候需要准备一些例如Java环境配置、Node.Js配置、Maven配置以及软件安装等等,于本次博主亲自录制了一套完整的安装配置教程,提供到最后给大家进行下载。 注:本教程仅适用于小白,每一节课都是博主原创录制的,…

学 Java 怎么进外企?

作者&#xff1a;**苍何&#xff0c;CSDN 2023 年 实力新星&#xff0c;前大厂高级 Java 工程师&#xff0c;阿里云专家博主&#xff0c;土木转码&#xff0c;现任部门技术 leader&#xff0c;专注于互联网技术分享&#xff0c;职场经验分享。 &#x1f525;热门文章推荐&#…

《黑客帝国:破解编程密码》——探索编程世界的奥秘

文章目录 前言黑客帝国代码雨UbuntuLinux世界的奥秘如何在Ubuntu中查看系统信息科普推荐书籍后记 前言 在电影《黑客帝国》问世后&#xff0c;它不仅带来了震撼视觉体验&#xff0c;更在技术和编程领域产生了深远的影响。这部电影&#xff0c;让人们对计算机和编程的认识进一步…

0-1矩阵列互斥问题——回溯法 Python实现

三、 0-1 矩阵的列集互斥问题。给定一个 m n m \times n mn 的 0-1 矩阵 A \mathrm{A} A 。定义列互斥为: 对于矩阵 A A A 中的任意两列 i i i 和 j j j, 如果在对应的每一行上, i i i 和 j j j 不存在同时为 1 的情况, 则称列 i \mathrm{i} i 和 j \mathrm{j} j 互斥…

[动态规划] (四) LeetCode 91.解码方法

[动态规划] (四) LeetCode 91.解码方法 91. 解码方法 题目解析 (1) 对字母A - Z进行编码1-26 (2)11106可以解码为1-1-10-6或者11-10-6, 但是11-1-06不能解码 (3) 0n不能解码 (4) 字符串非空&#xff0c;返回解码方法的总数 解题思路 状态表示 dp[i]&#xff1a;以i为结…

Echats-自定义图表1

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"zh-cmn-Hans"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>…

手机知识:手机“飞行模式”你真的会用吗,看完你就懂了

目录 “飞行模式”的实用技能 关于手机的谣言 回想一下&#xff0c;当你第一次知道手机上的“飞行模式”时&#xff0c;你认为这是一个怎样的功能&#xff1f; 普通青年&#xff1a;在飞机上要使用的模式。 文艺青年&#xff1a;手机终日忙忙碌碌&#xff0c;偶尔也需要放飞…