TCPIP协议⼯作原理和⼯作流程
⽬录
1 什么是TCP/IP?
TCP/IP协议,英⽂全称Transmission Control Protocol/Internet Protocol,包含了⼀系列构成互联⽹基础的⽹络协议,是Internet的核⼼协议。TCP/IP协议是⼀个协议簇,包含了应⽤协议、传输协议、⽹际互联协议和路由控制协议。
应⽤协议:TCP/IP体系中的应⽤层协议,主要包括HTTP(超⽂本传输协议)、SMTP(简单邮件传送协议)、FTP(⽂件传输协议)、TELNET(远程登录协议)、SNMP(简单⽹络管理协议)。
传输协议:TCP/IP体系中的传输层协议,主要包括TCP(传输控制协议)、UDP(⽤户数据报协议)。
⽹际互联协议:TCP/IP体系中的⽹络层协议,主要包括IP(Internet协议)、ARP(地址解析协议)、RARP(逆地址解析协议)、
ICMP(因特⽹控制报⽂协议)、IGMP(因特⽹组管理协议)。
路由控制协议:TCP/IP体系中的链路层协议,分为内部⽹关协议和域间路由协议。内部⽹关协议包括RIP(路由信息协议)、IGRP(内部⽹关路由协议)、EIGRP(增强内部⽹关路由协议)、OSPF(开放式最短路径优先协议)、IS-IS(中间系统到中间系统路由协议)。域间路由协议包括BGP(边界⽹关协议)。
如下图所⽰:
TCP/IP是⼀套⽤于⽹络通信的协议集合或者系统。TCP/IP协议模型就有OSI模型分为7层。但其实⼀般我们所谈到的都是四层的TCP/IP协议栈。
⽹络接⼝层:主要是指⼀些物理层层次的接⼝,⽐如电缆等
⽹络层:提供了独⽴于硬件的逻辑寻址,实现物理地址和逻辑地址的转换。⽹络层协议包括IP协议(⽹际协议),ICMP协议(互联⽹控制报⽂协议),IGMP协议(Internet组协议管理)
传输层:为⽹络提供了流量控制,错误控制和确认服务。传输层有两个互不相同的传输协议:TCP(传输控制协议)、UDP(⽤户数据报协议)
应⽤层:为⽂件传输,⽹络排错和Internet操作提供具体的程序应⽤
2 基本⼯作原理
2.1 TCP/IP协议族中各协议之间的关系
  TCP/IP协议族中有很多协议,这些协议处于不同的层,它们之间的关系如下图所⽰。
  每个应⽤层协议都是为了解决某⼀类应⽤问题⽽定义的,各种应⽤进程就是通过不同的应⽤层协议来使⽤⽹络所提供的服务。图1-4中的应⽤进程代表实现不同应⽤层协议功能的进程。例如,实现⽂件传输协议的FTP应⽤进程可以为⽤户提供计算机之间的⽂件传输服务,实现超⽂本传输协议的HTTP应⽤进程可以为⽤户提供浏览Web⽹页的功能等。
  TCP和UDP是两个传输层协议。⼀般地,应⽤进程可以选择使⽤TCP或者UDP协议。如果应⽤层协
议要求传输层提供可靠的服务,则应该选择TCP协议;否则,如果应⽤层协议要求较⾼的数据传输速率,但是可以容忍⼀定的数据丢失,则可以选择UDP协议。TCP协议的数据单元称为TCP报⽂段或简称TCP段(TCPsegment),UDP协议的数据单元称为UDP数据报(UDPdatagram)。
  IP协议是⽹际层上的⼀个主要协议。TCP和UDP协议都可以直接使⽤IP协议所提供的服务。IP协议的数据传送单位称为IP数据报或IP分组。TCP报⽂段或UDP数据报都可以封装在IP数据报中,以便在互联⽹上传输。除IP协议外,⽹际层还有其他协议,例如ICMP协议⽤于报告差错和其他重要信息;IGMP是多播组管理协议,是⼀个与多播有关的协议;ARP(地址解析协议)和RARP(逆向地址解析协议)⽤于提供ⅡP地址与物理地址的映射功能。IP数据报可以在不同的物理⽹络上进⾏传送。通过以太⽹传送的数据单元称为以太⽹帧,或简称为帧(frame)。tcpip协议pdf
2.2 封装和拆封
  在发送⽅(也称为源主机),当应⽤程序使⽤TCP或UDP传送⽤户数据时,将⽤户数据送⼈TCP/IP协议栈,然后⾃上⽽下地逐个通过每⼀层,直到被当做⼀串⽐特流送⼊⽹络。其中每⼀层对收到的数据都需要增加⼀些⾸部信息,有时还需要增加尾部信息。这些操作过程称为封装,如图所⽰。
  TCP、UDP、ICMP和IGMP等协议都要使⽤IP数据报传送数据,所以必须在IP数据报的⾸部加⼊某种标识,以说明是哪个协议的数据封装到了IP数据报中。IP数据报⾸部定义的⼀个8位的“协议”宇段就是为此⽬的⽽设置的。协议宇段的值为1表⽰ICMP,为2表⽰IGMP,为6表⽰TCP,为17表⽰UDP。
  类似地,许多应⽤进程使⽤TCP或UDP传送数据,则需要在TCP段或UDP数据报⾸部定义⼀个应⽤程序标识符。TCP和UDP都使⽤⼀个16位的端⼝号来标识不同的应⽤程序,TCP和UDP把“源端⼝号”和“⽬的端⼝号”分别存⼈TCP段⾸部和UDP数据报⾸部。⽹络接⼝分别发送和接收IP、ARP、RARP的数据,同理,也必须在以太⽹(假定物理⽹络是⼀个以太⽹)的⾸部加⼊⼀个字段,⽤来说明是
哪个协议的数据。为此,以太⽹帧⾸部定义了⼀个16位的“类型”字段。当接收⽅(也称⽬的主机)收到⼀个以太⽹帧时,数据就开始在协议栈中⾃下⽽上传送。各层协议利⽤报⽂⾸部所携带的协议控制信息做相应的处理,然后去掉各层协议数据单元的⾸部,将封装的数据交给上层协议。每层协议都要检查协议⾸部中的协议标识,以确定让哪⼀个协议接收数据,这个过程称为拆封。下图说明了以太⽹数据帧的拆封过程。
  总⽽⾔之,发送数据时需要⾃上⽽下,层层封装。接收数据时需要⾃下⽽上,层层拆封。
2.3 两个端系统的TCP/IP通信
  两个端系统的通信会涉及不同层的协议。如下图所⽰,主机A和主机B在同⼀个局域⽹(以太⽹)上,两台主机都运⾏实现FTP协议的应⽤进程,它们的通信过程所涉及到的主要协议都标识在下图中。
  主机A主机B⼤多数⽹络应⽤程序都设计成客户—服务器⽅式,客户是服务请求⽅,服务器是服务提供⽅,服务器为客户提供某种服务。例如,FTP服务器允许客户访问FTP服务器所在主机上的⽂件,WWW服务器允许客户(浏览器)访问WWW服务器所在主机上的⽹页,等等。在两个端系统的同⼀层上,双⽅都有对应的⼀个或多个协议进⾏通信。例如传输层利⽤TCP或UDP等进⾏通信,⽹际层利⽤IP进⾏通信。
  上图局域⽹上运⾏FTP的两台主机从前⾯的讲述可知,应⽤进程的数据要经过主机A(源主机)⾃上⽽下的封装,然后在⽹络中传输,最后在主机B(⽬的主机)经过⾃下⽽上的拆封这样复杂的处理过程,才能到达⽬的主机的应⽤进程。但是,对⽤户来说,这些复杂的处理过程都屏蔽掉了,好像是主机A的应⽤进程直接把数据交给了主机B的应⽤进程。同理,我们可以认为,任何两个对等层(peerlayer),例如传输层、⽹际层、⽹络接⼝层之间的通信,如同上图中标识的⼀样,好像是将数据通过⽔平虚线直接传递给对⽅,这就是所谓的对等层之间的通信。实际上,协议就是在两个对等层之间传递数据时的各种规定。由此可以这样认为:实际通信是按垂直⽅向进⾏的,层与层之间经过封装和拆封这样的操作实现物理通信。但是逻辑上,却是在⽔平⽅向上利⽤协议进⾏的对等层通信。在协议的控制下,对等层的通信使得本层能够向上层提供服务。为了实现本层协议,还需要使⽤下⾯⼀层所提供的服务。如果两个端系统不在同⼀个⽹络上,例如它们分别是在路由器连接起来的两个不同的⽹络上,主机A在以太⽹上,主机B在令牌环⽹上,通过⼀个路由器使这两个⽹络连接起来。以太⽹上的任何主机都可以与令牌环⽹上的任何主机进⾏通信,如下图所⽰。
3 ⼯作流程
当HTTP发起⼀个消息请求时,应⽤层、传输层、⽹络层和链路层的相关协议依次对该消息请求附加对应的⾸部,这个⾸部标明了协议应该如何读取数据,最终在链路层⽣成以太⽹数据包,以太⽹数据包通过物理介质传输到⽬的主机,⽬的主机接收到以太⽹数据包以后,再⼀层⼀层采⽤对应的协议进⾏拆包,最后把应⽤层数据交给应⽤程序处理。简单来说,就是"发送请求时,封包,接收数据时,拆包。"
⼯作流程
源主机封包:
1、 应⽤层:源主机将数据向下传输给传输层;
2、 传输层:将数据分组,加上TCP⾸部形成TCP数据段,向下传输给⽹络层;
3、 ⽹络层:给TCP数据段加上源主机、⽬的主机IP⾸部,⽣成IP数据包,向下传输给链路层;
4、 链路层:链路层在其MAC帧的数据部分装上IP数据包,再加上源主机,⽬的主机的MAC地址和帧头,并根据其⽬的的MAC地址,将MAC帧发往⽬的主机或IP路由器;
⽬的主机拆包:
1、 链路层:在⽬的主机,链路层将MAC帧的帧头去掉,并将IP数据包向上传递给⽹络层;
2、 ⽹路层:检查IP报头,如果报头中校验和计算结果不⼀致,则丢弃该IP数据包,若校验和计算结果⼀致,则去掉IP报头,将TCP数据段向上传递给传输层;
3、 传输层:检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据,若正确,则向源主机发送确认信息,若不正确或丢包,则向源主机要求重发信息;
4、 应⽤层:⽬的主机,传输层去掉TCP报头,将排好顺序的分组组成应⽤数据流送给应⽤程序,这样⽬的主机接收到的来⾃源主机的字节流,就像是直接接收来⾃源主机的字节流⼀样。
总结
数据在每层有不同的格式,从上到下依次叫数据段,数据包,数据帧,数据从应⽤层通过协议栈向下传递,每经过⼀层加上对应层协议报头,最后封装成"数据帧"发送到传输介质上,到达路由器或者⽬的主机去掉头部,交付给上层需要者。这⼀过程称为封装,传输,分离,分⽤。
数据段:TCP 数据流中的信息;
数据包:IP 和 UDP 等⽹络层以上的分层中包的单位;
数据帧:数据链路层中包的单位;
4 数据传输全流程
4.0 物理介质
下⾯我们通过⼀张图先来⼤概了解⼀下TCP/IP协议的基本框架:
当通过http发起⼀个请求时,应⽤层、传输层、⽹络层和链路层的相关协议依次对该请求进⾏包装并携带对应的⾸部,最终在链路层⽣成以太⽹数据包,以太⽹数据包通过物理介质传输给对⽅主机,对⽅接收到数据包以后,然后再⼀层⼀层采⽤对应的协议进⾏拆包,最后把应⽤层数据交给应⽤程序处理。
⽹络通信就好⽐送快递,商品外⾯的⼀层层包裹就是各种协议,协议包含了商品信息、收货地址、收件⼈、联系⽅式等,然后还需要配送车、配送站、快递员,商品才能最终到达⽤户⼿中。
⼀般情况下,快递是不能直达的,需要先转发到对应的配送站,然后由配送站再进⾏派件。
配送车就是物理介质,配送站就是⽹关, 快递员就是路由器,收货地址就是IP地址,联系⽅式就是MAC地址。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。