计算机网络是个非常复杂的系统,为了设计这样复杂的计算机网络,设计时即提出了分层的方法。“分层”可将庞大而复杂的问题,转化为若干较小的局部问题,易于研究和处理。

# 网络分层模型

# OSI七层模型

# TCP/IP四层模型

TCP/IP不是指TCP和IP这两个协议的合称,而是指因特网的整个TCP/IP协议簇。

# 计算机网络原理的五层模型

OSI的七层协议体系的概念清晰,理论也比较完整,但它既复杂又不实用。

TCP/IP体系结构却得到了非常广泛的使用。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体的内容。

因此在学习计算机网络原理时,采用折中的办法,采用一种只有五层协议的体系结构。

# 虚拟互联网络

在讨论网际协议之前,必须了解什么事虚拟互联网络。

  1. 在全世界内把数以百计的网络都互联起来,任务很复杂
  2. 各种网络的内部结构及特性可能都是很不一样的:没有一种单一的网络能够适应所有用户的需求
  3. 网络技术不断发展,网络的制造厂家也要经常推出新的网络,供不同的用户选用,在市场上求生存

讨论网络互联时,都是指在网络层用路由器进行网络互联和路由选择。

TCP/IP体系在网络互联上采用的做法是,在网络层(即IP层)采用了标准化协议,但相互连接的网络则可以是异构的(具体的编址方案、路由选择协议等)。

所谓虚拟互联网络就是逻辑互联网络,不否认物理网络的异构,从网络层上看起来好像是一个统一的网络。

# 网络层/IP层

网际协议IP(Internet Protocol)

网络层解决的问题是如何在网络中找到目标主机的问题。

它不提供服务质量的承诺(网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务),而运输层才提供可靠传输的机制。

IP给在因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32位标识符,该标识符称之为IP地址

IP地址的结构方便我们在因特网上很方便的进行寻址。

# 分类的IP地址编址方法

IP数据报的格式,需要查阅资料,记不住(记忆力的问题交给博客和笔记)。

# ARP地址解析协议

# 无分类的IP地址

# 路由选择协议

# 虚拟专用网络 VPN/借用公网资源实现私有网络的通信

# 网络地址转换 NAT

# 运输层 /tcp udp

# 端口

# UDP

# TCP

# 应用层

# DNS

# HTTP

HTTP是一个无状态的协议,无状态指在客户端(Web浏览器)和服 务器之间不需要建立持久的连接,在一个客户端向服务器端发出请求 且服务器收到该请求并返回响应(response)后,本次通信结束,HTTP连接将被关闭,服务器不保留连接的相关信息。

HTTP遵循请求(Request)/应答(Response)模型,客户端向服务器发送请求,服务器处理请求并返回适当的应答。

HTTP的传输流程包括地址解析、封装HTTP数据包、封装TCP包、建 立TCP连接、客户端发送请求、服务端响应、服务端关闭TCP连接,具体流程如下。

(1)地址解析:地址解析通过域名系统DNS解析服务器域名从而 获 得 主 机 的 IP 地 址 。 例 如 , 用 客 户 端 的 浏 览 器 请 求

http://localhost.com:8080/index.htm,则可从中分解出协议名、主机名、端口、对象路径等部分结果如下。

◎ 协议名:HTTP。

◎ 主机名:localhost.com。

◎ 端口:8080。

◎ 对象路径:/index.htm。

(2)封装HTTP数据包:解析协议名、主机名、端口、对象路径等并结合本机自己的信息封装成一个HTTP请求数据包。

(3)封装TCP包:将HTTP请求数据包进一步封装成TCP数据包。

(4)建立TCP连接:基于TCP的三次握手机制建立TCP连接。

(5)客户端发送请求:在建立连接后,客户端发送一个请求给服务器。

(6)服务器响应:服务器在接收到请求后,结合业务逻辑进行数 据处理,然后向客户端返回相应的响应信息。在响应信息中包含状态行、协议版本号、成功或错误的代码、消息体等内容。

(7)服务器关闭TCP连接:服务器在向浏览器发送请求响应数据 后 关 闭 TCP 连 接 。 但 如 果 浏 览 器 或 者 服 务 器 在 消 息 头 中 加 入 了Connection:keep-alive,则TCP连接在请求响应数据发送后仍然保持 连接状态,在下一次请求中浏览器可以继续使用相同的连接发送请 求。采用keep-alive方式不但减少了请求响应的时间,还节约了网络带宽和系统资源。

在HTTP请求中,无论是请求成功还是失败都会有对应的状态码返 回。状态码是我们定位错误的主要依据,一般“20x”格式的状态码表 示成功,“30x”格式的状态码表示网络重定向,“40x”格式的状态 码表示客户端请求错误,“50x”格式的状态码表示服务器错误。

# 网络安全

# HTTPS

SSL(Secure Sockets Layer 安全套接字协议)在传输层与应用层之间对网络连接进行加密。在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

HTTPS是以安全为目标的HTTP通道,它在HTTP中加入SSL层以提高 数据传输的安全性。HTTP被用于在Web浏览器和网站服务器之间传递信 息,但以明文方式发送内容,不提供任何方式的数据加密,如果攻击 者截取了We b浏览器和网站服务器之间的传输报文,就可以直接读懂 其中的信息,因此HTTP不适合传输一些敏感信息,比如身份证号码、 密码等。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协 议,SSL依靠证书来验证服务器的身份,并对浏览器和服务器之间的通信进行数据加密,以保障数据传输的安全性,其端口一般是443。

HTTP的加密流程如下,如图6-6所示。

(1)发起请求:客户端在通过TCP和服务器建立连接之后(443端 口),发出一个请求证书的消息给服务器,在该请求消息里包含自己可实现的算法列表和其他需要的消息。

(2)证书返回:服务器端在收到消息后回应客户端并返回证书, 在证书中包含服务器信息、域名、申请证书的公司、公钥、数据加密算法等。

(3)证书验证:客户端在收到证书后,判断证书签发机构是否正 确,并使用该签发机构的公钥确认签名是否有效,客户端还会确保在 证书中列出的域名就是它正在连接的域名。如果客户端确认证书有效,则生成对称密钥,并使用公钥将对称密钥加密。

(4)密钥交换:客户端将加密后的对称密钥发送给服务器,服务器在接收到对称密钥后使用私钥解密。

(5)数据传输:经过上述步骤,客户端和服务器就完成了密钥对 的交换,在之后的数据传输过程中,客户端和服务端就可以基于对称 加密(加密和解密使用相同密钥的加密算法)对数据加密后在网络上传输,保证了网络数据传输的安全性。

# 负载均衡

负载均衡是一种分流技术,提高系统吞吐量的同时,保证系统的稳定性。

常用的负载均衡有四层负载均衡和七层负载均衡。

四层负载均衡基于IP和端口的方式实现网络的负载均衡,具体实 现为对外提供一个虚拟IP和端口接收所有用户的请求,然后根据负载均衡配置和负载均衡策略将请求发送给真实的服务器。

七层负载均衡基于URL等资源来实现应用层基于内容的负载均衡, 具体实现为通过虚拟的URL或主机名接收所有用户的请求,然后将请求发送给真实的服务器。

四层负载均衡和七层负载均衡的最大差别是:四层负载均衡只能 针对IP地址和端口上的数据做统一的分发,而七层负载均衡能根据消 息的内容做更加详细的有针对性的负载均衡。我们通常使用LVS等技术 实现基于Socket的四层负载均衡,使用Nginx等技术实现基于内容分发 的七层负载均衡

# 四层负载均衡

四层负载均衡主要通过修改报文中的目标地址和端口来实现报文 的分发和负载均衡。

四层负载均衡常用的软硬件如下。

◎ F5:硬件负载均衡器,功能完备,价格昂贵。

◎ LVS:基于IP+端口实现的四层负载软件,常和Keepalive配合使用。

◎ Nginx:同时实现四层负载和七层负载均衡,带缓存功能,可基于正则表达式灵活转发。

LVS的说明 (opens new window)

# 七层负载均衡

七层负载均衡又叫作“内容负载均衡”,主要通过解析报文中真 正有意义的应用层内容,并根据负载均衡配置和负载均衡策略选择一个最佳的服务器响应用户的请求。

七层负载均衡常用的软件如下。

◎ HAProxy:支持七层代理、会话保持、标记、路径转移等。

◎ Nginx:同时实现四层负载和七层负载均衡,在HTTP和Mail协议上功能比较好,性能与HAProxy差不多。

◎ Apache:使用简单,性能较差。

# 负载均衡策略/算法

常用的负载均衡算法有:轮询均衡(Round Robin)、权重轮询均 衡(Weighted Round Robin)、随机均衡(Random)、响应速度均衡(Response Time)、最少连接 数均衡(Least Connection)、IP地址散列、URL散列。不同的负载均衡算法适用于不同的应用场景。

# Nginx负载均衡

# 其他

# DHCP

路由器的DHCP功能 (opens new window)

# CDN

CDN(Content Delivery Network,内容分发网络)指基于部署在 各地的机房服务器,使用户就近获取所需内容,降低网络延迟,提升用户访问的响应速度和体验度。

Last Updated: 9 days ago