一、应用层重点协议
应用层的作用:满足我们日常需求的网络程序,都是在应用层。
1.1 DNS
DNS,即Domain Name System,域名系统。DNS是一整套从域名映射到IP的系统。TCP/IP中使用IP地址来确定网络上的一台主机,但是IP地址不方便记忆,且不能表达地址组织信息,于是人们发明了域名,并通过域名系统来映射域名和IP地址。
域名解析使用DNS协议来传输数据。DNS协议是应用层协议,基于传输层UDP或TCP协议来实现,通常基于UDP协议(无连接不稳定但高效的服务),当数据长度大于512字节的时候,为了保证传输质量,就会使用基于TCP的实现方式。
1.2 NAT
NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能。
NAT IP转换过程:
- NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
- NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;
- 在NAT路由器内部,有一张自动生成的,用于地址转换的表;
- 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;
那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的,那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
1.3 NAPT
这时候NAPT来解决这个问题了,使用IP+port端口号来建立这个关联关系。
这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下,建立连接时,就会生成这个表项;在断开连接后,就会删除这个表项。
1.4 NAT技术的缺陷
由于NAT依赖这个转换表,所以有诸多限制:
- 无法从NAT外部向内部服务器建立连接;
- 转换表的生成和销毁都需要额外开销;
- 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开。
1.5 HTTP/HTTPS
HTTP(HyperText Transport Protocol),超文本传输协议,它属于传输客户端和服务器端的数据。
( HTTP协议详情在前面博客13中以总结。)
HTTPS
- 对称加密
对称加密通过同一个秘钥对信息进行加密和解密,我们可以使用一把钥匙上锁或开锁,也就是说对称加密只有一把共享秘钥,所以对数据的加密和解密的效率都是非常高的,但是对称加密存在一个问题:在网络之间传送这一把钥匙,很容易就被截获了,所以存在不安全因素。 - 非对称加密
非对称加密是有一对钥匙,一把公钥一把私钥,公钥的作用是对数据进行加密,私钥的作用是对数据进行解密。非对称加密解决了对称加密中一把钥匙在网路之间传递的不安全因素, 因为只将公钥发送给客户端,它只能对数据进行加密,而私钥是我们是服务器端自己保存的,所以就是不对外暴露的,这样的话,就算公钥被截获了也不会泄露数据,因为没有私钥也看不到数据信息。但是非对称加密也存在问题:效率低,执行速度没有对称加密快。
注意:HTTPS使用的是非对称加密和对称加密。
HTTPS的交互流程:
- 客户端先给服务器端发送链接请求
- 服务器端先利用非对称加密,生成一对秘钥,带着第三方颁发的证书和公钥一起发送给客户端
- 客户端检查证书的有效性
- 证书有效客户端会利用对称加密生成一个共享秘钥
- 客户端先用共享秘钥对传输的数据进行加密,然后再用非对称加密生成的公钥对共享秘钥进行加密,发送给客户端
- 客户端拿到加密的数据后先用私钥把公钥的那一层加密打开,拿到共享秘钥,然后再用共享秘钥将数据解密,拿到真实数据
- 之后进行数据传输的时候直接传输用共享秘钥进行加密后的数据即可
二、传输层重点协议
负责数据能够从发送端传输到接收端。