计算机网络-笔记-第六章-应用层

目录

六、第六章------应用层

1、应用层概述

[2、(C/S)客户-服务器方式 & (P2P)对等方式](#2、(C/S)客户-服务器方式 & (P2P)对等方式)

(1)客户-服务器方式【C/S】

(2)对等方式【P2P】

3、DHCP------动态主机配置协议

(1)诞生原因

(2)工作原理

(3)DHCP中继代理

4、DNS------域名系统

(1)域名分类

(2)域名解析

[(3)本地的hosts文件 & 加速器原理](#(3)本地的hosts文件 & 加速器原理)

(4)DNS修改

[(6)总结 & 习题](#(6)总结 & 习题)

5、文件传输协议FTP

(1)FTP服务器

(2)FTP服务器------访问方式

(3)FTP服务器------工作原理

(4)习题

6、电子邮件

[(1)读取邮件 & 发送邮件 (大致过程)](#(1)读取邮件 & 发送邮件 (大致过程))

[(2)邮件 & 文本数据](#(2)邮件 & 文本数据)

[(3) 邮件协议(SMTP发送、POP3读取)](#(3) 邮件协议(SMTP发送、POP3读取))

(4)基于万维网的电子邮件

(5)习题

7、万维网

(1)浏览器(软件)

(2)万维网的工作方式

(3)统一资源定位符URL

(4)HTTP------超文本传输协议

(4)HTTP------报文格式

(4)HTTP------响应状态码

(5)cookie

[(6)万维网缓存 & 代理服务器](#(6)万维网缓存 & 代理服务器)

(7)B/S应用程序结构

[(8)总结 & 习题](#(8)总结 & 习题)


六、第六章------应用层

1、应用层概述

终于学到最顶层了,啊哈哈,这是最轻松,最愉悦的了!
因为我们无时无刻都在接触这些应用,感受他们带给我们生活的便利!

2、(C/S)客户-服务器方式 & (P2P)对等方式

(1)客户-服务器方式【C/S】

1 、这里是:客户端/服务器(C/S)方式 (他包含了(C/S) & (B/S)架构)

C/S 架构和 B/S 架构 都是客户端****/ 服务器模型 的不同实现方式,适用于不同的应用场景和需求。


万维网以C/S方式,即客户/服务器的方式工作 。其中,浏览器就是在用户主机上的万维网客户程序。万维网文档(web文档)所驻留的主机则运行服务器程序,如IIS 、Apache、Nginx等。所以这个主机也叫作万维网服务器或者Web服务器。
注意:电子邮件(SMTP)、FTP、HTTP等,都是C/S方式

(2)对等方式【P2P】

注意:

这里和数据链路层中的------点对点协议PPP(point to point protocol)不是同一个东西
迅雷下载是使用P2P下载协议的 ,P2P加速利用P2P技术进行用户之间的加速,该通道产生的上传流量会提升通道的健康度,从而提升通道加速效果。
原理:若其他迅雷用户下载过本文件,则下载时可以由其他用户上传给自己。
这里:用户既可以是服务的请求者,也可以是服务的提供者!

3、DHCP------动态主机配置协议

动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是 RFC 1541(已被 RFC 2131 取代)定义的标准协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。
DHCP 的主要目的是简化网络管理,使网络中的设备能够自动获取所需的网络配置信息,包括IP地址、子网掩码、默认网关、DNS服务器等。
使用DHCP,管理员可以集中管理IP地址资源,并确保网络上的设备都能够获得有效的网络配置,无需手动配置每个设备的网络参数。

(1)诞生原因

手动配置太麻烦!!!(容易出错,效率低)


1 、给网络中,添加一个DHCP服务器

2 、管理员只需要设置好【网络中其他各主机配置的网络配置信息】

3 、网络中的主机,自动获取【配置信息】

(2)工作原理

1 、主机没有(上网的相关配置信息),就开始发送广播(请求DHCP服务器给他分配一个)

2 、DHCP服务器就根据【客户】的请求,给他分配一个,并把相关的配置信息发给他

3 、【客户】表明,使用这个IP,发出请求

4 、【DHCP服务器】收到请求后,发出确认请求(让主机放心使用)
注意:【IP是有租期的哟!会过期,主机得不断申请】当然,【管理员】也可以配置为不过期!


完整版!!!(细节很多!) 蛋老师之前也讲过DHCP,不过没有这个完整!

(3)DHCP中继代理

为了防止DHCP数量太多(太多了,不就于我们的目的,背道而驰了么?)

我们就是为了管理中心化,所以专门搞了一个DHCP服务器!
所以:给路由器配置好DHCP服务器的IP地址,让其变成DHCP的中继代理

当一个客户端发送DHCP请求时,如果它所处的子网没有DHCP服务器,或者DHCP服务器不在同一个子网上,这时就需要使用DHCP中继代理。
实现过程:

  1. 客户端发送 DHCP 请求广播消息,该消息带有特殊的 DHCP 中继标记字段。
  2. 当路由器接收到该 DHCP 请求广播消息时,会检查其中的 DHCP 中继标记字段,并判断是否需要进行中继操作。
  3. 如果路由器确定需要进行中继,它会将 DHCP 请求消息封装在一个新的 DHCP 请求消息中,并将新消息的目标地址设置为预先配置的 DHCP 服务器的 IP 地址。
  4. 路由器通过本地网络将新的 DHCP 请求消息转发给预先配置的 DHCP 服务器。
  5. DHCP 服务器接收到经过中继的 DHCP 请求消息后,解析其中的内容,并生成相应的 DHCP 响应消息。
  6. DHCP 服务器将 DHCP 响应消息发送给路由器。
  7. 路由器再次将 DHCP 响应消息进行封装,并使用广播方式发送给客户端。
  8. 客户端接收到经过中继的 DHCP 响应消息后,获取到分配的 IP 地址和其他配置参数,并进行网络配置。

4、DNS------域名系统

DNS 是什么?

DNS 可理解为:专门记录手机电话的通讯录(在这里就是记录了IP和域名的映射关系)

(1)域名分类

(2)域名解析

1 、查询本地域名(递归查询)【负担大!!!】

2 、其他查询(迭代查询)


高速缓存(本地域名服务器一般有缓存!!!有时间限制!TTL)

(3)本地的hosts文件 & 加速器原理

DNS解析默认都是运营商的;

我们本地也会记录映射哟!hosts文件!

所在路径:C:\Windows\System32\drivers\etc

这里的steam++ ,本质上就是修改了我的hosts文件,让我们的电脑知道了这些域名的存在,当我们访问【运营商的DNS服务器】时,他们不会告诉我们那个IP,就会导致我们访问失败,但是当我们自己的主机就知道了映射关系,就不会再去问【DNS服务器】了!
注意:

Hosts 文件有大小限制 ,你不可能存放全世界所有公网 ip ,去访问他们!(就好像你不可能在手机中存储全世界中所有人的电话号码!)
修改 hosts 文件只是在本地生效,只有当前计算机能够使用这个映射关系,其他设备或计算机并不受影响。
修改 hosts 文件可能存在安全风险,因为它可以被恶意软件或攻击者滥用,导致用户被重定向到恶意网站或遭受其他攻击。
因此,在修改 hosts 文件之前,务必确保你信任所添加的映射关系,并且要小心维护该文件的安全性。

(4)DNS修改

为什么要修改DNS呢?

1 、提高访问速度:某些公共DNS服务器可能无法提供快速和稳定的解析服务。

2 、绕过网络封锁:在某些地区或网络环境中,特定的网站或服务可能被屏蔽或封锁。

3 、过滤广告或恶意网站:一些DNS服务器提供了广告拦截或恶意网站过滤功能。

4 、配置专用网络服务:在局域网或企业网络中,可能需要配置专用的内部DNS服务器,以提供特定的网络服务和解析内部域名。
一般我们都是用默认的,就是我们使用网络的供应商提供的DNS

但是,他们并不是把所有ip(全球的电话号码)都收录在里面了的
肯定是有疏漏的!!!
所以...我们可以自行配置DNS,让主机自己去网络上找理想的DNS服务器(手机号码收录比较全的通讯录~),而不是默认用网络供应商的!(下图,是互联网大厂的DNS【他们的通讯录】)
并且DNS服务器离我们的路径距离,也会影响我们的上网体验,毕竟我们访问IP,都要去问一遍DNS!
如何修改?


DNS 劫持 是指黑客通过恶意手段攻击DNS服务器或用户计算机,篡改DNS解析结果,让用户访问的网站指向错误的IP地址,从而实现攻击目的。常见的DNS劫持方式包括:本地Hosts文件修改、路由器被劫持、DNS服务器被劫持等。
DNS 污染( 也称为DNS缓存投毒)是指攻击者在DNS系统中注入虚假信息,使得DNS服务器会缓存错误的DNS响应结果,导致所有用户的访问都受到影响。攻击者可以伪造一个DNS响应,将正确网站的域名映射到错误的IP地址,使得用户在浏览器或应用程序中输入正确的网址时,被重定向到错误的网站上。
虽然DNS劫持和DNS污染之间有些不同,但它们都会导致用户访问受阻、信息泄露、网络安全受损等风险,因此用户需要采取必要的防范措施,如使用安全和可信赖的DNS服务器,避免使用不明来源的网络服务和软件,定期检查和更新网络设备和安全软件等。
比如:

访问A网站的地址,打开的却是B网站的页面,跳出恶意广告。

如果黑客利用DNS劫持,让你进入假冒的钓鱼网站,可能造成自己的重要信息泄露。
注意:DNS劫持与HTTP劫持的不同
DNS 劫持:在DNS服务器中,将某个域名对应的IP地址进行了篡改,你解析出来的域名对应的IP,在劫持前后不一样,访问的是另外一个网站。
HTTP 劫持:你DNS解析的域名的IP地址不变,在和网站交互过程中的劫持了你的请求。
比如当你正常访问一个无广告的页面时,页面上出现广告弹窗,那么可能是运营商劫持了HTTP。

(6)总结 & 习题

注意!!!这里的本地域名服务器有缓存!!!(并且采用的是迭代查询)

  1. 当用户在浏览器中输入一个域名时,操作系统会向所配置的 DNS 解析器发送一个 DNS 查询请求。
  2. DNS 解析器接收到请求后,首先检查自己的缓存,如果命中缓存,则直接返回对应的 IP 地址。
  3. 如果缓存中没有找到对应的 IP 地址, DNS 解析器会向根域名服务器发送请求,询问顶级域名( 如.com .org )的权威域名服务器的地址。
  4. 根域名服务器返回顶级域名服务器的地址。
  5. DNS 解析器接着向顶级域名服务器发送请求,询问该域名的权威域名服务器的地址。
  6. 顶级域名服务器返回权威域名服务器的地址。
  7. DNS 解析器最后向权威域名服务器发送请求,获取要查询的域名对应的 IP 地址。
  8. 权威域名服务器返回 IP 地址给 DNS 解析器。
  9. DNS 解析器将获取到的 IP 地址返回给操作系统和应用程序。
  10. 操作系统和应用程序使用获取到的 IP 地址进行网络通信。

5、文件传输协议FTP

FTP (File Transfer Protocol)是一种用于文件传输的标准协议。FTP协议规定了客户端和服务器之间交互的方式,使得用户可以通过网络上传、下载和管理文件。
FTP 协议采用客户端-服务器(Client-Server)结构来进行文件传输。
用户在客户端上使用FTP客户端应用程序连接到FTP服务器,并进行文件上传和下载操作。
FTP 客户端应用程序通常包含一个图形用户界面(GUI)和文件管理功能,使得用户可以方便地浏览和管理文件。

(1)FTP服务器

如何在电脑上,搭建FTP服务器?
Windows可以选择合适的FTP服务器软件。有很多不同的FTP服务器软件可供选择,例如FileZilla Server、ProFTPD、VSFTPD等。根据你的需求和操作系统选择最适合你的FTP服务器软件。
详情搭建链接: 如何在个人电脑上快速搭建FTP服务器? - 知乎

注意:

FTP 协议在传输过程中使用明文传输,包括命令和数据内容,因此存在安全风险。

为了增加安全性,可以使用安全的FTP协议(FTPS)或使用虚拟专用网络(VPN)来加密FTP传输过程。

(2)FTP服务器------访问方式

(3)FTP服务器------工作原理

21端口用于连接,20端口用于传输数据。

21 端口------连接通道(控制连接)

20 端口------数据通道(传输完文件,就关闭!避免性能浪费)

(4)习题

6、电子邮件

(1)读取邮件 & 发送邮件 (大致过程)

读取邮件和发送邮件的过程涉及两个常用的协议:

SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)。
发送邮件的过程(使用 SMTP 协议)如下:

  1. 连接到SMTP服务器:邮件客户端通过TCP连接到SMTP服务器,默认端口为25。
  2. 身份验证(可选):如果需要身份验证,客户端发送用户名和密码给SMTP服务器进行身份验证。
  3. 发送邮件信息:客户端向SMTP服务器发送包含邮件内容的命令,包括发件人、收件人、主题和正文等。
  4. SMTP服务器处理:SMTP服务器接收到客户端发送的邮件信息后,会根据地址解析和路由规则,将邮件传递给负责接收邮件的服务器。
  5. 接收服务器处理:接收服务器根据收件人的地址接收邮件,并存储在相应的邮箱中。
    读取邮件的过程(使用 POP3 协议)如下:
  6. 连接到POP3服务器:邮件客户端通过TCP连接到POP3服务器,默认端口为110。
  7. 身份验证:客户端发送用户名和密码给POP3服务器进行身份验证。
  8. 检查邮件列表:客户端发送命令给POP3服务器,请求检查邮件列表。
  9. 下载邮件:客户端发送命令给POP3服务器,请求下载特定的邮件。服务器将邮件通过数据连接发送给客户端。
  10. 标记已读/删除邮件:客户端发送命令给POP3服务器,标记已读或删除特定的邮件。在标记删除后,邮件仍然存在于服务器上,只是处于被标记为删除的状态。
    注意:
    SMTP 和POP3协议是明文传输的,因此在传输过程中可能存在安全风险。
    为了增加安全性,可以使用加密的SMTP(SMTPS)和POP3(POP3S)协议,或者使用更安全的协议如IMAP(Internet Message Access Protocol)来进行邮件的发送和接收。

(2)邮件 & 文本数据

(3) 邮件协议(SMTP发送、POP3读取)

SMTP 是一种用于发送电子邮件的协议。它定义了电子邮件客户端如何将邮件发送到邮件服务器,并通过互联网将邮件传递给收件人的邮件服务器。SMTP负责将电子邮件从发送方传输到接收方的服务器。(25端口)
注意:SMTP协议------只能传输7比特的ASCII码的内容!!!


在SMTP服务器上启用SMTP认证。常见的备选端口是587和465,它们通常被称为"SMTPS"端口,也可以用于加密的SMTP连接。
POP3是一种用于接收电子邮件的协议。它允许电子邮件客户端从邮件服务器上下载邮件,以便用户可以查看和管理自己的邮件。POP3协议通常与用户的电子邮件软件(如Outlook、Thunderbird等)配合使用,它下载邮件并将其存储在用户的本地设备上。
POP3 (无加密):默认端口为110。当客户端与POP3服务器进行简单的明文通信时,使用该端口。
POP3S (加密的POP3):默认端口为995。当客户端通过SSL或TLS进行安全通信时,使用该端口。
注意:

SMTP 和POP3协议是明文传输的,因此在传输过程中可能存在安全风险。
为了增加安全性,可以使用加密的SMTP(SMTPS)和POP3(POP3S)协议,或者使用更安全的协议如IMAP(Internet Message Access Protocol)来进行邮件的发送和接收。

(4)基于万维网的电子邮件

类似: IMAP (Internet Message Access Protocol)

(5)习题

总结

7、万维网

万维网(World Wide Web)是基于互联网的一种信息服务系统,它由一系列通过超文本链接连接在一起的文档组成。通过使用标准化的协议和语言,如HTTP(Hypertext Transfer Protocol)和HTML(Hypertext Markup Language)。

万维网使用户能够访问和浏览全球范围内的多媒体信息。
万维网 (World Wide Web,WWW)是存储在Internet计算机中、数量巨大的文档的集合。这些文档称为页面,它是一种超文本(Hypertext)信息,可以用于描述超媒体。
文本、图形、视频、音频等多媒体,也称为超媒体。
超媒体与超文本的区别
超文本文档只包含文本的信息,超媒体文档不仅包含文本的信息,还包含其他多媒体对象,如图片、视频、动画、音频等多媒体。
万维网的文件包括:

(1)浏览器(软件)


浏览器内核又可以分成两部分:
渲染引擎 (layout engineer 或者 Rendering Engine) JS 引擎。

它负责取得网页的内容( HTML XML 、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至 显示器或打印机。
浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。

(编程语法相同,效果不同!)

(2)万维网的工作方式

万维网以C/S方式,即客户/服务器的方式工作。 其中,浏览器就是在用户主机上的万维网客户程序。万维网文档(web文档)所驻留的主机则运行服务器程序,如IIS 、Apache、Nginx等。所以这个主机也叫作万维网服务器或者Web服务器。
当浏览器向web服务器发送出对某个Web文档的请求时,Web服务器返回浏览器请求的Web文档,浏览器将该文档在窗口中显示出来。Web文档呈现在浏览器窗口中的就是我们所说的网页和页面。

(3)统一资源定位符URL

统一资源定位系统(uniform resource locator;URL) 是因特网的万维网服务程序上用于指定信息位置的表示方法。只有对资源定位,系统才可以对资源进行各种操作。如存取、更新、替换和查找其属性等。

例如:http://127.0.0.1:8080/index

(4)HTTP------超文本传输协议

HTTP(Hypertext Transfer Protocol)是一种用于在Web浏览器和Web服务器之间进行通信的协议。
它是一种无状态、可靠的协议,用于传输超文本和其他资源。

HTTP协议使用传输层中的TCP协议来传输信息,并且使用了系统端口号80。
万维网上的服务器进程不断地监听TCP的端口80,以便发现是否有浏览器向它发出连接建立请求。一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览器某个页面的请求,服务器接着就返回所请求的页面作为响应。通信结束后释放TCP连接。

(4)HTTP------报文格式


响应报文 & 请求报文

(4)HTTP------响应状态码

HTTP协议定义了一系列的状态码,用于表示服务器对客户端请求的响应状态。每个状态码都有特定的含义,以下是常见的HTTP状态码:
1xx:信息类(Informational)

  • 100 Continue:服务器已接收到请求的初始部分,客户端可以继续发送剩余部分。
  • 101 Switching Protocols:服务器已理解请求,将切换到新的协议。
    2xx:成功(Successful)
  • 200 OK:请求成功,服务器返回所请求的资源。
  • 201 Created:请求成功,并在服务器上创建了新的资源。
  • 204 No Content:请求成功,但服务器没有返回任何内容。
    3xx:重定向(Redirection)
  • 301 Moved Permanently:所请求的资源已永久移动到新的URL。
  • 302 Found(或者302 Found):所请求的资源暂时移动到新的URL。
  • 304 Not Modified:客户端缓存的资源仍然有效,可以直接使用缓存的版本。
    4xx:客户端错误(Client Error)
  • 400 Bad Request:服务器无法理解客户端的请求。
  • 401 Unauthorized:请求要求身份验证。
  • 403 Forbidden:服务器拒绝访问所请求的资源。
  • 404 Not Found:所请求的资源不存在。
    5xx:服务器错误(Server Error)
  • 500 Internal Server Error:服务器遇到了意外的错误,无法完成请求。
  • 502 Bad Gateway:作为代理或网关的服务器从上游服务器接收到非法响应。
  • 503 Service Unavailable:服务器当前无法处理请求,通常是由于过载或维护导致。

(5)cookie

cookie、session、token这三者的区别:cookie、session、token这三者的区别 - 简书

(6)万维网缓存 & 代理服务器

万维网缓存和代理服务器与CDN(内容分发网络)有一些相似之处,但它们并不完全相同。
万维网缓存(Web Cache)是一种用于存储常见网页资源的服务器。 当客户端请求访问一个网页时,如果该网页已经存在于缓存服务器中,缓存服务器会直接将资源返回给客户端,而不必向原始的web服务器重新请求。这可以显著提高页面加载速度,减轻原始服务器的负载压力。万维网缓存通常被部署在网络边缘,例如在ISP(互联网服务提供商)或组织内部。
代理服务器(Proxy Server)是一种充当客户端和原始服务器之间中间人角色的服务器 。当客户端发送请求时,请求首先发送到代理服务器,然后代理服务器会转发请求到目标服务器,并将响应返回给客户端。代理服务器可以用于多种目的,包括缓存数据、提供安全性和隐私保护、限制或过滤访问、负载均衡等。代理服务器通常是由组织自己搭建和管理。
CDN (内容分发网络)是一种分布式网络架构,通过将内容复制到位于全球各地的边缘节点上 ,以便更快地将内容提供给最终用户。CDN的边缘节点通常配备有缓存服务器,可以直接向用户提供所需的内容,从而提高响应速度和用户体验。CDN还可以通过负载均衡、智能路由以及其他优化技术来实现更高效的内容分发。
尽管万维网缓存和代理服务器在某些方面与CDN有相似之处,但CDN通常具有更广泛的网络基础设施,可以提供更全面的内容分发服务,并具备更强大的性能优化和负载均衡能力。

(7)B/S应用程序结构

浏览器/服务器(Browser/Server)方式,一种特殊的C/S方式。
利用动态和活动网页,通过通用的浏览器为用户提供人机交互的界面。

优点是用户不需要安装单独的应用程序,简化了应用的开发、维护和使用。

越来越多的网络应用采用B/S结构,例如购物网站、电子邮件、搜索引擎、博客等等。

(8)总结 & 习题


难点(三次握手时,第三次就会发请求页面!!!注意啦!!!)

到这里,计算机网络已经全部学习完啦!!!

学完计算机网络,大家对计算机之间如何通信,有了一个大致的认识。

学无止境,继续加油,为了自己!!!你的梦想,你的未来!

你不能停在这里!!!

时间:2023年8月30日15:09:29

相关推荐
liangbm330 分钟前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
GoppViper41 分钟前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
Charles Ray2 小时前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
重生之我在20年代敲代码2 小时前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
我要吐泡泡了哦3 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1233 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
贾saisai5 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫5 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
烟雨666_java5 小时前
JDBC笔记
笔记
GEEKVIP5 小时前
Android 恢复挑战和解决方案:如何从 Android 设备恢复删除的文件
android·笔记·安全·macos·智能手机·电脑·笔记本电脑