加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

通俗易懂网络协议(IP)

发布时间:2019-06-19 16:32:23 所属栏目:教程 来源:我不想种地
导读:之前写过一篇《通俗易懂TCP/IP(概述)》,广受欢迎和好评,有网友催更,便抽空续写IP章节,回应粉丝期待。 TCP/IP网络模型 TCP/IP网络模型分为4层,自下而上分布为链路层(又叫网络接口层)、网络层、传输层、应用层。 链路层:处理数据在媒介上的表示、传输
副标题[/!--empirenews.page--]

之前写过一篇《通俗易懂TCP/IP(概述)》,广受欢迎和好评,有网友催更,便抽空续写IP章节,回应粉丝期待。

TCP/IP网络模型

TCP/IP网络模型分为4层,自下而上分布为链路层(又叫网络接口层)、网络层、传输层、应用层。

通俗易懂网络协议(IP)

  • 链路层:处理数据在媒介上的表示、传输以及与硬件交互的细节。
  • 网络层:IP层负责IP数据报的路由转发,所有的TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。网络层(IP)提供了一种尽力而为、无连接、不可靠的数据报交付服务,IP负责将IP数据报(又叫分组)放入数据链路层传输,并处理分片和重组逻辑。
  • 传输层:为端主机上运行的应用程序提供端到端服务,包括TCP和UDP。
  • TCP提供了带流量控制、拥塞控制、有序、可靠的流交付,TCP需要处理丢包检测重传、重排序等IP层不处理的问题,TCP面向连接,不保留消息边界。
  • UDP提供的功能基本上没有超越IP,不提供速率控制和差错控制,不保证可靠性,UDP只是提供一套端口号,用于复用、多路分解(即把收到的数据报交给应用层对应程序处理)和校验数据完整性(只检错不纠错),UDP面向非连接,保留消息边界。
  • 应用层:负责处理特定应用的细节,通常应用的实现都是基于TCP/IP或者UDP/IP。应用层与应用细节相关,与网络数据传输无关,而之下的三层(链路层、网络层、传输层)则对应用一无所知,但需要处理通信的细节。

分层&协议对照

OSI七层网络模型和TCP/IP四层网络模型的对应关系如下图,对应层的常用协议也列于表中。

通俗易懂网络协议(IP)

分层的目标是隔离,通过分层实现:下层对上层透明,而上层利用下层提供的能力。

分层的另一个优点是协议复用,这种复用允许多种协议共存于同一基础设施之中,复用可以发生在不同层,并在每层都有不同类型的标识符区分,用于确定信息属于哪个协议。

比如在链路层的数据帧(Frame)有一个协议标识符字段,用来标识链路层帧携带的协议是IP还是ARP;又比如在网络层的IP数据报头部有一个8位协议字段,标识该IP数据报来自于TCP、还是UDP、亦或是ICMP、IGMP...

封装

数据在发送端从上到下经过TCP/IP协议栈,遵循应用层->TCP/UDP->IP->链路层的顺序。

当某层的一个协议数据单元(PDU)对象转换为由底层携带的数据格式表示,这个过程称为在相邻低层的封装,即上层被封装对象作为不透明数据充当底层的Payload部分,封装是层层包裹的过程。

通俗易懂网络协议(IP)

每层都有自己的消息对象(PDU)的概念。

  • TCP层的PDU叫TCP段(segment)
  • UDP层的PDU叫UDP数据报(Datagram)
  • IP层的PDU叫IP数据报(Datagram)
  • 链路层的PDU叫链路层帧(Frame)

封装的本质是将来自上层的数据看成不透明、无须解释的信息,经过本层的处理,在上层PDU的前面加上本层协议的头部,有些协议是增加尾部(链路层),头部用于在发送时复用数据,接收方基于各层封装过程中增加头部中的分解标识符执行分解。

具体到TCP传输数据而言,发送端的数据要经过三次封装。

  • 应用层数据经过TCP层的时候,会增加TCP头部,产生TCP Segment,TCP头部中的端口号是该层的分解标识符。
  • TCP Segment经过IP层的时候,会增加IP头部,产生IP Datagram,IP头部中的协议类型字段是该层的分解标识符。
  • IP分组经过链路层的时候,会增加以太网首部和尾部,产生以太网Frame,帧头部中的以太网类型字段,可用于区分IPv4(0x8000)、IPv6(0x86DD)和ARP(0x0806)。

分用

数据到达接收端(是目的机器),会从下到上经过TCP/IP协议栈,遵循链路层->IP->TCP/UDP->应用层的顺序。

接收端的数据还原也需要经历三次解封。

  • 经过链路层会剥离以太网首尾部,根据以太网类型字段,如果是IP Datagram则交给IP模块。
  • 经过IP层会清除IP头部,根据IP头部中的协议类型字段,交给TCP、UDP或者ICMP、IGMP模块。
  • 经过TCP/UDP层去掉TCP/UDP头部,根据端口号,最终将数据还原取出,并交付给应用程序。

通俗易懂网络协议(IP)

封装发生在发送方,拆封(还原)发生在接收方。

消息边界

应用层将协议携带的数据写入消息,消息边界是两次写入操作之间的位置或字节偏移量。

保留消息边界的协议(UDP)在接收方能获得发送方的消息边界,而不保留消息边界的协议(TCP)在接收方将不能获得发送方的消息边界。

通俗易懂网络协议(IP)

比如发送端通过UDP协议先后发送2个大小分别为100、200字节的消息,接收端通过UDP协议接收数据,将分2次分别接收到100、200字节的消息,但不保证接收100、200消息的先后顺序。

而TCP是数据流协议,如果发送端通过TCP协议先后发送2个大小为100和200字节的消息,接收端会收到300字节数据,但每次接收返回的不一定是100、200字节消息,接收端丢失了发送端的消息边界。

网络地址

IP地址用于IP层,IPv4的IP地址是32位整数,最多可以表示40多亿个IP地址,按8位一字节,则分为4字节,每个字节是一个0~255的无符号整数,所以可以表示为“abc.def.ghi.jkl”的点分十进制格式,也可以表示为32位无符号整数。

点分十进制和无符号32位无符号整数可以很容易换算。

IPv4地址空间分成五大类,A、B、C类用于Internet单播,D类地址供组播使用,E类地址保留。

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读