TCPIP协议分层模型(转载)
原⽂链接:juejin.im/post/6844903576930615309
⼀连接⼈与⼈的计算机⽹络
计算机⽹络最初的⽬的是连续⼀个个独⽴的计算机,使他们组成⼀个个更强有⼒的计算环境。简⽽⾔之,就是为了提⾼⽣产⼒。从批处理时代到计算机⽹络时代,⽏庸置疑,都体现了这⼀⽬的。然⽽,现在却似乎有了微妙的变化。现代计算机⽹络的⾸要⽬的之⼀,可以说是链接⼈与⼈。置⾝于世界各地的⼈们可以通过⽹络建⽴联系、相互沟通、交流思想在计算机⽹络与信息通信领域⾥,⼈们经常提怎么查自己的ip
及“协议”⼀词。互联⽹中常⽤的具有代表性的协议有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, 互联⽹、局域⽹
IPX/SPX IPX,SPX, 个⼈电脑局域⽹
AppleTalk DDP、RTMP、AEP、ATP、ZIP苹果公司现有产品的局域⽹
OSI FTAM,MOTIS, VT,---
XNS IDP、SPP、施乐公司⽹络
⼆ CPU 与 OS
CPU ⼜叫中央处理器。它如同⼀台计算机的⼼脏,每个程序实际上都由他调度执⾏的。 CPU的性能很⼤程度上也决定着⼀台计算机的处理性能。因此⼈们常说计算机的发展史实际上就是CPU的发展史。⽬前⼈们常⽤的CPU有 Intel Core、 Intela Tom以及 ARM Cortex 等产品 OS 译作操作系统,是⼀种基础软件。它集合了CPU管理,内存管理、计算机外围设备管理以及程序运⾏管理等重要功能,⼀个CPU通常在同⼀时间只能运⾏⼀个程序。为了让多个程序同时执⾏,操作系统采⽤ CPU时间⽚轮转机制,在多个程序之间进⾏切换,合理调度。这种⽅式叫做多任务调度。
三协议的分层
OSI 参考模型中,将通信协议中必要的功能分成了7层。通过这些分层,使得那些⽐较复杂的⽹络协议
更加简单化。这⼀模型中,每个分层都接受由他下⼀层所提供的特定服务,并且负责为⾃⼰的上⼀层提供特定的服务。上下层之间进⾏交互时所遵循的约定叫做“接⼝”。同⼀层之间的交互所遵循的约定叫做“协议”。协议分层就如同计算机软件中的模块化开发。OSI 参考模型的建议是⽐较理想化的。他希望实现从第⼀层到第七次的模块,并将它们组合起来实现⽹络通信。分层可以将每个分层独⽴使⽤,即使系统中某些分层发⽣变化,也不会波及整个系统。因此可以构建⼀个扩展性和灵活性都很强的系统。通过分层能够细分通信功能,更易于单独实现每个分层的协议,并界定每个分层的具体责任和义务。这些都属于分层的优点。⽽分层的劣势可能就在于过分模块化,是处理变得更加沉重以及每个模块都不得不实现相似的处理逻辑等问题
四 OSI参考模型
OSI参考模型将这样⼀个复杂的协议整理并分为了易于理解的七层分层
分层
名称
功能
应⽤
层
为应⽤程序提供服务并规定应⽤程序中通信相关的细节
表⽰层将应⽤层处理的信息转换为适合⽹络传输的格式,或将来⾃下⼀层的数据转换为上层能够处理的格式。因此它主要负责数据格式的转换。具体来说,就是将设备固有的数据抓换为⽹络标准传输格式。不同的设备对同⼀⽐特流解释的结果可能不同。因此,使他们保持⼀致是这⼀层的主要作⽤
会话
层
负责建⽴和断开通信连接(数据流动的逻辑通路)以及数据的分割等数据传输相关的管理
传输
层
起着可靠传输的作⽤,只在通信双⽅结点上进⾏处理,⽽⽆需在路由器上处理
⽹络
层
将数据传输到⽬标地址。⽬标地址可以是多个⽹络通过路由器连接⽽成的某个地址。因此这⼀层主要负责寻址和路由选择数据
链路
层
负责物理层⾯上互联、节点之间的通信传输。例如与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参考模型中。如下图
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 也是分组交换的⼀种协议,但是他不具有重发机制。即使分组数据包未能到达对端主机也不会重发。因此属于⾮可靠传输协议
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 数据包⾸部
每个分层中都会对所发送的数据附加⼀个⾸部,在这个⾸部中包含了该层必要的信息,如发送的⽬标地址以及协议相关信息。通常,为协议提供的信息为包⾸部,所要发送的内容为数据。如图,在下⼀层的⾓度看,从上⼀分层收到的包全部都被认为是本层的数据。
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的⽬的是为了判断数据包是否由于噪声⽽被破坏。
6.3 经过数据链路的包
分组数据包经过以太⽹的数据链路时的⼤致流程如上图,不过该图对各个包⾸部做了简化。包流动的时,
从前往后依次被附加了以太⽹⾸部、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和收件⼈⼄能够收到电⼦邮件的正⽂。邮件会被保存到本机的硬盘上。如果保存也能正常进⾏,那么接收端会返回⼀个“处理正常”的回执给发送端。反之,⼀旦出现磁盘满、邮件未能保存成功等问题,就会发送⼀个处理异常的的回执给发送端。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论