应用层
1. 网络应用模型
C/S P2P p2p 没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,对等放相互之间直接通信,
p2p 可扩展性,系统性能不会因为大规模的增大而减低
2. DNS
2.1 域名类型
本地域名服务器:对域名系统非常重要,当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。
授权域名服务器:每台主机都必须在授权域名服务器处登记,一台主机至少有两个授权域名服务器,授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。
顶级域名服务器:二级域名
根域名服务器:是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IO地址,通常不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。
2.2 域名解析过程:
浏览器先判断是否为合法的url格式,不合法则在搜索引擎中搜索
合法后,DNS解析会先判断缓存中是否有url的ip地址。
缓存的查询顺序是:浏览器缓存 -> 操作系统缓存(本地的hosts文件) -> 路由器缓存 -> 本地的DNS服务器缓存
在缓存中没有的情况,则向服务器发起请求查询ip地址。
查询IP地址的顺序是:根域名服务器 -> 顶级域名服务器 -> 权威域名服务器。直到查找到返回,并将其存储在缓存中下次使用
TCP建立连接,也就是三次握手
第一次握手,携带建立连接请求SYN=1和随机序列seq=x
第二次握手,携带确定字段ACK=1、连接请求SYN=1、随机序列seq=y和ack为上一次握手的seq+1,就是x+1
第三次握手,携带确定字段ACK=1、ack=y+1、seq=x+1
如果是https,还有一个TLS四次握手
第一次握手,客户端向服务端发送 支持的协议版本 + 支持的加密方法 + 生成的随机数
第二次握手,服务端向客户端发送 证书 + 公钥 + 随机数
第三次握手前,客户端会先验证证书有没有过期、域名对不对、是否可信机构颁发的。
没有问题或者用户接受不受信的证书,浏览器会生成一个新的随机数
第三次握手,将之前的三个随机数通过一定的算法生成会话秘钥,之后的加密解密都是用这个秘钥
第四次握手,服务端收到回复,是用确定的加密方法进行解密,得到第三个随机数,使用同样的算法计算出会话秘钥
建立连接之后,浏览器发送http请求
请求报文由请求行、请求头、空行和请求体组成
服务器解析请求报文,返回响应报文
响应报文由响应行、响应头、空行和响应体组成,我们需要的html文件就在响应体中
浏览器拿到html文件并开始解析,构建dom tree。遇到css文件,下载并构建CSSOM tree。等到两者都构建完成之后,一起构建Render tree。然后进行布局和绘制
其中遇到了script标签,则停止构建dom tree,等下载完成之后才会继续构建dom tree
当资源传输完毕之后,TSP关闭连接,进行四次挥手的操作,
其中四次挥手的操作客户端和服务器都可以发起
第一次挥手,携带断开连接的FIN=1、确定字段ACK=1、随机序列seq=u,ack=v
第二次挥手,携带确定字段ACK=1、随机序列seq=v,ack=u+1
第三次挥手,携带确定字段ACK=1、断开连接FIN=1、随机序列seq=w、ack=u+1
第四次挥手,携带确定字段ACK=1,随机序列seq=u+1,ack=w+1
等待2MSL后进入关闭状态
断开连接,结束通讯
3. FTP
常见用途:
1 在计算机之间传输文件,尤其是用于批量传输文件。
2让网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器
在服务器端,控制连接使用TCP的21端口;数据连接使用TCP的20端口 文件的列表是数据,由数据连接来传输,因此是20端口
在客户端,控制连接和数据连接的TCP端口号都是客户端系统自动分配的。
控制连接和数据连接
- 用于传送控制命令的
TCP连接在整个会话过程都保持开启状态 - 用于传送数据的
TCP连接只会在有数据传送时开启,数据结束传送后就关闭
4. 电子邮件
电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议
- 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件
- 邮件服务器是电子邮件系统的基础设施。因特网上所有的
ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱 - 协议包括邮件发送协议(如
SMTP)和邮件读取协议(如POP3,IMAP)
SMTP POP3 信息格式组成结构
用户代理使用POP3协议接收邮件,而SMTP协议用于发送邮件
POP3协议在传输层是使用明文来传输密码的,并不对密码进行加密。
POP3协议基于ASCII码,如果要传输非ASCII码的数据,那么要使用MIME将数据转换成ASCII码形式。
POP有两种工作方式①“下载并保留”,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器读取该邮件;
②“下载并删除”,邮件一旦被读取,就被从邮件服务器上删除,用户不能再次从邮件服务器上读取。POP3协议是由客户端而非服务器选择接收后是否将邮件保存在服务器上。
**SMTP: 发送邮件 邮件服务器互联(中间那段)-SMTP 只能传英文-MIME 扩充 其他国家文字转换
两边是http协议
pop3: 本地服务器 离线\
IMAP: 线上服务器 在线**
5. www万维网
浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示 组成工作流程-http1.0 2.0 定义 操作过程特点报文结构
url 统一定位符 协议端口号
| 方法(操作) | 意义 |
|---|---|
| GET | 请求读取由URL标识的信息 |
| HEAD | 请求读取由URL标识的信息的首部,不需要返回请求对象 |
| POST | 给服务器添加信息(如注释) |
| CONNECT | 用于代理服务器 |
| PUT | 把消息本体中的消息发送到一个URL,跟POST类似,但不常用 |
6. 超文本传输协议
http1.0 非持续连接
每请求一个文档就要有两倍的RTT 浏览器会建立多个并行的TCP 连接请求多个对象
http2.0 持续连接
协议端口号
http 80
https 443
ftp 2
ssh 22
SMTP:25
pop3:110
IMAP:143
DNS: 53
7.CDN 内容分发
8.Telnet 远程控制
一旦连接建立,服务器就能响应客户端请求的内容,服务器也能主动发送数据给客户端,用于一些消息的通知,如错误的通知。
9. DHCP(Dynamic Host Configuration Protocol,动态主机配置协议
DHCP是应用层的协议。
DHCP使用运输层的UDP所提供的服务,也就是说DHCP在运输层会被封装为UDP用户数据报。
DHCP服务器使用的端口是67,DHCP客户使用的端口是68,这两个都是熟知端口。
DHCP的作用就是让主机可以自动获取一些信息,这样就不用手工配置了。
DHCP的工作过程
A、
DHCP客户首先发送DHCP发现报文。
DHCP发现报文的源地址是0.0.0.0,因为此时DHCP客户还没有分配IP地址。
DHCP发现报文的目的地址是255.255.255.255,之所以进行广播发送,是因为DHCP客户并不知道网络中有哪些DHCP服务器。使用广播发送不仅会使DHCP服务器收到这条报文,DHCP客户也会收到,但是DHCP客户的应用层并没有监听该UDP用户数据报目的端口67的进程,因此无法交付DHCP发现报文,只能丢弃。
DHCP发现报文的格式很复杂,只需要知道封装有事务ID和DHCP客户端的MAC地址即可。
B、
DHCP服务器向DHCP客户发送DHCP提供报文。
DHCP提供报文的源IP地址是DHCP服务器的地址,DHCP提供报文的目的IP地址是255.255.255.255,因为此时DHCP客户还没有分配IP地址。使用广播发送不仅会使DHCP客户收到这条报文,DHCP服务器也会收到,但是DHCP服务器的应用层并没有监听该UDP用户数据报目的端口68的进程,因此无法交付DHCP提供报文,只能丢弃。
DHCP客户会根据DHCP提供报文的目的IP地址来判断该报文是否是自己请求的报文。如果该事务ID与自己之前发送的DHCP发现报文中封装的事务ID相等,就表明这是自己所请求的报文,就可以接收该报文。否则就丢弃该报文。
DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址时,会使用ARP协议来确保所选IP地址未被网络中其他主机占用。
C、
DHCP客户向DHCP服务器发送DHCP请求报文。
DHCP请求报文的源IP地址依然是0.0.0.0,因为此时DHCP客户才准备从多个DHCP服务器中挑选一个服务器作为自己的DHCP服务器,它首先需要争得该服务器的同意,之后才能正式使用从该DHCP服务器租用的IP地址。
DHCP请求报文的目的IP地址依然是广播地址。这样做的目的是:不用向网络中的每一个DHCP服务器单播发送DHCP请求报文,来告知每一个DHCP服务器是否请求它作为自己的DHCP服务器。
D、
在本例中,若DHCP客户选择DHCP服务器1作为自己的DHCP服务器,且DHCP服务器1接收该请求,于是DHCP服务器1给DHCP客户发送DHCP确认报文。
DHCP确认报文的目的IP地址依然是广播地址。(很明显,因为此时主机IP地址依然是0.0.0.0)
注意:
DHCP客户还会使用ARP协议来检测该IP地址是否已被网络中其他主机占用。
E、
DHCP客户端更新租期的工作原理
DHCP服务器采用动态分配机制给客户端分配IP地址时,分配出去的IP地址有租期限制。DHCP客户端向服务器申请地址时可以携带期望租期,服务器在分配租期时把客户端期望租期和地址池中租期配置比较,分配其中一个较短的租期给客户端。租期到期或者客户端下线释放地址后,服务器会收回该IP地址,收回的IP地址可以继续分配给其他客户端使用。这种机制可以提高IP地址的利用率,避免客户端下线后IP地址继续被占用。如果DHCP客户端希望继续使用该地址,需要更新IP地址的租期(如延长IP地址租期)。
DHCP客户端更新租期的过程如下图所示。
DHCP客户端更新租期示意图
- 当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
- 当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
- 如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。
客户端在租期时间到之前,如果用户不想使用分配的IP地址(例如客户端网络位置需要变更),会触发DHCP客户端向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租期。DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。客户端可以通过发送DHCP INFORM报文向服务器请求更新配置信息。
如下图所示,部署DHCP中继时,更新租期的过程与上述过程相似。 总结、
DHCP中继代理
DHCP中继代理:给路由器配置DHCP服务器的IP地址,使其成为DHCP中继代理。
为什么要有DHCP中继代理:不能在每一个网络都分配一个DHCP服务器,这样会使得DHCP服务器数量太多。
注意:若一个路由器没有配置DHCP服务器的IP地址,则这个路由器是不可以转发广播报文的。
配置了DHCP服务器的IP地址的路由器把广播的DHCP发现报文以单播的形式转发给DHCP服务器。
总结
导图
