文章目录
OSI参考模型—Open System Interconnection
- 物理层 :利用物理传输介质为数据链路层提供物理连接。
- 数据链路层 :将IP数据报加头加尾构成帧,通常头部加物理地址等信息,尾部加差错检测等信息。通过差错控制、流量控制等方法,实现数据在不可靠的物理线路上的可靠传递。
- 网络层 :负责为分组交换网上的不同主机提供通信服务。为了区分哪些MAC地址属于同一个子网,网络层定义了IP和子网掩码,通过对IP和子网掩码进行与运算就知道是否是同一个子网,再通过路由器和交换机进行传输。
- 传输层 :为上层协议提供端到端的可靠传输;TCP、UDP 有了网络层的MAC+IP地址之后,为了确定数据包是从哪个进程发送过来的,就需要端口号,通过端口来建立通信。
- 会话层 :建立、断开和维护通信链接
- 表示层 :数据格式转换、数据压缩和数据加密 。
- 应用层 :为应用程序提供网络服务;最高层,面对用户,提供计算机网络与最终呈现给用户的界面。
TCP/IP参考模型
- 网络接口层(数据链路层):他包含了OSI模型的物理层和数据链路层,把电脑连接起来。
- 网络层,也叫做IP层,处理IP数据包的传输、路由,建立主机间的通信。
- 传输层,就是为两台主机设备提供端到端的通信。TCP UDP
- 应用层,包含OSI的会话层、表示层和应用层,提供了一些常用的协议规范,比如FTP、SMPT、HTTP、DNS等。
URL和URI的区别
- URI(Uniform Resource Identifier) 统一资源标识符
- URL(Uniform Resource Locator) 统一资源定位符
URI用字符串标识某一互联网资源,而URL表示资源的位置,URL是URI的子集。URI的目的就是唯一标识互联网中的一份资源,具体可以用资源名称、资源地址等,但是资源地址是目前使用最广泛的,因此URL就容易和URI混淆。URI相当于抽象类,URL就是这个抽象类的具体实现类。
HTTP协议
为什么说HTTP协议是无状态协议?
HTTP协议是一种无状态协议,协议自身不对请求和响应之间的通信状态进行保存,即对发送过来的请求和响应都不做持久化处理,把HTTP协议设计的如此简单是为了更快地处理大量事务。
http常见状态码
HTTP的特点
-
优点:
1. 简单:HTTP 基本的报文格式就是 header + body ,头部信息也是 key-value 简单文本的形式,易于理解,降低了学习和使用的门槛。
2. 灵活和易于扩展
HTTP协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充。
同时 HTTP 由于是工作在应用层( OSI 第七层),则它下层可以随意变化。 -
缺点
1. 无状态的好处,因为服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。
2. 无状态的坏处,既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦。
3. 明文传输好处, 明文意味着在传输过程中的信息,是可方便阅读的,通过浏览器的 F12 控制台可以直接肉眼查看,为我们调试工作带了极大的便利性。
4. 明文传输坏处,HTTP 的所有信息都暴露在了光天化日下,相当于信息裸奔。在传输的漫长的过程中,信息的内容都毫无隐私可言,很容易就能被窃取。
HTTPS协议
HTTP和HTTPS的区别
- HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
- HTTP :TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
- HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
HTTPS的加密算法
HTTPS是通过以下三点实现的数据加密安全 :
- 使用非对称加密算法(公钥和私钥)交换对称加密中使用的密钥
- 数字证书验证身份(验证公钥是否是伪造的)
- 利用对称密钥加解密后续传输的数据
非对称加密
非对称加密时,客户端和服务端均拥有一个公有密匙和一个私有密匙。公有密匙可以对外暴露,而私有密匙只有自己可见。使用公有密匙加密的消息,只有对应的私有密匙才能解开。反过来,使用私有密匙加密的消息,只有公有密匙才能解开。这样客户端在发送消息前,先用服务器的公匙对消息进行加密,服务器收到后再用自己的私匙进行解密。公有密钥是公有的,与服务器进行交互的每个人都可以持有公有密钥。
对称加密
客户端和服务器公用一个密匙用来对消息加解密,这种方式称为对称加密。客户端和服务器约定好一个加密的密匙。客户端在发消息前用该密匙对消息加密,发送给服务器后,服务器再用该密匙进行解密拿到消息。因为加密和解密使用的是同一个秘钥,所以,服务器和客户端必然是要交换秘钥的,而正是因为对称秘钥由于有一个交换秘钥这一过程可能会被中间人窃取秘钥,一旦对称加密秘钥被窃取,而且被分析出加密算法的话,那么传输的数据对于中间人来说就是透明的。所以对称加密的致命性缺点就是无法保证秘钥的安全性。非对称加密相比对称加密更加安全,但也存在两个致命的缺点:
- 非对称加密时需要使用到接收方的公匙对消息进行加密,但是公匙不是保密的,任何人都可以拿到,中间人也可以。那么中间人可以做两件事。
a. 第一件是中间人可以在客户端与服务器交换公匙的时候,将服务端的公匙替换成自己的。这样客户端拿到的公匙将不是服务器的,而是攻击者的。客户端也无法判断公匙来源的正确性。然后客户端使用伪造的公钥对数据进行加密,中间人截取后可以就可以使用自己的私钥进行解密读取内容,然后再用正常的服务器公钥对数据进行加密再发给服务器。反过来,服务器向客户端发送消息的过程也可以被替换公钥。
b. 第二件是中间人可以不替换公匙,但是他可以截获客户端发来的消息,然后篡改,然后用服务器的公匙加密再发往服务器,服务器将收到错误的消息。
数字证书认证
CA,Certificate Authority是客户端与服务器双方都可信赖的第三方机构。有了 CA 签名过的数字证书,当浏览器向服务器发出请求时,服务器会返回数字证书给浏览器。
浏览器接收到数字证书之后,会对数字证书进行验证。首先浏览器读取证书中相关的明文信息,采用 CA 签名时相同的 Hash 函数来计算并得到信息摘要 A;然后再利用对应 CA 的公钥解密数字签名,得到信息摘要 B;对比信息摘要 A 和信息摘要 B,如果一致,则可以确认证书是合法的,即证明了这个服务器是合法的;同时浏览器还会验证证书相关的域名信息、有效时间等信息。
TCP和UDP
TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。
● 连接:TCP 是面向连接的传输层协议,传输数据前先要建立连接。UDP 是不需要连接,即刻传输数据。
● 服务对象:TCP 是一对一的两点服务,即一条连接只有两个端点。UDP 支持一对一、一对多、多对多的交互通信
● 可靠性:TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。UDP 是尽最大努力交付,不保证可靠交付数据。
● 拥塞控制、流量控制:TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。
TCP和UDP应用场景
● 由于 TCP 是面向连接,能保证数据的可靠性交付,因此经常用于:FTP 文件传输、HTTP / HTTPS
● 由于 UDP 面向无连接,它可以随时发送数据,再加上UDP本身的处理既简单又高效,因此经常用于:包总量较少的通信,如 DNS 、 SNMP 等,视频、音频等多媒体通信,广播通信。