第六章 应用层

#计算机网络 #应试笔记与八股

6.2 域名系统(DNS)

域名系统(DNS,Domain Name System):
将便于人们记忆的含有特定含义的字符串格式的主机名转换为互联网网络传输所必须的无序的IP地址的一个命名系统。

域名:

  1. 由英文字符、连接字符( - )和标号分隔符( . )组成。
  2. 各个标号由标号分隔符分割,每个标号不可超过63个字符,完整域名长度不超过255个字符
  3. 用了几个标号就叫域名,最右侧的标号叫顶级域名
  4. 域名不区分大小写

个人最高可以申请到二级域名,拥有二级域名的可以自行分配三级、四级域名

域名服务器:
为客户端提供域名解析服务的服务器就叫做域名服务器。

域名服务器按照层次可以分为:

  1. 根域名服务器:是最高层次的域名服务器,其拥有所有顶级域名服务器的域名和IP地址。其通常不负责将域名转换为IP地址,而是告诉本地域名服务器下一步应当查询哪个顶级域名服务器此类域名服务器是服务器集群
  2. 顶级域名服务器:顶级域名服务器负责管理其顶级域名下所有二级域名。其通常会提供直接的IP地址解析也可能返回下一步应当查询的授权域名服务器的IP地址。
  3. 授权域名服务器:授权域名服务器负责管辖对应的二级域名的IP地址,其总能将其所管辖的域名转换为IP地址
  4. 本地域名服务器:每个ISP、机构甚至局域网都可以拥有的一个域名服务器,该服务器通常负责转发主机的域名查询请求到上级域名服务器并做缓存处理,当下次其他主机查询该域名时可直接从缓存中读取并解析。本地域名服务器通常可以使用递归和迭代的方式进行查询,逐级向上,具体如下图:
    Pasted image 20240319153352.png
    • 递归查询:本地域名服务器查询根域名服务器,随后根域名服务器再去依次查询顶级域名服务器和授权域名服务器。
    • 迭代查询:本地域名服务器查询根域名服务器,随后根域名服务器告诉本地域名服务器下一步应该查询哪个服务器,并依次迭代到最终的授权域名服务器
      本地域名服务器的引入可以大大地降低上级域名服务器的负荷、减少一个网络内主机查询域名所消耗的时间。

6.5 万维网(WWW)

6.5.1 WWW的概念与组成结构

万维网(WWW,World Wide Web)通常使用HTTP传输资源数据,通常用URL来定位资源(包括文字、视频、音频等),用HTML来实现浏览器界面。

其关键概念有:

  • HTTP超文本传输协议
  • URL统一资源定位符(Uniform Resource Locator),其一般格式为:
    Pasted image 20240509162240.png
  • HTML超文本标记语言

msedge_JrUBCk3hod.png

6.5.2 超文本传输协议(HTTP)

HTTP协议(HyperText Transfer Protocol)定义了万维网客户进程和服务进程之间的传输方式。其最初是为万维网为了提供传输HTML页面的方法。

HTTP协议的特点:

  • HTTP使用TCP作为传输层协议,但是是无连接的HTTP在TCP三次握手的第三次握手时就可以传输请求报文(可以参考下图)。
  • HTTP协议是无连接的双方在交换HTTP报文之前不需要建立HTTP连接。其主要有两种连接方式,分别为 Keep-aliveClose
    • Close :非持久连接,完成一次请求(Request)和回应(Responce)就会断开TCP连接。
    • Keep-alive :持久连接,可以分为流水线持久连接和非流水线持久连接。可以进行多次请求和回应而不断开TCP连接
      - 流水线持久连接,下一个请求可以在上一个回应传输完毕之前发送
      - 非流水线持久连接,上一个请求的回应必须接收完毕后才能发送下一个请求(如下图所示)。
      msedge_LMdZiXHSmh.png
  • HTTP协议是无状态的HTTP不会记忆与客户端之间的任何状态,减轻了服务器负担。而HTTP也提供了保存连接状态的技术,分别是 CookieSession
    • Cookie 是存储在客户端的文本文件,在HTTP报文中存于首部行中。

HTTP报文结构
vlc_mCCJQOIQHw.png

  • HTTP报文是面向文本的每一个字段都是ASCII码串
  • 请求报文的请求行和响应报文的状态行可以被统称为开始行
  • 请求报文的例子:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0...
Accept: text/html,application/xhtml+xml...
Accept-Encoding: gzip, deflate
Connection: keep-alive
  • 响应报文的例子:
HTTP/1.1 200 OK
Date: Wed, 18 Apr 2024 12:00:00 GMT
Server: Apache/2.4.1 (Unix)
Last-Modified: Wed, 18 Apr 2024 11:00:00 GMT
Content-Length: 12345
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <!-- The rest of the HTML content -->
</body>
</html>