应用层
网络结构分为P2P(Peer-to-Peer,点对点)网络和客户-服务器(Client-Server)
P2P网络:
-
去中心化: P2P网络没有中心化的服务器架构。每个节点(或对等体)都可以作为服务提供者和服务请求者,它们之间的通信是对等的,没有单一的控制点。这种去中心化的特点使得P2P网络在故障恢复和动态节点加入方面具有较好的弹性。
-
资源共享: P2P网络的核心理念之一是资源共享。这些资源可以是文件、带宽、计算能力等。因为每个节点都可以充当资源提供者和请求者,所以P2P网络可以高效地利用网络中的资源。
-
自组织性: P2P网络是自组织的,新节点可以动态地加入网络,而无需中央授权或管理。这种自组织性使得P2P网络在规模扩展和鲁棒性方面表现良好。
-
隐私性: 由于数据分散存储在多个节点上,并且节点之间通信是点对点的,P2P网络通常具有较高的隐私性。相比之下,数据存储在集中化的服务器上的网络可能更容易受到监控和攻击。
客户-服务器网络:
-
集中化: 在客户-服务器网络中,服务器节点扮演着中心化的角色,它们提供服务和资源给客户端。客户端向服务器发送请求,服务器响应这些请求并提供所需的服务或资源。这种集中化的架构使得网络具有明确的服务提供者和服务请求者。
-
专业化: 服务器节点通常配置有专门的硬件和软件,用于提供特定类型的服务。例如,Web服务器用于托管网站内容,数据库服务器用于存储和管理数据等。这种专业化使得服务器可以根据需求进行优化和定制。
-
可控性: 由于服务器节点集中承担了大部分服务提供的责任,网络管理员或提供商可以更好地管理和监控网络的运行情况。这种集中化的管理结构使得网络的维护更加可控。
-
稳定性: 由于服务器节点通常由专业团队管理,客户-服务器网络通常具有较高的稳定性和可靠性。服务器节点的备份和故障恢复机制通常也会被更好地实施,以确保网络的稳定运行。
主要关注的是不同端(可能也是不同操作系统)之间的通信,跨越计算机网络交换的是报文。
一般来说,对于发起通信的成为客户,等待联系的进程称为服务器
进程是通过套接字向网络发送报文和接受报文
套接字也是应用层和传输层之间的接口,也是应用程序和计算机网络之间的接口
进程的唯一标识符:ip+端口号
HTTP
一种加强版的TCP:SSL (其安全性更高)
HTTP协议使用TCP支持
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于在客户端和服务器之间传输超文本数据的应用层协议。在HTTP中,存在两种主要的连接方式:非持续连接和持续连接。
非持续连接的HTTP:
-
连接方式: 在非持续连接中,每个HTTP请求/响应周期都需要建立新的TCP连接。这意味着每个请求都需要一个新的连接,服务器在发送完响应后关闭连接。因此,每次请求都需要建立新的TCP连接、完成请求-响应周期后关闭连接。
-
特点:
- 每个请求/响应周期都需要进行连接建立和断开,这会增加一定的开销,尤其是在网络延迟较高的情况下。
- 对于每个HTTP请求,服务器都需要进行握手、建立连接、发送响应并关闭连接,因此效率较低。
- 在高负载的网络环境中,频繁的连接建立和断开可能会导致服务器资源的浪费。
持续连接的HTTP:
-
连接方式: 在持续连接中,客户端和服务器在一次TCP连接上可以发送和接收多个HTTP请求和响应。在一次连接中,多个请求-响应周期可以顺序发送,而不需要每次请求都重新建立连接。
-
特点:
- 通过保持TCP连接的开启状态,可以减少建立和断开连接的开销,提高了传输效率。
- 在一次连接中,多个请求和响应可以顺序发送,从而降低了网络延迟,提升了性能。
- 持续连接对于支持多个资源的网页加载速度有着显著的提升效果,因为可以在同一连接上传输所有资源。
总结:
- 非持续连接的HTTP需要在每次请求/响应周期中建立和断开连接,效率较低。
- 持续连接的HTTP可以在一次连接中发送多个请求和接收多个响应,提高了传输效率和性能。
请求报文
以下是一个简单的HTTP请求报文的示例:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
这个HTTP请求报文可以分为两个部分:请求行和请求头。
-
请求行:
GET /index.html HTTP/1.1
GET
:表示请求的方法,这里是一个获取资源的请求。/index.html
:表示请求的资源路径,即要获取的网页文件的路径。HTTP/1.1
:表示使用的HTTP协议版本。
-
请求头:
Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Language: en-US,en;q=0.9
Host: www.example.com
:指定了请求的目标主机名。User-Agent
:发送请求的用户代理(浏览器、爬虫等)的信息。Accept
:指定客户端能够接收的资源类型及优先级。Accept-Language
:指定客户端能够接收的语言类型及优先级。
意思解释:
这个HTTP请求报文的意思是,客户端向服务器发送一个GET请求,请求获取位于服务器上的 /index.html
文件。请求头部包含了一些附加信息,比如请求的目标主机名、客户端浏览器的信息、客户端可以接受的资源类型和语言类型等。
相应报文
HTTP/1.1 200 OK
Date: Mon, 11 Apr 2024 12:00:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Length: 1234
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>This is an example page.</p>
</body>
</html>
-
状态行:
Copy code
HTTP/1.1 200 OK
HTTP/1.1
:表示使用的HTTP协议版本。200 OK
:表示服务器成功处理了客户端的请求,并返回了请求的资源。
-
响应头:
Date: Mon, 11 Apr 2024 12:00:00 GMT Server: Apache/2.4.41 (Unix) Content-Length: 1234 Content-Type: text/html; charset=utf-8
Date
:指定响应生成的日期和时间。Server
:指定服务器软件的名称和版本。Content-Length
:指定响应体的长度(字节数)。Content-Type
:指定响应体的类型和字符集。
-
响应体:
<!DOCTYPE html> <html> <head> <title>Example Page</title> </head> <body> <h1>Hello, World!</h1> <p>This is an example page.</p> </body> </html>
响应体包含了服务器返回的实际内容,这里是一个简单的HTML页面,显示了一个标题和一个段落。
意思解释:
这个HTTP响应报文的意思是,服务器成功处理了客户端的请求,并返回了一个HTTP状态码为200的响应。响应头部包含了一些附加信息,比如响应生成的时间、服务器软件的信息、响应体的长度和类型等。响应体中包含了服务器返回的实际内容,这里是一个简单的HTML页面。
SMTP和POP3
POP3(Post Office Protocol version 3)和SMTP(Simple Mail Transfer Protocol)都是用于电子邮件传输的标准协议,但是它们分别负责不同的功能。
POP3(Post Office Protocol version 3):
-
功能: POP3是一种用于接收电子邮件的协议。它允许用户从邮件服务器上下载自己的电子邮件到本地计算机上的邮件客户端(如Outlook、Thunderbird等)。
-
工作原理: 当用户的邮件客户端通过POP3协议连接到邮件服务器时,它首先验证用户的身份(用户名和密码),然后从收件箱中下载用户的新邮件。通常,下载后的邮件会从服务器上删除,但也可以选择保留一份副本。
-
端口: 默认情况下,POP3使用TCP端口110。
-
安全性: 原始的POP3协议在传输过程中不加密,因此可能存在安全风险。但是,可以使用POP3 over SSL/TLS(POP3S)来加密连接。
SMTP(Simple Mail Transfer Protocol):
-
功能: SMTP是一种用于发送电子邮件的协议。它负责将电子邮件从发送方的邮件客户端(如Outlook、Gmail等)传输到接收方的邮件服务器。
-
工作原理: 当用户发送一封电子邮件时,它会通过SMTP协议将邮件传输到发送方的邮件服务器。发送方的邮件服务器使用SMTP将邮件传输到接收方的邮件服务器,接收方的邮件服务器然后将邮件存储在接收方的收件箱中。
-
端口: 默认情况下,SMTP使用TCP端口25。
-
安全性: 与POP3类似,原始的SMTP协议也不加密传输邮件内容。但是可以使用SMTP over SSL/TLS(SMTPS)或STARTTLS来加密SMTP连接,以提高安全性。
总的来说,POP3和SMTP是电子邮件系统中两个不可或缺的组成部分,它们分别负责接收和发送电子邮件。通过POP3,用户可以从邮件服务器下载自己的邮件到本地计算机,而通过SMTP,用户可以将邮件从本地计算机发送到邮件服务器,进而进行投递给接收方。
DNS(域名服务器)
DNS(Domain Name System,域名系统)是互联网中用于将域名转换为与之对应的IP地址的分布式数据库系统。它是互联网的基础设施之一,提供了域名与IP地址之间的映射服务,使得用户可以通过易记的域名访问互联网上的资源,而无需记忆复杂的IP地址。
以下是DNS的一些关键特点和工作原理:
-
域名解析: DNS主要用于域名解析,即将用户输入的域名(如www.example.com)转换为对应的IP地址(如192.0.2.1)。
-
分布式数据库: DNS采用分布式的数据库系统,将域名和IP地址的映射信息存储在多个DNS服务器上,以提高可靠性和性能。
-
层级结构: DNS采用层级的域名结构(如顶级域、二级域等),将全球的域名划分为若干个层次,使得域名解析可以高效地进行递归查询。
-
DNS服务器类型: DNS服务器分为多种类型,包括根域名服务器、顶级域名服务器、权威域名服务器和递归域名服务器等,它们各自负责不同层次的域名解析。
-
DNS查询过程: 当用户输入一个域名时,DNS客户端(通常是操作系统或浏览器)会向本地DNS服务器发起查询请求。本地DNS服务器可能会先在本地缓存中查找域名解析结果,如果没有命中缓存,则递归地向根域名服务器、顶级域名服务器和权威域名服务器发起查询,直到找到域名对应的IP地址并返回给客户端。
-
DNS记录类型: DNS中包含多种记录类型,用于存储不同类型的信息,如A记录用于将域名解析为IPv4地址,AAAA记录用于将域名解析为IPv6地址,MX记录用于指定邮件服务器等。
总的来说,DNS是互联网中实现域名解析的关键系统,它使得用户可以通过便于记忆的域名访问互联网上的资源,同时也是互联网基础设施中的重要组成部分之一。
传输层
网络层提供主机之间的逻辑通信,传输层提供了主机上的进程之间的通信。
在传输层上,多路复用(Multiplexing)和多路分解(Demultiplexing)是指在单个传输层连接上同时处理多个应用程序或通信流的过程。
多路复用与多路分解
多路复用(Multiplexing):
在传输层上,多路复用是指将来自多个应用程序的数据流合并成一个单一的数据流,以便在网络上传输。多路复用允许多个应用程序共享同一个传输层连接(如TCP连接或UDP端口),从而提高了网络资源的利用率。在发送端,多路复用将来自多个应用程序的数据流进行打包,使用传输层协议的头部信息来区分不同的数据流,并将这些数据流合并成一个单一的数据流进行传输。
多路分解(Demultiplexing):
在传输层上,多路分解是指将单一的传输层连接上接收到的数据流拆分成多个独立的数据流,并将这些数据流交付给相应的接收端应用程序。在接收端,根据传输层协议的头部信息(如TCP或UDP头部)以及目标端口号等信息,进行多路分解,将单一的数据流拆分成多个独立的数据流,以便交付给相应的接收端应用程序或进程。这样,每个接收端应用程序都可以独立地处理其特定的数据流。
总结:
在传输层上,多路复用和多路分解是用于处理多个应用程序或通信流的技术。多路复用将来自多个应用程序的数据流合并成一个单一的数据流传输,而多路分解则将单一的数据流拆分成多个独立的数据流交付给相应的接收方应用程序。这两种技术可以实现多个应用程序共享同一个传输层连接的目的,从而提高了网络资源的利用率。