《为什么网络要分层 每一层的职责包含哪些协议.docx》由会员分享,可在线阅读,更多相关《为什么网络要分层 每一层的职责包含哪些协议.docx(21页珍藏版)》请在第一文库网上搜索。
1、为什么网络要分层每一层的职责包含哪些协议? ”这是一道我秋招面试字节遇到的真题。这篇文章我会首先结合我们日常的软件系统开发介绍 “为什么网络要分层“?,随后我会介绍 r OSI 7层模型” 以及 TCP/IP 4层模型”。我会详细介绍目前广泛使用的 TCP/IP 4层模型” 包括每一层做的事情以及相关的协议介绍。说到分层,我们先从我们平时使用框架开发一个后台程序来说,我们往往会按照每一层做不同的事情的原则将系统分为三层(复杂的系统分层可能会更多):1.Repository (数据库操作)2.3.Service (业务操作)4.5.Controller (前后端数据交互)6.复杂的系统需要分层,
2、因为每一层都需要专注于一类事情。我们的网络分层的原因也是一样,每一层只专注于做一类事情。,我们再来较为系统的说一说:为什么计算机网络要分层呢?1.各层之间相互独立:各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)Fo这个和我们对开发时系统进行分层是一个道理。2.3.提高了整体灵活性:每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。 这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。4.5.大问题化小:分层可以将复杂的网络间题分解为许多比较小的、界
3、线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义。6.说到计算机网络分层,我想到了计算机世界非常非常有名的一句话,这里分享一下:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,计算机整个体系从上到下都是按照严格的层次结构设计的。大白:如果一层不够那就加两层吧!为了更好地去了解网络分层,我们先来看一个虽然失败,但是却提供了很多不错的理论基础的0SI七层模型。OST七层模型的大体结构以及每一层提
4、供的功能如下。每一层都专注做一件事情,并且每一层都需要使用下一层提供的功能比如传输层需要使用网络层提供的路有7应用层6表示层5会话层4传输层、 一-1一3网络层和寻址功能,这样传输层才知道把数据传输到哪里去。为计算机用户提供服务数据处理(编解码、加密解密、压缩解压缩)管理(建立、维护、重连)应用程序之间的会话为两台主机进程之间的通信提供通用的数据传输服务路由和寻址(决定数据在网络的游走路径)数据链路层物理层管理相邻节点直接的数据通信4利用传输介质为数据链路层提供支持,实现相邻计算机节点之间比特流的透明传送0SI七层模型0SI的七层体系结构概念清楚,理论也很完整,但是它比较复杂而且不实用,而且有
5、些功能在多个层中重复出现。上面这种图可能比较抽象,再来一个比较生动的图片。下面这个图片是我在国外的一个网站上看到的,非常赞!8#Network process to application应用层传输层表K层会话层网络层IP. ARP, IP8c. CMP. IGMP, OSPFONS. WWW/HTTP. P2P. EMAJl/POP. &MTP. Telnet- FTP相=兴彳u 丁Dau representation and encryption数据链路层物理层在这里顺带提一下:为什么最开始的时候一直被一些大公司甚至一些国家政府支持的0SI七层模型会失败呢?1.0SI的专家缺乏实际经验,他
6、们在完成0SI标准时缺乏商业驱动力2.3.0SI的协议实现起来过分复杂,而且运行效率很低4.5.0SI制定标准的周期太长,因而使得按0SI标准生产的设备无法及时进入市场(20世纪90年代初期,虽然整套的0SI国际标准都已经制定出来,但基于TCP/IP的互联网已经抢先在全球相当大的范围成功运行了)6.7.OSI的层次划分不太合理,有些功能在多个层次中重复出现。8.3 TCP/IP 4层模型这是目前被广泛采用的一种模型,我们可以将TCP / IP模型看作是0SI 7层模型的精简版本,由以下4层组成:1.应用层2.3.传输层4.5.网络层6.7.网络接口层8.需要注意的是,我们并不能将TCP/TP4
7、层模型和OST7层模型完全精确地匹配起来,不过可以简单将两者对应起来,如下图所示:应用层 为计算机用户提供服务4321表H层会话层传输层网络层数据链路层物理层数据处理(编解码、加密解密、压缩解压缩)管理(建立、维护、连)应用程序之间的会话为两台主机进程之间的通信提供通用的数据传输服务路由和寻址(决定数据在网络的游走路径)管理相邻节点直接的数据通信利用传输介质为数据链路层提供支持,实现相邻计算机节点之间比特流的透明传送TCP-IP-4-model04 TCP/IP 4层模型网络协议概览1234应用层 网络接口层应用层表7n层会话层传输层网络层HTTP DNS FTP Telnet DCHPSMT
8、P. POP3. IMAP SSHTCP UDPIP ARP ICMP ARPRIP. OSPF. BGP NAT数据链路层物理层network-protoco1-overvi ew应用层协议MAC CSMA/CDHTTP协议(超文本传输协议,网页浏览常用的协议)DHCP协议(动态主机配置)DNS系统原理(域名系统)FTP协议(文件传输协议)Telnet协议(远程登陆协议)电子邮件协议等(SMTP、POP3、IMAP)传输层协议TCP协议报文段结构可靠数据传输流量控制拥塞控制UDP协议报文段结构RDT (可靠数据传输协议)网络层协议IP协议(TCP/TP协议的基础,分为IPv4和IPv6)AR
9、P协议(地址解析协议,用于解析IP地址和MAC地址之间的映射)TCMP协议(控制报文协议,用于发送控制消息)NAT协议(网络地址转换协议)RIP协议、OSPF协议、BGP协议(路由选择协议)网络接口层差错检测技术多路访问协议(信道复用技术)CSMA/CD 协议MAC协议以太网技术应用层(Application layer)应用层的任务是通过应用进程间的交互来完成特定网络应用,我们把应用层交互的数据单元称为报文。应用层协议定义的是应用进程(进程:主机中正在运行的程序,比如微信、QQ)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。 在互联网中应用层协议很多,如域名系统DNS,支持W
10、eb应用的HTTP协议,支持电子邮件的SMTP协议等等。简单总结一下当今使用的一些最常见的应用层协议:HTTP:超文本传输协议超文本传输协议(HTTP, HyperText Transfer Protocol)主要是为Web浏览器与Web服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过HTTP请求进行加载的,整个过程如下图所示。HTTP requestBrowsermethod: GETpath: /index.htmlHTTP responsestatus: 200content-type: text/html;Servercharset= UTF-8HTTP请求过
11、程FHTTP协议是基于TCP协议的,发送HTTP请求之前首先要建立TCP连接也就是要经历3次握手。目前使用的HTTP协议大部分都是1. Io在1.1的协议里面,默认是开启了 Keep-Alive的,这样的话建立的连接就可以在多次请求中被复用了。另外, HTTP协议是“无状态”的协议,它无法记录客户端用户的状态一般我们都是通过Session来记录客户端用户的状态。SMTP:简单邮件传输(发送)协议简单邮件传输协议(SMTP, Simple Mail Transfer Protocol)的缩写,基于TCP协议,用来发送电子邮件。注意:接受邮件的协议不是SMTP而是POP3协议。SMTP协议这块后面
12、不会花费太多篇幅来讲解,直接提一下两个比较重要的问题:1.电子邮件的发送过程2.3.如何判断邮箱是真正存在的?4.电子邮件的发送过程?比如我的邮箱是“dabai的sz箱nan. com,我要向xiaoma”发送邮件,整个过程可以简单分为下面几步:1.通过 rSMTPj 协议,我将我写好的邮件交给163邮箱服务器(邮局)。2.3.163邮箱服务器发现我发送的邮箱是qq邮箱,然后它使用SMTP协议将我的邮件转发到qq邮箱服务器。4.5.qq邮箱服务器接收邮件之后就通知邮箱为“xiaoma”的用户来收邮件,然后用户就通过FP0P3/IMAPJ协议将邮件取出。6.口一个电子邮件被发送的过程如何判断邮箱
13、是真正存在的?很多场景(比如邮件营销)下面我们需要判断我们要发送的邮箱地址是否真的存在,这个时候我们可以利用SMTP协议来检测。这里就不多扯,再扯的话,估计这篇文章的内容会很多,这并不是我的一贯风格。推荐几个在线邮箱是否有效检测工具:2.https:/verify-emai1. org/2.3.http:/tool. chacuo. net/maiIverify4.5.https:/www. emaiIcamel. com/6.POP3/IMAP:邮件接收的协议这两个协议不多做阐述,只需要了解 POP3和IMAP两者都是负责邮件接收的协议即可。另外,需要注意不要将这两者和SMTP协议搞混淆了。 FSMTP协议只负责邮件的发送,真正负责接收的协议是POP3/IMAP。JIMAP协议相比于POP3更新一点,为用户提供的可选功能也更多一点,几乎所有现代电子邮件客户端和服务器都支持IMAP。大部分网络邮件服务提供商都支持POP3和 IMAPoFTP:文件传输协议文件传输协议FTP (File Transfer Protocol),提供文件传输服务,基于TCP实现可