每个应用层协议用来解决一个问题
应用层的许多协议都是基于客户服务器方式 客户是请求方,服务器是服务提供方
最重要内容
1 域名系统DNS——从域名解析出IP地址
2 万维网和HTTP协议,以及万维网的两种不同的信息搜索引擎
3 电子邮件的传输过程,SMTP协议和POP3协议,IMAP协议使用的场合
4 动态主机配置协议DHCP的特点
5 网络管理的三个组成部分
6 系统调用和应用编程接口的基本概念
7 P2P文件系统
为什么给人们用域名?方便记忆,如baidu.com就比一串的IP好记
为什么给机器用IP?IP长度固定,方便机器处理
初期的时候,由于主机个数比较少,所以一台机器的hosts文件列出所有的域名和IP的对应关系,需要转换时查表即可。
目前计算机网络理论上也可以把所有的域名和IP的对应关系放到一个服务器中,但是问题是
1 地球上计算机过多,该服务器负荷太大
2 如果这台服务器出现问题,会导致整体的网络的瘫痪
所以提出树状结构的命名方法,并采用分布式的域名系统DNS(分布式就是分散的意思)这样即便某一台计算机出了问题,也不会导致整体出现问题
域名一般由标号组成,标号间通过.分割
顶级域名,二级域名,三级域名……
顶级域名一般有
更高级的域名负责管理下属的域名
比如我国中国cn顶级域名下划分了41个二级域名(分为类别域名7个和行政区域名34个)
先来了解域名服务器,即存放域名和IP对应的服务器
域名服务器
一个服务器所负责管辖的范围叫做区
各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是联通的,每一个区设置相应的权限域名服务器用来保存该区中所有的主机的域名到IP地址的映射
根域名服务器
? 最重要的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址,不管是哪一个本地域名服务器,在无法解析的时候,就首先求助于根域名服务器
在因特网上有13个不同IP地址的根域名服务器,从a到m
顶级域名服务器(TLD服务器)
? 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答
权限域名服务器
? 负责一个区的域名服务器,当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器
本地域名服务器
? 每一个因特网服务器提供者ISP,或一个大学,都可以拥有一个本地域名服务器
为了提高域名服务器的可靠性,一般把数据复制到几个域名服务器来保存
域名解析这个过程是在多个域名服务器上的多个域名服务程序共同完成的
大概过程如下
某一个应用程序请求某域名的IP --》 生成DNS请求报文,发送给本地的域名服务器 --》如果本地可以查到的话,则返回回答报文,查不到的话就向其他域名服务器请求直到找到为止
解析过程
主机向本地域名服务器查询采用递归查询
本地服务器向根域名服务器查询采用迭代查询
名字的高速缓存,存放最近用到的
记录集合
mx记录
ns记录
ptr记录
FTP是使用最广的文件传输协议
FTP提供交互式的访问,允许客户指明文件的类型和格式,并允许文件具有存取权限
匿名访问通过anonymous实现
文件的传送并非很简单,原因是不同计算机厂商研制出的文件系统多达数百种,差别很大。主要体现在
1 计算机存储数据的格式不同
2 文件目录结构和文件命名规定不同
3 存取功能的命令不同
4 访问控制方法不同
所以我们的FTP核心就是要减少或消除在不同操作系统下处理文件的不兼容性
FTP使用客户服务器方式
FTP使用两个TCP连接,一个用于控制(21端口),一个用于数据传送(20端口),因而需要两个端口号,所以数据连接和控制连接不会乱
使用两个端口的另外好处是
1 使协议更加简单和实现
2 在传输文件时还可以利用控制连接
NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定位置开始读写数据
NFS可以使用户只复制一个大文件中的很小的片段
端口2049
特点
1 很小易于实现
2 由于很小所以TFTP只支持文件传输而不支持交互, TFTP没有一个庞大的命令集合
3 每次传输的数据有512字节,组成一个文件块,对块进行编号,从1开始,支持ASCLL码或二进制传送,可对文件进行读或写,使用很简单的首部
工作
1 很像停止等待协议,每发送完一个文件块就等待对方确认,收不到确认就重复发送PDU
2 TFTP端口号是69
三种协议比较
协议 | 特点 |
---|---|
FTP | 交互式,存取权限,建立副本 |
NFS | 交互式,存取权限,无副本 |
FTFP | 没有交互式,不进行身份验证 |
远程终端协议TRLNET
万维网是一个分布式的超媒体系统,它是超文本系统的扩充
万维网将大量的信息分布在整个互联网
要核心解决几个问题
1 怎样标志分别分布在整个互联网的万维网文档——用URL
2 用什么样的协议实现万维网上的各种连接——用HTTP
3 怎样使得不同作者创作不同风格的万维网文档,都能在互联网上各种主机显示 使用HTML
4 怎么样使得用户能够方便找到需要的资源——用搜索工具
接下来分别探讨下面的问题
统一资源定位符是用来表示互联网资源的位置和获得的方法
一般组成如下
协议:// 主机名:端口/路径
协议就是通过何种方式获得该万维网文档
主机名就是存放文档主机的域名
其中端口往往被省略,因为对于特定协议,有些端口都是默认的,比如HTTP协议默认端口号为80
所以往往是如下的形式
协议://主机名/路径
很多时候都把前面的协议省去了,只保留了主机名
比如 baidu.com
完整应该是 http://baidu.com
定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传输给浏览器
HTTP协议是无连接,无记忆状态的协议
无连接即不会提前建立连接
无状态协议,这意味着每个HTTP请求都是独立的,服务器不会在多次请求之间保留任何关于客户端的状态信息。每个HTTP请求都被视为一个独立的交互,服务器不会记住之前的请求或会话信息。
如下
1 每个万维网网点都有一个服务器进程,它不断监听TCP端口80,以便发现是否有浏览器向它发送链接建立请求
2 监听到后,建立连接,浏览器向万维网服务器发出请求,服务器返回请求页面做相应。完成任务后,TCP就被释放了
对于早期的HTTP协议 HTTP/1.0,请求一个万维网文档耗费时间是文档传输时间加上两倍往返时间RTT(一个RTT用于建立TCP连接,另一个RTT用于请求和接收万维网文档)
这是它的一个缺点
因而HTTP/1.1 很好解决了这个问题,它使用了持续连接的方法,就是说万维网服务器在相应之后的一段时间依然保持这个连接
后来又提出升级版本 HTTP/2,将服务器的相应也变成了并行的,同时可以复用TCP连接的请求,
为了加快请求相应速度,往往会用到代理服务器,即将最近的一些请求和相应放到本地磁盘中
HTTP两类报文
1 请求报文——从客户到服务器发送请求报文
2 相应报文——从服务器到客户的回答
HTTP请求报文由客户端发送给服务器,用于请求特定资源或执行特定操作。它通常包括以下部分:
请求行(Request Line): 包含了HTTP方法、请求的URI和HTTP协议版本。例如:
GET /index.html HTTP/1.1
以下是一些常见的HTTP请求方法:
请求头部(Request Headers): 包含了一系列的键值对,用于传递关于请求的信息,如User-Agent、Host、Accept等。例如:
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
空行(Blank Line): 请求行和请求头之间有一个空行,用于分隔请求头部和请求体。
请求体(Request Body): 可选的部分,通常用于POST请求等情况,包含了要发送给服务器的数据。
HTTP响应报文由服务器发送给客户端,用于回复客户端的请求。它通常包括以下部分:
状态行(Status Line): 包含了HTTP协议版本、状态码和状态描述。例如:
HTTP/1.1 200 OK
响应头部(Response Headers): 类似于请求头部,包含了一系列的键值对,用于传递关于响应的信息,如Server、Content-Type、Content-Length等。例如:
Server: Apache
Content-Type: text/html
Content-Length: 1234
空行(Blank Line): 状态行和响应头之间有一个空行,用于分隔响应头部和响应体。
响应体(Response Body): 包含了服务器返回的实际数据,例如HTML页面、JSON数据等。
之前讲到HTTP是无状态的,即不会保留客户端信息,但有些时候,服务器需要记住用户的信息,比如一个顾客要购买多件物品放入购物车,以便集中结账
这时候需要用到Cookie
工作流程如下:
创建Cookie: 服务器在HTTP响应中通过Set-Cookie
头部字段创建Cookie,并将其发送到客户端浏览器。Cookie包含一个键值对,通常是一个名称和一个值,以及一些其他属性,如过期时间、域名、路径等。
Set-Cookie: username=johndoe; expires=Sat, 31 Dec 2023 23:59:59 GMT; path=/; domain=example.com; secure; HttpOnly
在上面的示例中,服务器创建了一个名为username
的Cookie,它的值是johndoe
,并设置了过期时间、路径、域名等属性。
存储Cookie: 一旦浏览器接收到Cookie,它会将Cookie存储在本地的Cookie存储中。这个存储通常是浏览器的内存或磁盘中的一个文件。
发送Cookie: 当浏览器向同一服务器发出后续HTTP请求时,它会将与该服务器相关的Cookie附加到请求的Cookie
头部字段中。这使得服务器能够识别用户并访问之前存储的信息。
服务器读取Cookie: 服务器在收到HTTP请求时,会检查请求的Cookie
头部字段以获取相关的Cookie信息。这允许服务器识别用户,并根据需要执行特定的操作,如验证用户身份、提供个性化内容等。
更新Cookie: 服务器可以在HTTP响应中更新或修改Cookie的内容,以便在客户端的下一次请求中反映这些更改。例如,服务器可以更新Cookie的过期时间或值。
他不是协议,只是一种语言
HTML的基本概述:
< >
包围,如<html>
、<head>
、<body>
等。<!DOCTYPE>
声明、<html>
元素、<head>
元素(包含文档的元数据信息)、<title>
元素(指定页面标题)、<body>
元素(包含页面的主要内容)等。<a>
元素用于创建超链接,它可以包含href
属性,指定链接的目标URL。搜索引擎是一种用于查找和检索互联网上的信息的计算机程序或工具。它们允许用户输入关键词或查询,并返回与这些关键词相关的网页、文档、图片、视频和其他多媒体内容的搜索结果列表。搜索引擎在互联网上广泛使用,是人们获取信息、解决问题和进行研究的重要工具。