1. 概述

因为不同的网络应用之间需要有一个确定的通信规则
在这里插入图片描述

1.1 两种常用的网络应用模型

1.1.1 客户/服务器模型(Client/Server)

在这里插入图片描述

1.1.2 P2P 模型(Peer-to-Peer)

网络健壮性指的是 P2P 模型不容易坏掉,即使一个节点坏了也没问题,可以有其他节点代替
在这里插入图片描述

2. 域名系统协议(DNS)

2.1 概述

DNS 就是将打在地址栏的域名转化为 IP 地址的东西
在这里插入图片描述

2.1.1 域名

域名就是www.xxx.com,当然这是最简单的一种
.com 之后还可以有东西,称之为根
域名从左向右,级别逐渐增高
在这里插入图片描述
在这里插入图片描述

2.2 域名服务器(DNS 服务器)

DNS 服务器有很多台,根据层次结构分为三层,根域名服务器,顶级域名服务器,权限域名服务器
本地域名服务器不算层次结构,特点是里主机比较近,当主机和另一台比较近的主机通信时,就不用走哪些更高级的服务器了
根域名服务器并不是一个域名只有一台,而是一个域名对应多台域名服务器,全世界一共有 13 个这样的域名,分别是 a.rootservers.netb.rootservers.netc.rootservers.net~m.rootservers.net
在权限域名服务器中,虽然看似 abc.comy.abc.com 少了一位,但是他们的地位仍是对等的,对应的两台权限域名服务器
在这里插入图片描述

2.3 域名解析过程

在这里插入图片描述
在这里插入图片描述

2.3.1 递归查询

在上图中
主机先是想本地域名服务器发送请求,如果查不到的话,
本地域名服务器向根域名服务器发送请求(找别人),如果还是查不到的话,
根域名域名服务器向顶级域名服务器发送请求(找别人),如果还是查不到的话,
顶级域名服务器向权限域名服务器发送请求(找别人)
可以看到每一次向下一个查询的服务器都变了,不是主机一个个去问,而是服务器自己一个个问下去

2.3.2 迭代查询

在上图中
主机先是想本地域名服务器发送请求,如果查不到的话,
本地域名服务器就让主机去向根域名服务器发送请求(主机去找,本地域名给目标根域名服务器的 IP 地址),如果还是查不到的话,
根域名域名服务器让主机去向对应的顶级域名服务器发送请求(主机去找,根域名给目标顶级域名服务器的 IP 地址),如果还是查不到的话,
顶级域名服务器让主机去向权限域名服务器发送请求(主机去找,顶级域名给目标权限域名服务器的 IP 地址)
可以看到这里是主机一个个挨个问的地址

2.3.3 高速缓存

为了减少多次查询同一个域名的资源浪费,本地域名服务器会存储最近使用的 ip 地址解析,下次再访问同一个域名就不需要这么多查询步骤了。同时这个高速缓存主机本身也有存储
同时本地域名服务器还可以对顶级域名服务器,权限域名服务器的地址进行缓存,下一次即使是不知道的 ip 地址,查询也可以更快
高速缓存为了保持正确性,需要定时更新

3. 文件传输协议(FTP,TFTP)

3.1 概述

TFTP 是一个轻量的,比较容易实现的,面对小文件的,UDP 的文件传输协议
这里我们重点是 FTP 协议
在这里插入图片描述

3.2 FTP 的服务端和客户端

在这里插入图片描述

3.3 FTP 的工作原理

为什么有匿名登陆:对于一些公共服务器来说,增加验证阶段就是增加资源开销,减少验证阶段就可以节省资源来更好地服务
主进程和从属进程的区别:主进程是打开端口,让外部发送的数据可以进来,并且将这些数据逐个分配各从属进程。从属进程则是单独为这些数据服务
在这里插入图片描述
在这里插入图片描述
先注释一下这里的主进程被忽略掉了,只是没标在上面,不是没有啊
这里客户端和服务器端先建立 TCP 连接,端口是 21,称为控制连接
然后看情况是主动建立连接还是被动建立连接
主动建立连接是指服务器端主动发送请求和客户端进行连接,此时端口号固定是 20
被动连接是指客户端发送请求和服务器端建立数据传送连接,此时端口号是不确定,有两者协商得到
数据传输完成之后,数据连接断开,控制连接继续保持,直至两边发送断开请求

在这里插入图片描述
FTP 的两种传输模式了解即可
在这里插入图片描述

4. 电子邮件

4.1 概述

4.1.1 电子邮件的格式

在这里插入图片描述

4.1.2 电子邮件系统的组成结构

注释:
用户代理的四个功能解释:
撰写就是给用户编辑信件的环境
显示就是可以看到自己写的和自己收的信件内容
处理就是对信件进行操作,包括删除,打印,转发等等
通信就是可以将邮件发送到邮件服务器当中,同时可以从邮件服务器当中读取邮件

邮件服务器的功能注释
邮件服务器端的发送和接受是指从自己的用户代理处接收邮件,之后向对面的邮件服务器发送邮件
邮件服务器的报告邮件发送结果就是投递是否成功这种情况
邮件服务器既可以作为客户端又可以作为服务器端,使用的是 C/S 方式

协议的功能注释
发邮件用的是 SMTP
收邮件的是 POP3 或者 IMAP

在这里插入图片描述
在这里插入图片描述

4.2 几个邮件协议

4.2.1 简单邮件传送协议 SMTP

注意一下,这里 STMP 客户和服务器不是固定死的,可以也可以成为服务器,服务器也可以成为用户,由发送方和接收方决定,发送方就是客户,接收方就是服务器
在这里插入图片描述
注释
可以看见这里比如

220 service ready
250 OK
421 service not available
550 xxx
354 xxx
12345

都是应答信息

这里 RCPT 能有多条命令的原因是,电子邮件可以有多个收件人,就是群发,所以允许多个 RCPT

再强调一下,这里服务器和客户端可以互换,视具体情况而定,发送方是客户端,接收方是服务器端
在这里插入图片描述

4.2.2 改进 SMTP 缺点的 MIME 协议

MIME 改善 SMTP 发送数据的缺点,是 SMTP 的功能性扩展
MIME 协议已经逐渐开始应用到浏览器当中,通过对不同文件类型用不同的标识符标识,来让浏览器读取通过 MIME 的相关文件
在这里插入图片描述

4.2.3 邮局协议 POP3

这里接收方是客户端,邮件服务器是服务器端
POP3 确实很简单,但是有不少缺点,比较难受的就是邮件一旦下载就自动删除了
在这里插入图片描述

4.2.4 比较复杂的读取邮件的协议——IMAP 协议

在这里插入图片描述

4.3 基于万维网的电子邮件

与之前的不同的地方就是,基于万维网的电子邮件的邮件服务器端可以不同

同时,发送邮件使用的 SMTP/MIME 和收邮件时的 POP3/IMAP 协议都换成了 HTTP 协议

在这里插入图片描述

5. 万维网和 HTTP 协议

5.1 万维网概述

URL 用来标识整个互联网当中的某一个资源(文字,视屏,音频等)的位置

HTTP 用来将这些资源传送给用户

HTML 帮助设计者来设计页面,让不同设计者设计的页面都可以在界面上显示
在这里插入图片描述

5.2 HTTP 协议

5.2.1 HTTP 协议的过程

这张图里讲了 HTTP 的具体过程

服务器通过 TCP 80 端口来监听 HTTP 请求

注意 HTTP 可以不一次性下载完页面的所有资源,可以只下载文本部分,其他音频视频等待用户下一步请求之后再传输
在这里插入图片描述

5.2.2 HTTP 协议的特点

在这里插入图片描述

5.2.3 HTTP 的连接方式——持久连接和非持久连接

非持久连接在 TCP 三次握手的第三次握手时发生,将 HTTP 请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将 HTTP 相应报文传输给客户。耗时就是 RTT*2+文档传输时间。
缺点就是这样如果再想传输,那么就需要重新建立 TCP 连接从头开始

持久连接和非持久连接类似,都是在第三次握手时发生,将 HTTP 请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将 HTTP 相应报文传输给客户。但是持久连接再需要请资源的时候就不需要建立新的 TCP 连接了

在这里插入图片描述

持久连接的两种方式——非流水线和流水线

非流水线就是发一个,确认一个,才能再发下一个
流水线就是一个个连着发,然后多个确认
和之前说过的停止等待协议,后退 N 帧协议和选择重传协议很像,忘了的话可以去复习一下
开个传送门计算机网络笔记 Part3 数据链路层(Data Link Layer)

5.2.4 HTTP 的报文结构

开始行用于区别请求报文和响应报文。可以明显的看到两者第一行的东西都不一样

请求报文的方法是指命令,就是对所请求的对象进行什么操作,如获取/删除等等
URL 就是之间说的资源标识符
版本是指使用的是什么版本的 HTTP 协议

CRLF 相当于我们程序里面的,标识一行的结束。同时,在整个首部行结束时,为了区别首部行和实体主体还会有一行单独的 CRLF
在这里插入图片描述
这里举了请求报文的例子,和一些常用的状态码

在这里插入图片描述

6. 本章思维导图

在这里插入图片描述

本章常用中英文对照

Server farm 服务器集群
Infrastructure 基础设施,或基础架构
Self-scalability 自扩展性
Timing 实时性
Connection-oriented service 面向连接的服务
Base HTML file 基本 HTML 文件
Stateless protocol 无状态协议
RTT (round-trip time ) 往返时间
User agents 用户代理
Mail servers 邮件服务器
Top-level domain (TLD) servers 顶级域名服务器
Authoritative DNS servers P161 权威域名服务器
Iterative queries 迭代查询
Resource records (RRs) 资源记录
Nonpersistent HTTP 非持久 HTTP,或非坚持 HTTP
Persistent HTTP 持久性 HTTP,或坚持的 HTTP
Peer-to-Peer (P2P) Network 对等网络
Socket programming 套接字编程

掘金:前端 LeBron

知乎:前端 LeBron

持续分享技术博文,关注微信公众号 👇🏻

img