2023-03-06  阅读(4)
原文作者:九死九歌 原文地址:https://blog.csdn.net/qq_52247089/category_11064780.html

§6.1 网络应用模型

一、应用层概述

1.应用层的目的:

  应用层对应用程序的通信提供服务。

2.应用层协议的定义:

  ① 应用进程交换的报文类型,请求还是响应?

  ② 各种报文类型的语法,如报文中的各个字段及其详细描述。

  ③ 字段的语义,即包含在字段中的信息的含义。

  ④ 进程何时、如何发送报文,以及对报文进行响应的规则。

3.应用层的功能:

  ① 文件传输。访问和管理。

  ② 电子邮件。

  ③ 虚拟终端。

  ④ 查询服务和远程作业登录。

4.应用层重要协议:

  FTP、SMTP和POP3、HTTP、DNS。

二、网络应用模型

1.客户/服务器(C/S)模型:

202303062241534901.png
  服务器: 提供计算服务 的设备。服务器的特点是:① 永久提供服务,二十四小时不间断。② 永久性访问地址/域名。

  客户机: 请求计算服务 的主机。客户机的特点是:① 与服务器通信,使用服务器提供的服务。② 间歇性接入网络,不必像服务器一样不能宕机。③ 客户机可能使用的是动态IP地址,而不是像服务器一样的永久地址。④ 不与其他客户机进行直接通信。

  该模型主要应用于:Web,文件传输FTP,远程登录,电子邮件。

2.P2P模型

202303062241554672.png
  P2P模型中不存在永远在线的服务器。

  每个主机既可以 提供服务 ,又可以 请求服务

  任意端系统 / 节点之间可以 直接通信

  节点可以间歇性接入网络,随时加入,随时退出。

  节点可能改变IP地址。

  可扩展性好。C/S模型中如果大量客户机涌入网络,服务器可能就炸了,而P2P模型中,大量主机涌入网络就相当于服务器多了,客户端也多了,不会有太大影响的。

  网络健壮性好。一个节点坏掉了,对整体的影响并不大,重新选择拓扑结构就好了,而对于C/S,如果服务器崩了,那就崩完了。

§6.2 DNS系统

一、DNS系统

  根据IP地址寻址去上网站,这样也可以,但是未免太过复杂。因而我们可以用域名来代替IP地址。而DNS系统就实现了域名到IP地址的转换。

  我们在登陆网站的时候,比如我在浏览器搜索框输入www.bilibili.com,那我这个步骤是先访问DNS服务器,让我的主机得到了bilibili的IP地址,然后我的主机才访问这个IP地址,得到网页信息。所以说,一个网站登不上,可能是DNS服务器出现了问题,也有可能是网页服务器出现了问题。

二、域名

1.域名的定义:

  例如www.csdn.net这样的,就叫做 域名 。他不区分大小写。点号分隔开的东西叫做标号,每个标号理论上不能超过63个字符,但是一般情况下为了方便记忆,最好不要超过12个字符。

  这些标号从左到右级别越来越高,例如对于www.csdn.net,net是 顶级域名 ,csdn是 二级域名 ,www是 三级域名

  其实完整的域名的后面还要跟一个点号,这个点号叫做

2.域名的分类:
  • 顶级域名

    • 国家顶级域名:cn,us,uk
    • 通用顶级域名:com,net,org,gov,int,aero,museum,travel
    • 基础结构域名/反向域名:arpa
  • 二级域名

    • 类别域名:ac,com,edu,gov,mil,net,org(类别域名和通用顶级域名使用重复的地方的,比如有的网站,他是xxx.xxx.com.cn,这种情况下,com就成了二级域名了)
    • 行政区域名:用于我国各省、自治区、直辖市 bj,js(北京、江苏)
    • 自己注册的二级域名:bilibili,csdn,leetcode(必须是全球唯一的)
  • 三级域名

  • 四级域名

    202303062241570463.png
      域名的书写就是从上面这个域名树,从下往上书写。

三、域名服务器

1.域名服务器的分类:

  ① 根域名服务器 :(先看④)根域名服务器知道所有顶级域名服务器的IP地址。当本地域名服务器无法得到域名的解析,他就要向根域名服务器求救。例如我们访问www.csdn.net,而本地域名服务器未能解析,递交给了根域名服务器,根域名服务器一看,顶级域名是net,就查询net顶级域名服务器的IP地址,然后告诉本地域名服务器这个IP地址,或者继续往下查询,去net顶级域名服务器,再去下面的权限域名服务器,进行详细查询,直到查询出来这个网站的IP地址。这两种方法就类似于递归和迭代。

  ② 顶级域名服务器 :顶级域名服务器负责管理该顶级域名服务器注册的所有二级域名。

  ③ 权限域名服务器 :负责一个区的域名服务器,所谓的区,是对DNS服务器实际管辖范围的一个区分,比如说百毒有天分裂成了a.baidu.com和b.baidu.com还有baidu.com,那他俩就是属于一个区。

  ④ 本地域名服务器 :当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器。它离主机比较近,一般不超过几个路由器的距离,当一台主机,他要查询的另一台主机是和他属于同一本地SP,也就是属于同一个因特网提供者所提供的范围内的时候,本地域名服务器就可以立刻蒋所查询的主机名转换成他的IP地址。而无需询问其他的服务器。使得DNS查询的过程更加简单。

四、域名解析过程

1.递归查询:

  主机先请求本地域名服务器,若无法解析,本地域名服务器向根域名服务器求助,根域名服务器无法解析则请求顶级域名服务器,顶级域名服务器无法解析则请求权限域名服务器。最后返回信息时也是权限返回给定级,顶级返回给根,根返回给本地,本地返回给主机。

2.迭代查询:

  主机先请求本地域名服务器,若无法解析,本地域名服务器向根域名服务器求助,根域名服务器无法解析,向主机返回对应顶级域名服务器的IP,然后本地域名服务器查询顶级域名服务器,若顶级域名服务器也无法解析,告诉主机对应权限域名服务器的IP地址,本地去查询。

202303062241580274.png
  从图中我们可以看到不管递归还是迭代,这个域名解析的过程都是极度繁琐复杂的,因而我们在本地域名服务器中引入了 高速缓存 这一概念。高速缓存可以用来存放最近查过的域名,以及从哪里获得域名映射信息的记录。当然域名IP硬设施会变化的,所以这个高速缓存也是要定时更新。不仅是本地域名服务器,主机也需要高速缓存,因此很多主机一开机就会从本地域名服务器中下载高速缓存。

  所以查询域名的过程中一般先查主机的高速缓存,再查本地域名服务器的高速缓存,再使用递归或迭代查询。

§6.3 文件传输协议FTP

一、文件传送协议

  常见的文件传送协议有:文件传送协议FTP (File Transfer Protocol)和简单文件传送协议TFTP (Trivial File Transfer Protocol)

  TFTP是一种易于实践的文件传送协议,适用于UDP环境。

  FTP协议提供了不同种类主机系统(硬软件体系等都可以不同)之间的文件传输能力。FTP是一种拷贝,即上传和下载。

二、FTP服务器与客户端

  FTP是基于客户/服务器(C/S)的协议。

  用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。

  依照 FTP协议提供服务,进行文件传送的计算机就是FTP 服务器

  连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP 客户端

三、FTP工作原理

1.登陆:

  ftp地址、用户名和密码。当然也可以匿名登录,不需要用户名和密码。

  互联网中有很大一部分FTP服务器被称为“匿名”(Anonymous)FTP服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行 登记注册 ,也不用取得FTP服务器的 授权

  Anonymous (匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件。

  FTP不容许一点儿疏忽,因此他使用的TCP协议实现可靠传输。

2.FTP服务器的进程
  • FTP进程

    • 一个主进程

    • n个从属进程
        工作流程是首先要打开一个熟知端口,也就是FTP服务期实现文件传输的熟知端口,端口号是21,等待客户进程发送连接请求并成功连接上,便进行数据传送。然后就可以启动n个从属进程,每个从属进程都对应一个客户端。

      202303062241594715.png
        控制进程和数据传送进程都是从属进程。只要客户端和服务器建立会话, 控制 连接便始终保持。但数据连接则是根据文件是否传送完毕来决定是否断开。

  控制连接使用端口号永远为21,而数据连接是否要使用20,与 传输模式 有关。 主动 方式使用TCP 20端口, 被动 方式由服务器和客户端自行协商决定(端口>1024)

3.FTP传输模式

  ① 文本模式:ASCI模式,以文本序列传输数据;

  ② 二进制模式:Binary模式,以二进制序列传输数据。

§6.4 电子邮件

一、电子邮件系统概述

  电子邮件分为两部分:信封部分和内容部分。

  • 电子邮件

    • 信封部分:信封上最主要的信息就是收件人邮箱,例如114514@qq.com

    • 内容部分

      • 首部:邮件的收件人和主题(From: 114514@qq.com To: 1919810@163.com Subject: Hello! Date: 2021-9-1,只有二三项是要自己编辑的)
      • 主体:就是信的内容(“哼哼哼啊啊啊啊啊啊啊啊啊啊~啊啊啊~”)

二、电子邮件系统概述 — 组成结构

202303062242005206.png

1.用户代理:

  即电子邮件客户端软件,是电脑上的一个应用程序。他一般有四个功能:撰写,也就是编辑邮件、显示,也就是写完的信会显示到屏幕上,包括发送的和接收的、处理,包括发送和接收右键、通信,也就是可以利用邮件的发送协议发送到指定服务器。

2.邮件服务器:

  它的主要功能有两个,发送和接收邮件、向发送人报告邮件传送结果。邮件服务器既可以作为服务器,还可以作为客户端,比如别的邮件服务器给这个邮件服务器发送消息,那这个邮件服务器就变成客户端了。

3.协议:

  发送邮件使用SMTP协议,接收邮件使用POP3和IMAP协议。

202303062242014247.png

三、简单邮件传送协议SMTP

1.SMTP的概念:

  SMTP规定了在两个相互通信的 SMTP进程 之间应该如何交换信息。

  这两个进程分别是负责发送邮件的SMTP客户和负责接收邮件的SMTP服务器。

  SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)。

  SMTP协议使用TCP连接,使用的端口号是25,使用C/S模式。

  SMTP通信要经历三个阶段:连接建立、邮件发送、连接释放。

连接建立

邮件传送

连接释放

2.连接建立:

TCP协议

220 Service ready

发送方

发送方邮件服务器

接收方邮件服务器

  SMTP服务器若有能力接收邮件,回答“250 OK”否则,回答“421 Service not available”。

2.邮件发送:

  A: MAIL FROM 114514@qq.com

  B: 250 OK / 451(452 500)(SMTP服务器 是否已经准备好接收邮件 )

  A: RCPT TO: 1919810@163.com(可以有多个RCPT命令)

  B: 250 OK / 550 No much user here()告知SMTP服务器 是否有这个用户

  A: DATA(要开始传输邮件的内容了)

  B: 354 start mail input; end with .(SMTP服务器同意传输)

  A: hng heng hen aaaaaaaaaaaaaaaaaaaaaaaaaaaa~~~ aaaaaaaaaa~(开始传输邮件内容)

  B: 250 OK(接收结束)

3.连接释放:

  邮件发完,SMTP客户发送QUIT命令,SMTP服务器返回“221”,表示同意释放TCP连接。

4.SMTP的缺点:

  ① SMTP不能传送可执行文件或者其他二进制对象。

  ② SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字。

  ③ SMTP服务器会拒绝超过一定长度的邮件。

  为了弥补以上缺点,我们可以使用通用因特网邮件扩充MIME。

202303062242028518.png
  MIME使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。是传输内容变得更加丰富多彩。

四、邮局协议POP3

202303062242038509.png
  ;POP3协议使用TCP连接,使用的端口号是110,使用C/S模式。

  POP3的工作方式有下载并保留(在服务器)和下载并删除。

五、网际报文存储协议IMAP

  IMAP协议比POP协议复杂。当用户主机上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。

  IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)。

六、基于万维网的电子邮件

  不用下载软件,直接在网页上操作。

  从发送方用户代理到邮件服务器使用的是http协议。从发送方邮件服务器到接收方邮件服务器仍然使用SMTP协议,从接收方邮件服务器到接收方用户代理使用的是http协议。

§6.5 万维网和http协议

一、万维网概述

1.万维网:

  万维网WWW (World Wide Web)是一个大规模的、联机式的信息储藏所 / 资料空间 ,是无数个网络站点和网页的集合。

2.同一定位符URL

  如何定位万维网中的这些资源呢?使用的是同一定位符URL。

  URL的格式为<协议(http https ftp)>://<主机(域名或IP地址)>:<端口>/<路径>

  另外URL不区分大小写

  如何获取资源呢?用户通过点击超链接(哔哩哔哩动画)或者输入URL传送给使用者。

  万维网以 客户 / 服务器 方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。

  万维网使用 超文本标记语言HTML ,使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来。

    <i>万维网</i>使用<b>超文本标记语言HTML</b>使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来。<br/><hr/>
    <a href="www.csdn.net">通过csdn可以学习html</a>

二、超文本传输协议HTTP

1.概念:

  HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

2023030622420649410.png
  服务器内有一个进程监听TCP的端口80

2.具体传输过程:

  ① 浏览器分析URL

  ② 浏览器向DNS请求解析lP地址

  ③ DNS解析出IP地址

  ④ 浏览器与服务器建立TCP连接

  ⑤ 浏览器发出取文件命令

  ⑥ 服务器响应

  ⑦ 释放TCP连接

  ⑧ 浏览器显示

  PS:浏览器也可以只下载文本部分。

三、HTTP协议的特点

1.无状态性

  HTTP协议是 无状态 的。就是说你第一次登陆这个网站和第二次登陆这个网站,服务器的响应是一样的。

2.cookie

  但是在实际工作中,一些万维网站点常常希望能够识别用户。不然你今天登了b站,明天上b站还得重新登一次。

  为了解决这个问题,便诞生了cookie,Cookie是存储在用户主机中的 文本文件 ,记录一段时间内某用户(使用识别码识别,如“114514”)的访问记录。b站就知道原来你昨天宠幸过我,好了,不用重新登录了。有了cookie就可以提供个性化服务。

3.HTTP的连接方式

  HTTP采用TCP作为运输层协议,但 HTTP协议本身是无连接的 (通信双方在交换HTTP报文之前不需要先建立HTTP连接)。

  HTTP的连接方式分为持久连接(Keep-alive)和非持久连接(Close)。另外持久连接还细分成了非流水线式和流水线式。

  非持久连接:

2023030622420736611.png
  持久连接:

2023030622420803412.png
  非持久连接每次请求资源都要进行三次握手。

  持久连接不至于。请求完了不会像非持久一样就挥手,请求新的资源不用需要重新三次握手。

  图中这个持久连接是非流水线式的。发了请求服务器才返回响应,收到了响应之后才能再次请求。(类似于停等协议)。而流水线式就有点像SR了,可以让TCP连接空闲时间比较少,提高下载效率。

四、超文本传输协议HTTP — 报文结构

1.概述:

  首先,http报文分为请求报文和请求报文。

  另外,HTTP报文是 面向文本 的,因此在报文中的每一个字段都是一些ASCIlI码串。

2023030622420899613.png

2.请求报文:

2023030622420995014.png
  ① 方法:即删除或是获取还是其他什么操作。

  ② URL:略,前面有。

  ③ 版本:使用的是什么版本的http协议。

  ④ 首部行:说明浏览器、服务器和报文主题的一些信息。也可以不用。

  例如下面这个

    GET /index.htm1 HTTP/1.1
    Host: www.test.edu.cn
    Connection: Close
    Cookie: 123456

  GET是指要获取资源,index.html是要获取的资源,HTTP/1.1是版本,Host是域名,Connection即使用何种连接方式,Close是非持续连接,Cookie即cookie的标识,说明这个用户之前访问过这个域名。

3.响应报文:

2023030622421098615.png
  ② 版本:同请求报文。

  ② 状态码和短语:数字和短语组合,例如202 Accepted(访问成功)、404 Not Found(找不到网页)、301 Moved Permanently(网页转移地址)

  1xx表示通知信息的,如请求收到了或正在处理。

  2xx表示成功,如接受或知道了。

  3xx表示重定向,如要完成请求还必须采取进一步的行动。

  4xx表示客户的差错,如请求中有错误的语法或不能完成。

  5xx表示服务器的差错,如服务器失效无法完成请求。

(PS:该笔记所对应的学习资料b站链接:2019 王道考研 计算机网络


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文