文章目录
- 网络分层模型
- OSI七层模型及其作用
- TCP/IP四层模型及作用
- 为什么网络需要分层?
- 常见的网络协议
- 应用层常见的协议
- 传输层常见的协议
- 网络层常见协议
- 从输入URL到页面展示的过程
- HTTP常见的状态码
- HTTP与HTTPS的区别
- HTTP是不保存状态的协议,如何保存用户状态?
- URI和URL区别?
- Cookie和Session有什么区别?
- PING命令的作用
- DNS的作用是什么?
- DNS服务器
网络分层模型
网络分层模型是用于描述网络协议与网络硬件之间相互作用的一种模型,在实际应用中,通常采用
OSI模型或TCP/IP
模型。
OSI模型将网络协议分为七层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。每一层都有对应的协议和功能,每一层都向上一层提供服务并从下一层接收服务。
TCL/IP模型将网络的协议分为了四层,分别为网络接口层、网络层、传输层和应用层。网络接口层和网络层对应与OSI模型中的物理层、数据链路层和网络层,传输层和应用层对应于OSI模型中的传输层、会话层、表示层和应用层。
网络分层模型的作用是将网络通信过程分解成多个层级,使得不同的层级可以独立设计、实现和维护,从而提高了网络协议的通用性、可靠性和灵活性。网络分层模型害便于开发人员和维护人员对网络通信过程进行分析和故障排查。
OSI七层模型及其作用
- 物理层:物理层是网络模型的最低层,主要关注设备间如何传输原始比特流,包括连接器、接口、传输介质、信道复用技术等。
- 数据链路层:数据链路层是网络模型的第二层,主要关注网络节点之间的链路连接,包括数据的封装、错误检测、流量控制、媒体接入和链路管理等。
- 网络层:网络层是网络模型的第三层,主要关注数据包的路由和转发,包括IP地址的管理、数据包的分段和组装、路由器的功能和协议等。
- 传输层:传输层是网络模型的第四层,主要关注数据传输的端到端可靠性,包括TCP和UDP等协议,TCP协议提供可靠传输,UDP协议提供非可靠传输。
- 会话层:会话层是网络模型的第五层,主要关注应用程序之间的会话管理,包括会话建立、维护和结束等。
- 表示层:表示层是网络模型的第六层,主要关注数据格式的表示和转换,包括数据加密和压缩等。
- 应用层:应用层是网络模型的最高层,主要关注数据通信的应用,包括http、ftp等应用层协议。
每一层都专注做一件事情,并且每一层都需要使用下一层提供的功能,比如传输层需要使用网络层提供的路由和寻址功能,这样传输层才知道把数据传输到哪里。
OSI的七层体系结构概念清楚,理论也很完整,但是它比较复杂,并且不实用,有些功能在多个层中重复出现。
TCP/IP四层模型及作用
- 网络接口层:网络接口层是TCP/IP模型的最底层,它负责将数据在计算机网络中进行物理传输,包括物理设备之间的地址解析、多路复用和帧同步等。
- 网络层:网络层是TCP/IP模型的第二层,它负责把数据包从源主机传送到目标主机,包括IP协议、ICMP协议、ARP协议、RARP协议,和路由器等。
- 传输层:传输层是TCP/IP模型的第三层,它负责提供端对端(End-to-End)的数据传输服务,包括TCP协议和UDP协议,TCP协议提供可靠的数据传输,UDP协议提供简单的数据传输。
- 应用层:应用层是TCP/IP模型的最高层,它负责网络应用之间的交互,包括各种协议,如HTTP、FTP、SMTP、DNS、TELNET 等。
为什么网络需要分层?
在后端开发过程中我们经常也会按照功能的不同将系统分层,比如前后端交互的控制层Controller,业务操作层Service还有数据库操作Dao层。
复杂的系统需要分层,因为每一层都需要专注于一类事情,网络分层也是一样的原理。
整体说说为什么网络需要分层,首先就是为了各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了。其次就是可以提升网络的可靠性和可扩展性,每一层提供不同的服务和功能,各层之间独立设计实现和维护,从而加快了开发和维护速度。最后还可以降低系统的复杂度,不同的层关注不同的问题,更容易用各种优化方案来优化各自的功能和服务。
常见的网络协议
应用层常见的协议
常见的网络协议有 HTTP、FTP、SMTP、POP3/IMAP、Telnet、SSH、RTP、DNS等。
- HTTP(Hypertext Transfer Protocol,超文本传输协议):基于TCP协议,是一种超文本传输协议,用于浏览器和Web服务器之间传输超媒体文档的协议。当使用浏览器浏览网页时,网页就是通过HTTP请求进行加载的。
- SMTP(Simple Mail Transfer Protocol,简单邮件发送协议):简单邮件传输协议,用于发送电子邮件的协议,只负责邮件的发送。
- POP3/IMAP(邮件接收协议):两者都是负责邮件接收协议,IMAP相较于POP3更新更强大,支持邮件搜索、标记、分类、归档等高级功能,而且可以在多个设备之间同步邮件状态。几乎现代电子邮件客户端和服务器都支持IMAP。
- FTP(File Transfer Protocol,文件传输协议) : 文件传输协议,用于网络上进行文件传输,是一种不安全的协议,因为传输过程不会对数据进行加密。
- Telnet(远程登陆协议):远程登录协议,用于远程登录到其他服务器,缺点之一是所有数据包括账号密码都是以明文形式发送。
- SSH(Secure Shell Protocol,安全的网络传输协议):基于 TCP 协议,通过加密和认证机制实现安全的访问和文件传输等业务。
- RTP(Real-time Transport Protocol,实时传输协议):通常基于 UDP 协议,但也支持 TCP 协议。它提供了端到端的实时传输数据的功能,但不包含资源预留存、不保证实时传输质量,这些功能由 WebRTC 实现。
- DNS(Domain Name System,域名管理系统): 基于 UDP 协议,用于解决域名和 IP 地址的映射问题。
传输层常见的协议
- TCP(Transmission Control Protocol,传输控制协议 ):提供 面向连接 的,可靠 的数据传输服务。
- UDP(User Datagram Protocol,用户数据协议):提供 无连接 的,尽最大努力 的数据传输服务(不保证数据传输的可靠性),简单高效。
网络层常见协议
- IP(Internet Protocol,网际协议):TCP/IP协议中最重要的协议之一,主要作用是定义数据包的格式、对数据包进行路由和寻址,便于它们跨网络传播并达到正确的目的地。目前的IP协议主要有两种,IPv4是目前应用广泛的协议,IPv6是IPv4的升级版。
- ARP(Address Resolution Protocol,地址解析协议):地址解析协议,用于将IP地址映射为MAC地址,以便进行数据链路层的通信。
- ICMP(Internet Control Message Protocol,互联网控制报文协议):是一种互联网控制消息协议,用于发送错误消息和诊断消息。
- NAT(Network Address Translation,网络地址转换协议):NAT 协议的应用场景如同它的名称——网络地址转换,应用于内部网到外部网的地址转换过程中。具体地说,在一个小的子网(局域网,LAN)内,各主机使用的是同一个 LAN 下的 IP 地址,但在该 LAN 以外,在广域网(WAN)中,需要一个统一的 IP 地址来标识该 LAN 在整个 Internet 上的位置。
- OSPF(Open Shortest Path First,开放式最短路径优先):一种内部网关协议(Interior Gateway Protocol,IGP),也是广泛使用的一种动态路由协议,基于链路状态算法,考虑了链路的带宽、延迟等因素来选择最佳路径,特点是快速收敛,高效稳定,常用于大型网络中。
- RIP(Routing Information Protocol,路由信息协议):一种内部网关协议(Interior Gateway Protocol,IGP),也是一种动态路由协议,基于距离向量算法,使用固定的跳数作为度量标准,选择跳数最少的路径作为最佳路径。
- BGP(Border Gateway Protocol,边界网关协议):一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议,具有高度的灵活性和可扩展性。
从输入URL到页面展示的过程
- DNS解析
- TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束
HTTP常见的状态码
- Informational(信息性状态码): 接收的请求正在处理
- Success(成功状态码): 请求正常处理完毕
- Redirection(重定向状态码): 需要进行附加操作以完成请求
- Client Error(客户端错误状态码): 服务器无法处理请求
- Server Error(服务器错误状态码): 服务器处理请求出错
HTTP与HTTPS的区别
- URL前缀不同: 一个前缀是
http://
,一个是https://
- 端口号不同: HTTP使用的是80端口,HTTPS使用的是443端口。
- 传输内容的安全性不同: HTTP协议运行在TCP上,传输的内容都是明文,HTTPS通过SSL或TLS等协议实现了加密传输,加密采用对称加密,但堆成加密的密钥用服务方的证书进行了非对称加密。所以HTTPS安全性更高,同时耗费的服务器资源更多。
- 传输速度不同: 因为HTTP不需要加密,所以传输速递比较快,而HTTPS要进行数据的加密和解密,因此传输速度相对较慢。
HTTP是不保存状态的协议,如何保存用户状态?
HTTP是一种不保存状态,即无状态协议。也就是HTTP协议自身不对请求和响应之间的通信状态进行保存。想要保存用户状态,就要使用到
Session
,Session的主要作用就是通过服务端记录用户的状态。比如我们在添加商品到购物车时,系统不知道是哪个用户进行操作的,因为HTTP协议是无状态的。服务器根据每个会话的用户生成一个唯一的Session ID并保存在Cookie中,在客户端浏览器再次访问服务器时,服务器会根据Session ID来恢复用户状态。
Cookie被禁用了怎么办?
最常见的方法就是利用URL重写把Session ID直接附加在URL路径后面。
URI和URL区别?
- URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
- URL(Uniform Resource Locator) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。
URI 的作用像身份证号一样,URL 的作用更像家庭住址一样。URL 是一种具体的 URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。
Cookie和Session有什么区别?
- 存储位置不同: Cookie是存储在客户端的浏览器中的一段文本,而Session是存储在服务器端的一段内存或硬盘文件中的数据。
- 安全性不同: Cookie信息是明文存储在浏览器中,容易被篡改和窃取,因此需要进行加密或签名保护。而Session信息存储在服务器端,不容易被窃取,但也需要进行一些安全性保障措施。
- 有效期不同: Cookie可以设置过期时间,控制保存的时间,而Session默认情况下是关闭浏览器时自动清除。
- 穿透性不同: Cookie可以跨域访问,不同域名的Cookie可以相互访问,而Session只在同一个域名下共享。
- 存储容量不同: Cookie存储的数据容量有限制,一般为4KB左右,而Session存储的数据容量相对更大。
总的来说,Cookie一般用于存储一些较小的用户状态信息,例如用户ID和密码等,方便用户下次访问时恢复身份,用于保留用户的登录状态。而Session则一般用于存储一些需要更安全保护或者更大容量的用户信息,比如购物车内容、用户配置信息等。
PING命令的作用
- 测试网络连接性
- 排除网络故障
- 测试网络中的精确时间
PING 基于网络层的 ICMP(Internet Control Message Protocol,互联网控制报文协议),其主要原理就是通过在网络上发送和接收 ICMP 报文实现的。
ICMP 报文中包含了类型字段,用于标识 ICMP 报文类型。ICMP 报文的类型有很多种,但大致可以分为两类:
- 查询报文类型:向目标主机发送请求并期望得到响应。
- 差错报文类型:向源主机发送错误信息,用于报告网络中的错误情况。
DNS的作用是什么?
DNS域名管理系统,就是当用户使用浏览器访问网址之后,使用的第一个重要协议。DNS要解决的是域名和IP地址的映射问题。
在实际使用的过程中,浏览器会在本地维护一个
hosts
列表,将解析后的域名的IP进行存储,一般浏览器会先查看要访问的域名是否在hosts
列表中,如果有的话,直接提取对应的IP地址记录,如果本地hosts
没有域名对应IP的记录,就调用DNS。
目前 DNS 的设计采用的是分布式、层次数据库结构,DNS 是应用层协议,基于 UDP 协议之上,端口为 53 。
DNS服务器
DNS服务器采用一个分层次的结构,呈现为树形结构。DNS服务器自底向上可以依次分为以下四个层级
- 根DNS服务器: 根DNS服务器提供TLD服务器的IP地址。目前世界上只有13组根服务器,我国境内目前仍没有根服务器。
- 顶级域DNS服务器(TLD服务器): 顶级域是指域名的后缀,如
.com,.vip
等。TLD服务器提供了权威DNS服务器的IP地址。 - 权威DNS服务器: 在因特网上具有公共可访问主机的每个组织机构必须提供可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。
- 本地DNS服务器: 每一个ISP(互联网服务提供商)都有一个自己的本地DNS服务器。它起着代理的作用,严格来说,不说与DNS层级结构。