五、应用层协议
1. DNS协议:域名(domain name)是IP地址的代号,通常由字符构成,域名解析系统(DNS)负责将域名翻译成对应的IP地址。DNS协议主要基于UDP。
1.1 DNS服务器:在网络中进行域名解析的一些服务器,他们都有自己的IP地址并使用DNS协议进行通信,域名和IP地址对应关系存储在DNS服务器中。
1.2 DNS服务器构成一个分级的树状体系
图中每个节点为一个DNS服务器,顶端为根域(root);下一层是第二层次的顶级域(TLD) 按国家划分为.cn、.uk、.us等,按组织性质划分为.org 、.net、.com、.edu、.gov、.cc等,反向域arpa是反向解析的特殊顶级域;树的末端是真正的域名/IP对应关系记录。一次DNS查询就是从树的顶端节点出发最终找到相应末端记录的过程。
1.3 缓存:并不是每次域名解析都要完整的经历解析过程,域名解析模块通常有DNS缓存(cache),用来记录最近使用和查询的域名/IP关系。在进行每次DNS查询之前,计算机会先查询cache中是否有相关记录,这样重复的域名就不用经过整个递归查询过程。
1.4 反向DNS:是已经知道IP的前提下,想要查询域名。反向DNS也是采用分层查询方式,对于一个IP地址(比如106.10.170.118),依次查询in-addr.arpa节点(如果是IPv6,则为ip6.arpa节点),106节点,10节点,170节点,并在该节点获得106.10.170.118对应的域名。
2. HTTP协议:主要建立在TCP协议上偶尔也以UDP为底层,其目的是如何在万维网的网络环境下更好的利用TCP协议实现文件特别是超文本文件的传输。早期的HTTP协议主要传输静态文件,即真实存储在服务器上的文件,随着万维网的发展被用于传输动态文件,服务器上的程序根据HTTP请求即时生成的动态文件。我们将HTTP的传输对象统称为资源。
2.1 HTTP协议的通信时一次request-response交流。客户端向服务器发出请求,服务器回复客户端。格式如下,
2.1.1. 起始行:只有一行,包含了请求/回复最重要的信息,表示请求”想要什么”和回复”发生什么”。
头信息:可以有多行,每一行是一对键值对,如Content-type: text/plain,表示包含一个名为Content-type的参数,参数的值为text/plain。头信息是对起始行的补充,请求的头信息对服务器有指导意义,回复的头信息则是提示客户端。
主体:包含具体的资源。
2.1.2. 状态码:表示服务器回应动作的类型,200表示一切ok资源正常返回,302重新定向表示没有客户端想要的资源但知道另一个地方有,404无法找到表示找不到想要的资源无能为力。
2.1.3. Content-type:说明了主体所包含的资源的类型。根据类型的不同,客户端可以启动不同的处理程序,比如显示图像文件,播放声音文件等。常见的资源有,text/plain---普通文本,text/html---HTML文本,image/jpeg---jpeg图片,image/gif---gif图片。
2.1.4. Content-length:说明了主体部分的长度,以字节(byte)为单位。
3. DHCP协议:动态主机设置协议底层是UDP协议,用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址,DNS域名服务器地址等,一台电脑接上网络,DHCP客户端发现新连通的网络,会在该网络上找DHCP服务器,服务器将给电脑提供合理的网络配置,并把设置信息传回本机。
3.1 地址分配:要符合分配原则,地址合法,即对应该局域网的IP地址和子网掩码;地址空闲,同一网络下没有其他设备使用该地址。DHCP服务器上存有一个地址池,里面是可用的IP地址,此外服务器还会说明IP地址的占用时间也就是租期。
3.2 通信过程:UDP协议允许广播通信,把UDP数据包发送到网络的广播地址,网络上的每个设备都能收到,DHCP协议的通信正是靠这种方式进行。分为以下四步
Discovery:客户机发广播,搜寻DHCP服务器。
Offer:DHCP服务器发出邀请,提供一个可用的IP地址。
Request:客户机正式请求使用该IP地址。
Acknowledge:DHCP服务器确认,并提供其他配置参数。
每一步的通信内容都放在一个符合DHCP格式的数据包中,其中包括客户机IP地址,服务器IP地址,客户的硬件MAC编号等字段,还能附加多条网络设置参数,当这些信息未知时,相应的字段可以填成0。
4. TLS协议:传输层安全协议是一套加密的通信协议,前身是SSL协议,利用加密的方式,在开放的互联网环境中实现了加密通信。
4.1 加密:将原来的某种信息按照某种规律打乱,打乱的方式称为加密算法,扰乱过程中的参数叫做密钥,加密和解密用的是同一个密钥被称为对称加密。SSL协议分为客户端和服务器端。通信的核心步骤:
双方利用明文通信的方式确立使用的加密算法。
利用非对称算法通信,交换一个密钥。
该密钥用于对称加密算法,加密接下来的通信正文。
原文:https://www.cnblogs.com/abowlofzhou/p/11731843.html