应用层

同学们,达到计网最高层了嗷

应用层的两种方式

P2P方式

  • 对等方式,没有固定的服务请求者和服务提供者
  • 服务分散型
  • 可扩展性,系统新能不会因为规模的增大而降低
  • 具有成本上的优势

c/s客户服务器方式

  • 有明确的服务请求方,和服务提供方

  • 服务器总是处于运行状态,等待客户的服务请求

  • 服务集中型的

  • 尝会出现服务器计算机跟不上众多客户机的请求情况

  • 常用计算机群集,或者服务器场,构建一个强大的虚拟服务器

动态主机配置协议DHCP

DHCP作为应用层协议,使用的是客户/服务器方式,使用UDP提供的服务

作用是:动态的分配网络配置,不需要手动操作配置主机

DHCP UDP 端口67

DHCP客户 UDP 端口68 UDP用户数据报

工作过程

  1. 主机,也就是DHCP客户,启动DHCP客户进程,广播发送一个DHCP DISCOVER(dhcp discover)报文DHCP发现报文,该报文主要包含
    1. 事务ID
    2. MAC地址
    3. 原地址0.0.0.0
  2. DHCP服务器收到该广播地址,根据其MAC地址,查找数据库找对应配置信息,没有就默认发送广播报文:DHCP OFFER(dhcp offer)DHCP提供服务
    1. 事务ID:判断是否自己请求的报文
    2. 源地址
    3. 配置信息
      1. IP地址:ARP协议判断IP地址没有被占用
      2. 子网掩码
      3. 地址租期
      4. 默认网关
  3. DHCP客户收到DHCP OFFER,转而广播一个DHCP REQUERST(dhcp request),请求DCHP的服务确认
    1. 事务ID
    2. 请求的地址租期
    3. mac地址
    4. 等等
  4. DHCP服务器收到后根据事务ID嗯,OK也回复一个广播表示认可DHCP ACK报文
  5. 当DHCP客户收到这个DHCP报文后,先ARP检测自己分配到的地址是否已被占用,若果被占用,就恢复一个谢绝报文DHCP DECLINE 撤销IP地址足月,重新再发送DHCP DISCOVER

至此,DHCP客户可以使用该网络配置接入互联网

接下来的就是续约操作和解约释放由下图所示

DHCP服务器总不能啊每一个网络都整一个

然后就有了DHCP中继代理的概念

DHCP中继代理

给一个网络的路由器配置DHCP服务器的IP地址,使该路由器成为DHCP与主机的桥梁.

DNS域名系统

(Domain Name System)

域名更便于记忆

主机里也有个高速缓存寻找域名地址对应的IP地址

如果没有就想DNS请求解析

DNS基于UDP提供的服务 端口53

因特网采用层次树状结构的域名结构

最右是顶级域名

  • 国家顶级nTLD
  • 通用顶级gTLD
  • 反向域arpa

我国将二级域名划分两类

  • 类别域名
  • 行政区取名

次级域名

这四类都分布在世界各地,构成的服务器群集。

域名服务器四类

  • 根域名服务器
    • 最高层次的域名服务器,记录所有的顶级域名及其IP地址,Internet有13个不同IP地址的根域名服务器群集,通常不直接域名进行解析,而是返回该域名所属域名的顶级域名服务器的IP地址
  • 顶级域名服务器
    • 负责管理顶级域名服务器注册的所有二级域名,收到DNS查询请求,有可能直接返回ip地址,也有可能返回下一集权限域名服务器的IP地址
  • 权限域名服务器
    • 负责管理某个区的域名,每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道器管辖的域名与IP地址映射关系,同样的知道下级域名服务器的地址
  • 本地域名服务器
    • 不会超过几个路由器的距离

域名解析

递归查询

迭代查询

高速缓存

  • 为了提高DNS的查询效率,减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛的使用了 高速 缓存,高水缓存用来存放查询过的域名以及从何出获得域名映射信息的记录
  • 高速缓存在主机和服务器都有,其中存在的项目一般存在两天,设定一个新的合理的值

FTP文件传送协议

基于TCP协议的 文件传输

传送控制命令的TCP连接监听端口号21,会话期间一致保持打开

用于传送数据的TCP连接端口号20,使用开启,结束关闭

基本工作原理

  • 主动模式

客户随机的端口号与服务器的21端口建立连接,控制命令

刚客户端主命令请求,并告知一个随机端口号,FTP服务器收到后主动将20端口与客户端该随机端口号建立连接

  • 被动方式

与主动连接稍微不同的是,客户端发送命令,服务器需要先开启某个临时端口被动等待客户端另一个临时的端口号进行TCP连接

电子邮件

STMP与POP3协议

实际上就是邮件发送与邮件读取协议

SMTP简单邮件传送协议

基于TCP协议 25端口号

工作原理

跟实际的邮件没有什么区别,只不过道路换成了了网络中的各种信道,连通路,信件成了数据

电子邮件的信息格式不是由SMTP定义的,而是在RFC 822中单独定义的,首部和主体两部分构成

只能传送ASCII文本数据

为了解决SMTP进行传送中文,图片等多种

因此提出了MIME

多用途因特网邮件扩展

(multipurpose internet mail extensions)

  • 增加了5个新的邮件首部字段,这些字段提供有关文件主体的信息。
  • 定义了许多有邮件内容的格式,对多媒体电子邮件的表示进行了标准化
  • 定义了传送编码,可对任何内容格式进行转换

实际上就是将非ASCII的文本的数据,转换为ASCII在传送

接收方读取内容同时也是需要MIME进行解析。

MIME不仅用于SMTP,也通榆面向ASCII字符的HTTP

常用的读取协议

POP3

  • 邮局协议(Post office protocol),pop3是第三个版本
  • 简单功能有限
  • 只能下载并删除 或者 下载并保留的方式从邮件服务器下载邮件到用户方计算机。
  • 不允许用户在邮件服务器上管理自己的邮件。
  • 采用TCP C/S 端口110
  • 安装用户代理程序

IMAP

  • 因特网邮件访问协议IMAP(Internet Message Access Protocol),IMAP4是第四个版本,目前只是因特网的建议标准
  • 功能比POP3强大,用户可以在自己计算机上可 以操控邮件服务器中的邮箱,跟本体操控一样。因此IMAP也是一个联机协议
  • 采用TCP C/S 端口143
  • 安装用户代理程序

基于万维网的邮件

  • 浏览器登录
  • 不需要下载到本地管理,工作模式与IMAP类似

www

World Wide Web,不是特定的网络,是个大规模的,联机式的信息储藏所,是一个运行在因特网上 的一个分布式应用

浏览器对网页内容基于渲染引擎进行解析显示

统一资源定位符URL

1
<协议>://<主机>:<端口>/<路径>

http端口默认为80,可以不显示

以下详情可以移步前端分类文章:

HTML:网页结构内容

CSS:层叠样式

JavaScipt:脚本语言控制网页行为

部署在服务器端传输给浏览器进行渲染

HTTP

超文本传输协议(HyperText Transfer Protocol)

定义浏览器怎么向服务器

  • HTTP/1.0版本只能**非持续链接**,请求一个文件都需要与服务器建立TCP连接,收到响应立即关闭连接,听浪费时间的,假设建立多个TCP连接请求多个对象,又太浪费服务器资源
  • HTTP/1.1 可以采用持续连接的方式,在该方式下,万维忘服务器在发送响应请求依旧保持这条链接,所以现在大部分都是HTTP/1.1版本,实现更好的交互效果
    • 进一步提高效率,使用流水线方式,收到下一个响应报文之前就可以连续发送多个请求报文,同时服务器也就会发回一个接一个的响应报文,节省很多RTT时间.

HTTP的报文格式

面向文本,每一个字段都是ASCII码串,每个字段长度都是不确定的(

请求报文

眼熟么,就是请求头

示例

其他的方法

响应报文

经典状态码就是404 短语:Not Found

使用cookie在服务器上记录用户信息

第一次HTTP请求报文中没有携带cookie

服务器收到后生成唯一的cookie,并且以此为索引在服务器的后端数据库中创建一个项目,用来记录该用户访问该网站的各种信息

服务器的HTTP响应报文中就携带了该cookie 在首部字段中Set-Cookie

客户端从得到的报文中读取Cookie保存,再下一次访问时的请求报文就携带上了cookie

万维网缓存与代理服务器

  • 在万维网中还可以使用缓存机制提高万维网的效率
  • 万维网缓存又称为Web缓存(Web cache),可位于客户机,也可位于中间系统上,位于中间系统上的web 缓存又称为代理服务器(Proxy Server)
  • web缓存吧一些请求和响应暂存在本地磁盘中,当新请求到达时,就烦一会暂存响应,而不是再次根据URL再次访问资源。

假设原始服务器的文档更改,代理服务器中的副本没有更改,如果直接请求怎么说?会不会拿到旧的文档呢?

首先知道源主机向代理服务器发送响应时会给该响应设定一个有效日期。(人为设定)

答案是: 8会,你猜猜文件为什么会有创建日期和修改日期捏?主机用户请求时,没有过期还是直接发回响应,假设有效日期过期了:代理服务器将会询问源主机响应是否发生改变,假设修改日期的不同,源主机会返回最新的响应给代理服务器,代理服务器再将该文档封装报文发给请求的主机。如果相同,源主机就会回复一个响应报文状态码为304 Not Modified

补充:HTTPS

实际上可以这么理解

是HTTP Secure (安全加强版)

全称为Hypertext Transfer Protocol over Secure Socket Layer

在原有的HTTP下加入SSL层在(HTTP与TCP之间)

使HTTP明文传输变成加密传输

端口是443

之前有说过纯HTML是无状态的,加入SSL 就不一样了是有特定状态的响应,

提供了身份验证与加密通讯方法。

https协议需要到ca申请证书,一般免费证书很少,需要交费。