计算机网络-应用层

应用层

6.1 域名系统DNS

6.1.1 域名系统概述

互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS

名字到IP地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的节点上运行,运行该程序的机器称为域名服务器

6.1.2 互联网的域名结构

任何一个链接在互联网上的主机或路由器,都有一个唯一的域名

域名的结构有标号序列组成,各标号之间用点隔开:

  • … .三级域名.二级域名.顶级域名

各标号分别代表不同级别的域名

6.1.3 域名服务器

一个服务器所负责管辖的范围叫做区

每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射

DNS服务器的管辖范围不是以域为单位,而是以区为单位

根域名服务器

根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有根域名服务器都知道所有的顶级域名服务器的域名和IP地址

根域名服务器共有13套装置

顶级域名服务器

顶级域名服务器负责管理在该顶级域名服务器注册的二级域名

本地域名服务器

当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器

域名解析过程

主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文

本地域名服务器向根域名服务器的查询通常是采用迭代查询
在这里插入图片描述
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录

DNS可以使用UDP或者TCP进行传输,使用的端口号都为53,大多数情况下使用UDP进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输:

  • 如果返回的响应超过的 512 字节(UDP 最大只支持 512 字节的数据)。
  • 区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据)。

6.2 文件传送协议

6.2.1 FTP概述

FTP特点

  • 使用TCP可靠运输服务
  • 主要功能是减少或消除在不同操作系统下处理文件的不兼容性
  • 使用C/S方式,一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另有若干个从属进程,负责处理单个请求

6.2.2 FTP的基本工作原理

在这里插入图片描述

  • 控制连接:服务器打开端口号 21 等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答。
  • 数据连接:用来传送一个文件数据。

根据数据连接是否是服务器端主动建立,FTP 有主动和被动两种模式:

  • 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0~1023 是熟知端口号。
  • 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。

6.2.3 简单文件传送协议 TFTP

知道名字即可

6.3 远程终端协议 TELNET

用户用TELNET就可在其所在地通过TCP连接注册到远地的另一个主机上(使用主机名或IP地址)

传输的是明文 不安全

6.4 万维网 WWW

6.4.1 万维网概述

统一资源定位符URL:标志万维网上的各种文档
超文本传送协议HTTP:客户程序与服务器程序之间进行交互所使用的协议
超文本标记语言HTML

6.4.2 URL

URL的格式

以冒号隔开的两大部分组成,并且在URL中的字符对大写或小写没有要求
在这里插入图片描述

  • 协议:FTP/HTTP/News
  • 主机:存放资源的主机在互联网中的域名
  • 端口/路径:有时可省略

6.4.3 HTTP

HTTP的操作过程

HTTP使面向事务的应用层协议,他是万维网上能够可靠交换文件的重要基础

HTTP报文通常使用TCP连接传送
在这里插入图片描述
在这里插入图片描述

HTTP的特点
  • 面向事务的c/s协议
  • HTTP 1.0协议是无状态的:连接是一次性的
  • HTTP协议本身也是无连接的
短链接

浪费时间,传输效率低

长链接(持续链接,keep-alive,连接复用)

HTTP/1.1协议使用持续连接,不需要什么特殊头字段指定,只要向服务器发送了第一次请求,后续的请求都会重复利用第一次打开的TCP连接,在这个连接上接受数据。也可以在请求头里明确要求使用长连接机制,Connection:keep-alive

不管客户端是否显式要求长连接,如果服务器支持长连接,他总会在响应报文里放一个“Connection:keep-alive”字段。

万维网服务器在发送响应后仍在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文

长连接也有一些小缺点。TCP连接上时间不关闭,服务器必须在内存里保存它的状态,这就占用了服务器的资源。如果有大量的空闲长连接只连不发,就会很快耗尽服务器的资源,导致服务器无法为真正有需要的用户提供服务。

所以,长连接需要在恰当时间关闭,不能永远保持与服务器的连接。

在客户端,可以在请求头里加上“Connection:close”字段,服务器看到后在响应报文里加上这个字段,发送之后调用socke API关闭TCP连接。

HTTP/2.0协议使用多路复用

队头阻塞

1.TCP队头阻塞

TCP数据包是有序传输,中间一个数据包丢失,会等待该数据包重传,造成后面的数据包的阻塞。

2.http队头阻塞

http1.x采用长连接(Connection:keep-alive),可以在一个TCP请求上,发送多个http请求。

有非管道化和管道化,两种方式。

  • 非管道化,完全串行执行,请求->响应->请求->响应…,后一个请求必须在前一个响应之后发送。
  • 管道化,请求可以并行发出,但是响应必须串行返回。后一个响应必须在前一个响应之后。原因是,没有序号标明顺序,只能串行接收。

管道化请求的致命弱点:

  1. 会造成队头阻塞,前一个响应未及时返回,后面的响应被阻塞
  2. 请求必须是幂等请求,不能修改资源。因为,意外中断时候,客户端需要把未收到响应的请求重发,非幂等请求,会造成资源破坏。

由于这个原因,目前大部分浏览器和Web服务器,都关闭了管道化,采用非管道化模式。

无论是非管道化还是管道化,都会造成队头阻塞(请求阻塞)。

解决http队头阻塞的方法:

  1. 并发TCP连接(浏览器一个域名采用6-8个TCP连接,并发HTTP请求)
  2. 域名分片(多个域名,可以建立更多的TCP连接,从而提高HTTP请求的并发)
代理服务器(万维网高速缓存)

代表浏览器发出HTTP请求

代理服务器把最近的一些请求和响应暂存在本地磁盘中

当与暂存的请求相同的新请求到达时,代理服务器就把暂存的响应发送出去,而不需要按照URL的地址再去互联网访问该资源

Cookie机制

cookie表示HTTP服务器和客户之间传递的状态信息

使用cookie的网站服务器为用户产生一个唯一的识别码,利用此识别码,网站就能够跟踪该用户在该网站的活动

其实本质上cookies就是http的一个扩展。有两个http头部是专门负责设置以及发送cookie的,它们分别是Set-Cookie以及Cookie。当服务器返回给客户端一个http响应信息时,其中如果包含Set-Cookie这个头部时,意思就是指示客户端建立一个cookie,并且在后续的http请求中自动发送这个cookie到服务器端,直到这个cookie过期。如果cookie的生存时间是整个会话期间的话,那么浏览器会将cookie保存在内存中,浏览器关闭时就会自动清除这个cookie。另外一种情况就是保存在客户端的硬盘中,浏览器关闭的话,该cookie也不会被清除,下次打开浏览器访问对应网站时,这个cookie就会自动再次发送到服务器端。

注意:

  • Cookie功能需要浏览器的支持。如果浏览器不支持Cookie(如大部分手机中的浏览器)或者把Cookie禁用了,Cookie功能就会失效。不同的浏览器采用不同的方式保存Cookie。IE浏览器会在“C:\Documents and Settings\你的用户名\Cookies”文件夹下以文本文件形式保存,一个文本文件保存一个Cookie。
  • Cookie具有不可跨域名性。Cookie在客户端是由浏览器来管理的。浏览器能够保证Google只会操作Google的Cookie而不会操作Baidu的Cookie,从而保证用户的隐私安全。浏览器判断一个网站是否能操作另一个网站Cookie的依据是域名。Google与Baidu的域名不一样,因此Google不能操作Baidu的Cookie。

cookie的有效期

Cookie的maxAge决定着Cookie的有效期,单位为秒(Second)。Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。 如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。

如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为–1。

如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除

注意:

  • 从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期。

cookie的修改删除

Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。

cookie的安全属性
如果不希望Cookie在HTTP等非安全协议中传输,可以设置Cookie的secure属性为true。浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie。

Session机制

Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。

如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。

6.5 电子邮件

6.5.1 概述

发送邮件的协议:SMTP(简单邮件传送协议)

读取邮件的协议:POP3,IMAP

MIME在其邮件首部说明邮件的数据类型,使用MIME可在邮件中同时传送多种类型的数据(SMTP的补充)

在这里插入图片描述

6.5.2 SMTP

25号端口

C/S模型

SMTP通信的三个阶段
  1. 连接建立:连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的。SMTP不使用中间的邮件服务器
  2. 邮件传送
  3. 连接释放:邮件发送完毕之后,SMTP应释放TCP连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值