TCP/IP 中的OSI分层模型详解

一 链接人与人的计算机网络

      计算机网络最初的目的是连续一个个独立的计算机, 使他们组成一个个更强有力的计算环境。简而言之,就是为了提升生产力。从批处理时代到计算机网络时代, 毋庸置疑,都体现了这一目的。然而,如今却彷佛有了微妙的变化。       现代计算机网络的首要目的之一,能够说是连接人与人。置身于世界各地的人们能够经过网络创建联系、相互沟通、交流思想       在计算机网络与信息通讯领域里,人们常常说起“协议”一词。互联网中经常使用的具备表明性的协议有IP, TCP,HTTP等而 LAN(局域网)中经常使用的协议有 IPX/SPX等       “计算机网络体系结构” 将这些网络协议进行了系统的概括。TCP/IP就是IP、TCP、HTTP等协议的组合。如今 不少设备都支持TCP/IP。除此以外,还有不少其余类型的网络体系结构。例如,Novell公司的IPX/SPX、苹果公司的AppleTalk(仅限苹果公司使用)、IBM 公司开发的用于构建大规模的网络的SNA 以及前DEC公司开发的DECnet等。前端

网络体系结构 协议 主要用途
TCP/IP IP,ICMP, TCP, UDP, HTTP, TELNET, SNMP, SMTP..... 互联网、局域网
IPX/SPX IPX,SPX, NPC... 我的电脑局域网
AppleTalk DDP、RTMP、AEP、ATP、ZIP 苹果公司现有产品的局域网
OSI FTAM,MOTIS, VT, ---
XNS IDP、SPP、PEP..... 施乐公司网络

二 CPU 与 OS

      CPU 又叫中央处理器。它如同一台计算机的心脏,每一个程序实际上都由他调度执行的。 CPU的性能很大程度上也决定着一台计算机的处理性能。 所以人们常说计算机的发展史实际上就是CPU的发展史。       目前人们经常使用的CPU有 Intel Core、 Intela Tom以及 ARM Cortex等产品       OS 译做操做系统,是一种基础软件。它集合了CPU管理,内存管理、计算机外围设备管理以及程序运行管理等重要功能,一个CPU一般在同一时间只能运行一个程序。为了让多个程序同时执行,操做系统采用 CPU时间片轮起色制,在多个程序之间进行切换,合理调度。 这种方式叫作多任务调度。浏览器

三 协议的分层

      OSI 参考模型中,将通讯协议中必要的功能 分红了7层。经过这些分层,使得 那些比较复杂的网络协议更加简单化。       这一模型中, 每一个分层都接受由他下一层所提供的特定服务,而且负责为本身的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫作“接口”。同一层 之间的交互所遵循的约定叫作“协议”。       协议分层就如同计算机软件中的模块化开发。OSI 参考模型的建议是比较理想化的。他但愿实现从第一层到第七次的模块,并将它们组合起来实现网络通讯。分层能够将每一个分层独立使用,即便系统中某些分层发生变化,也不会波及整个系统。所以能够构建一个扩展性和灵活性都很强的系统。 经过分层可以细分通讯功能,更易于单独实现每一个分层的协议,并界定每一个分层的具体责任和义务。这些都属于分层的优势。       而分层的劣势可能就在于过度模块化,是处理变得更加沉重以及每一个模块都不得不实现类似的处理逻辑等问题 安全

image.png

四 OSI参考模型

      OSI参考模型将这样一个复杂的协议整理并分为了易于理解的七层分层markdown

分层名称 功能
应用层 为应用程序提供服务并规定应用程序中通讯相关的细节
表示层 将应用层处理的信息转换为适合网络传输的格式,或未来自下一层的数据转换为上层可以处理的格式。所以它主要负责数据格式的转换。 具体来讲,就是将设备固有的数据抓换为网络标准传输格式。不一样的设备对同一比特流解释的结果可能不一样。所以,使他们保持一致是这一层的主要做用
会话层 负责创建和断开通讯链接(数据流动的逻辑通路)以及数据的分割等数据传输相关的管理
传输层 起着可靠传输的做用,只在通讯双方结点上进行处理,而无需在路由器上处理
网络层 将数据传输到目标地址。目标地址能够是多个网络经过路由器链接而成的某个地址。所以这一层主要负责寻址和路由选择
数据链路层 负责物理层面上互联、节点之间的通讯传输。例如与1 个以太网相连的2个节点之间的通讯
物理层 负责 0、1鼻涕流与电压的高低,光的闪灭之间的互换

网络层与传输层的关系: 在不一样的网络体系结构下,网络层有时也不能保证数据的可达性。例如 在至关于TCP\IP 网络层的IP协议中,就不能保证数据必定会发送到对端地址。所以,数据传送过程当中出现数据丢失、顺序混乱等问题可能性会大大增长。像这样的没有可靠性传输要求的网络层中,能够有传输层负责提供“正确传输数据的处理” TCP/IP中,网路层与传输层相互协作以确保数据包可以传送到世界各地,实现可靠传输。网络

五 TCP/IP 中的 OSI

      从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP与IP两种协议。实际生活当中有时也确实是指着两种协议。而后再不少状况下,他只是利用了IP进行通讯时所必须用到的协议群的统称。具体来讲,IP或ICMP、TCP与UDP 、HTTP等等都属于TCP/IP的协议。他们与TCP或IP的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,所以,有时也称TCP/IP 为国际协议族。架构

      咱们上边写到的OSI参考模型中各个分层的做用,TCP/IP 诞生以来的各类协议其实也能对应到OSI参考模型中。以下图 模块化

image.png

5.1 硬件(物理层)

      TCP/IP 的最底层是负责数据传输的硬件。这种硬件就至关于以太网或电话线路等物理层的设备。关于他的内容一直没法统必定义。由于只要人们在物理层面上所使用的传输媒介不一样,网络的宽带、可靠性、安全性、延迟等都会有所不一样,而在这些方面又没有一个既定的标准。总之,TCP/IP 是在网络互连的设备之间可以通讯的前提下才被提出的协议。性能

5.2 网络接口层(数据链路层)

      网络接口层利用以太网中的数据链路层进行通讯,所以属于接口层。也就是说把它当作 NIC 起做用的 “驱动程序”也无妨。驱动程序是在操做系统与硬件之间起桥梁做用的软件。计算机的外围附加设备或扩展卡,不是直接插到电脑上或电脑的扩展槽上就能立刻使用的,还须要响应的驱动程序的支持。例如换了一个NIC网卡,不只须要硬件,还须要软件才能真正投入使用。所以,人们经常还须要在操做系统的基础上安装一些驱动软件以便使用这些附加硬件。编码

5.3 互联网层(网络层)

      互联网层使用IP协议,它至关于OSI 模型中的第三层网络层。IP协议基于IP地址转发分包数据。       TCP/IP 协议 分层中的互联网层与传输层的功能一般有操做系统提供。尤为是路由器,他必须实现经过互联网层转发分组数据包的功能。此外 连接互联网的全部主机跟路由器必须实现IP的功能。其余连接互联网的网络设备就不必必定实现IP或TCP的功能。       IP 是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP协议使数据可以发送到地球的另外一端,这期间他使用IP 地址做为主机的标识。 IP还隐藏着数据链路层的功能。 经过IP 相互通讯的主机之间不论通过怎样的底层数据链路都能实现通讯。 虽然IP 也是分组交换的一种协议,可是他不具备重发机制。即便分组数据包未能到达对端主机也不会重发。所以 属于非可靠传输协议spa

5.4 传输层

      TCP/IP 的传输层有两个具备表明性的协议。该层的功能自己与OSI 参考模型中的传输层相似。       传输层最主要的功能就是可以让应用程序之间实现通讯。计算机内部,一般同一时间运行着多个程序。为此 必须分清是哪些程序与哪些程序 在进行通讯。识别 这些应用程序的是端口号

  • TCP       TCP 是一种 面向有连接的传输层协议。他能够保证两端通讯主机之间的通讯可达。 TCP 可以正确处理在传输过程当中丢包、传输顺序乱掉等异常状况。 此外,TCP 还可以 有效利用宽带,缓解网络拥堵。 然而为了 创建与断开链接,有时他须要至少7次的发包收包,致使网络流量的浪费。此外 为了提升网络的利用率,TCP 协议中 定义了各类各样复杂的规范,所以不利于视频会议等场合使用。
  • UDP       UDP 有别于TCP, 他是一种面向无链接的传输层协议,UDP 不会关注对端是否真的收到传送过去的数据, 若是须要检查对端是否收到分组数据包,或者对端是否链接到网络,则须要在应用程序中实现。 UDP 经常使用于分组数据较少或多播、广通播信以及视频通讯等多媒体领域。
5.5 应用层(会话层以上的分层)

      TCP/IP 的分层中,将OSI 参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。这些功能有时由一个单一的程序实现,有时也可能会由多个程序实现。所以 细看TCP/IP 的应用程序功能会实现,他不只实现OSI模型中应用层的内容,还要实现会话层与表示层的功能。       TCP/IP 应用的架构绝大多数属于客户端/服务端模型。提供服务的程序叫服务端,接受服务的程序叫客户端。在这种通讯模式中, 提供服务的程序会预先被部署在主机上,等待接收任什么时候刻客户可能发送的请求。客户端能够随时发送请求给服务端, 有时服务端 可能会处理异常、超出负载等状况,这时客户端能够在等待片刻后重发一次请求。       浏览器与服务端之间通讯所用的协议是HTTP。所传输的数据的主要格式是HTML,WWW中的HTTP属于OSI应用层的协议, 而HTML 属于表示层。

六 TCP分层模型与 通讯示例。

TCP/IP 到底若是在媒介上进行传输的呢

6.1 数据包首部

      每一个分层中都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。一般,为协议提供的信息为包首部,所要发送的内容为数据。如图,在下一层的角度看,从上一分层收到的包所有都被认为是本层的数据。

image.png

6.2 发动数据包

      从TCP/IP 通讯上看,甲给乙发送一封邮件, 咱们用过这个例子来降价一个TCP/IP 通讯的过程。

  • ① 应用程序处理       启动应用程序新建邮件,而后点击发送按钮就开始TCP/IP 的通讯了。 首先,应用程序会进行编码处理。编码转化后,应用在发送邮件的那一刻创建TCP/IP 连接, 从而利用这个TCP 连接发送数据。她的过程首先是将应用的数据发送给下一层的TCP,在作实际的转发处理。
  • ② TCP模块的处理       TCP根据应用的指示,负责创建连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输。 为了实现TCP的这一个功能,须要在应用层的数据的前端附加一个TCP首部。TCP首部包括源端口号和目标端口号、序号以及校验和。随后将附加了TCP首部的包在发送给IP
  • ③ IP模块的处理       IP将TCP传过来的TCP首部和TCP 数据合起来当作本身的数据,并在TCP首部的前端在加上本身的IP首部。所以,IP数据包中IP首部后面紧跟着TCP首部,而后才是应用的数据首部和数据自己。IP首部中包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面数据是TCP仍是UDP的信息。       IP包生成后,参考路由控制表决定接受此IP包的路由或主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正的发送数据。       若是尚不知道接收端的MAC地址,能够利用ARP查找,只要知道了对端的MAC地址,就能够将MAC地址和IP地址交给以太网的驱动程序,实现数据传输
  • ④ 网络接口的处理       从IP传过来的IP包,对于以太网驱动来讲不过就是数据。给这些数据附加上以太网首部并进行发送处理。以太网首部中包含接收端的MAC地址、发送端MAC地址以及标志以太网类型的数据的协议。根据以上信息产生的以太网数据包将经过物理层传输给接收端。发送处理中的FCS 由硬件计算, 添加到包的最后。设置FCS的目的是为了判断数据包是否因为噪声而被破坏。

TCP/IP 各层对邮件的收发处理.png

6.3 通过数据链路的包

分层中包的结构.png

      分组数据包通过以太网的数据链路时的大体流程如上图,不过该图对各个包首部作了简化。       包流动的时,从前日后依次被附加了以太网首部、IP包首部、TCP包首部以及应用本身的包首部和数据。而包的最后则追加了以太网包尾。       每一个包首部中至少都会包含两个信息:一个是发送端和接收端,另外一个是上一层的协议类型。       通过每一个协议分层时,都必须有识别包发送端和接收端的信息。以太网会用MAC地址,IP会用IP地址,而TCP/UDP 则会用端口号做为识别两端主机的地址。即便是在应用程序中,像电子邮件地址这样的信息也是一种地址标识。这些地址信息都在每一个包经由各个分层,附加到协议对应的包首部里边。       此外,每一个分层的包首部中还包含一个识别位,它是用来标识上一层协议的种类信息,例如 以太网的包首部中的以太网类型,IP 中的协议类型以及TCP/UDP 中的两个端口的端口号等都起着识别协议类型的做用。

6.4 数据包接收处理

包的接收流程是发送流程的逆序过程

  • ⑤ 网络接口的处理       主机收到以太网包之后,首先从以太网的包首部找到MAC 地址判断是否为发给本身的包,若是接收到的包切好是发给本身的包,就查找以太网包首部中的类型域从而肯定以太网协议所传送过来的数据。在这个例子中数据类型显然是IP包,由于再将数据传给处理IP的子程序。
  • ⑥ IP模块的处理       IP模块收到IP包首部及后面的数据部分之后,也作相似的处理。若是判断的出包首部中的IP地址与本身的IP地址匹配,则可接受数据并从中查找上一层的协议。若是上一层是TCP就将IP包首部以后的部分传给TCP处理;若是是UDP则将IP包首部后面的部分传给UDP处理。对于有路由器的状况下,接收端地址每每不是本身的地址,此时,须要借助路由控制表,在调查应该送达的主机或路由器之后再转发数据
  • ⑦ TCP模块的处理 在TCP模块中,首先会计算一下校验和,判断数据是否被破坏。最后检查是否按照序号接收数据。最后检查端口号,肯定具体的应用程序。数据接收完毕后,接收端则发送一个“确认回执”给发送单。数据被完整的接收之后,会传给由端口号识别的应用程序。
  • ⑧ 应用程序的处理       接收端应用程序会直接接收发送端发送的数据。经过解析数据能够得到邮件的收件人地址是乙的地址。若是主机B上没有乙的邮件信箱,那么主机B返回给发送端一个“无效收件地址”的报错信息。       但在这个例子中,主机B上刚好有乙的收件箱,因此主机B和收件人乙可以收到电子邮件的正文。邮件会被保存到本机的硬盘上。若是保存也能正常进行,那么接收端会返回一个“处理正常”的回执给发送端。反之,一旦出现磁盘满、邮件未能保存成功等问题,就会发送一个处理异常的的回执给发送端。
相关文章
相关标签/搜索