tcp 组播_深入了解TCP/IP协议

TCP/IP协议网络上类似的科普知识很多,博主针对一些资料做了下整理,加入了自己的一些理解和观点。主要还是针对新人教程,结构比较清晰,有一定学习价值。

下面进入主题,我们知道现在互联网协议是经过分层的,根据国际标准化组织ISO于1984年提出的开放系统互联参考模型,也就是现在的OSI参考模型。为了简化相关网络操作,促进标准化工作,针对网络结构上进行了分层,也便人们学习和操作,下面依次介绍OSI和TCP/IP两种模型协议具体功能和区别,以及数据传输流程原理是怎样的: 

7b367dd0d5caff92b07d8fb45047ae6b.png 27ff6b56e8e2e7932a176139b2ba62f8.png

分层模型 1、OSI参考模型

e789d795e6f5bab377303ef6de23e630.png

1)物理层:在设备之间传输比特流, 常用的物理层传输介质有网线、双绞线、同轴电缆、光纤等。

2)数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。

3)网络层:提供逻辑地址,供路由器确定路径。 

4)传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。
5)会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
6)表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
7)应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。 

2、TCP/IP参考模型

3614257cc0a9a93718c1d88b74f70a51.png

1)TCP/IP模型同样采用了分层结构,层与层相对独立但是相互之间也具备非常密切的协作关系。

2)TCP/IP模型将网络分为四层。TCP/IP模型不关注底层物理介质,主要关注终端之间的逻辑数据流转发。

3)TCP/IP模型的核心是网络层和传输层:网络层解决网络之间的逻辑转发问题,传输层保证源端到目的端之间的可靠传输。最上层的应用层通过各种协议向终端用户提供业务应用。   

3、OSI与TCP/IP模型对应关系

5c812286a92487ebbe2881f187049d0d.png

各层包含协议范围如下图所示:

0591db8132ab9f20ec59af8d726eddc9.png

b3694c11035c1f4bb5da6eee70b989ce.gif

数据传输过程了解了OSI和TCP/IP模型和功能后,再来讲一下数据传输过程,看看数据是如何通过这些分层模型,在互联网中进行传输。

我们在网络中传输数据,一般以自上而下由应用层到物理层,这个过程我们称作为数据封装过程,自下而上由物理层到应用层,这个过程我们称作为数据解封装过程,其中每层模型都分别扮演这它的角色和功能,下面我将用图文方式带大家具体了解下: 

1、数据封装流程

c06940705945d4a3d03c9b0d8068cf6e.png

1、数据封装过程,我们先来做个假设以发送方来举例,发送一个QQ消息首先到达应用层,由应用进行封装格式,然后下发到传输层。

2、到达传输层后,传输层会在上层数据基础上,封装一个TCP头部报文,继续打包下发。

3、数据到达网络层,网络层会在上层数据基础上,再封装一个IP头部报文,然后继续打包下发。

4、数据到达数据链路层,数据链路层会在上层数据基础上,再封装一个MAC头部报文,然后继续打包下发。

5、最终数据到达物理层,通过比特电信号将数据发送到网络中,整个数据封装过程结束。  

2、数据解封装流程

f643eac87f3ccca51e8af27c84735bce.png

1、数据解封装正好相反,接收方接收数据,首先物理层通过电信号接收到数据,并将数据发送到数据链路层。

2、数据链路层查看数据包封装格式,拆掉链路层的MAC头部报文信息然后将数据继续向上层发送。

3、数据到达网络层,网络层查看数据包格式,发现有IP头部,去掉头部信息然后将数据继续向上发送。

4、数据到达传输层,同理传输层查看有TCP头部信息,去掉头部信息后将数据发送到应用层。

5、应用层接收到数据,并将数据发送给应用程序,最终用户接收到QQ消息信息,整个数据包解封装过程完成。 

3、PDU数据传输单元我们知道每一层数据都会进行封装与解封装,我们将每一层数据包传输格式,称为数据传输单元,俗称PDU,也就是我们经常听到的,数据包、数据帧、比特流这些,下面我附上一张图详细说明每一层数据具体名称:    

575ea3cbfb7f31629a389b841282e4e4.png

这里我们只需要了解每层格式分类及名称含义即可,下面将具体列出每个协议单元具体功能和作用:

1、比特流:物理链路传输的0、1比特流。

2、数据帧:就是数据链路层的协议数据单元,它包括三部分:帧头,数据部分,帧尾。

3、数据包:在包交换网络里,单个消息被划分为多个数据块,这些数据块称为包,它包含发送者和接收者的地址信息。这些包然后沿着不同的路径在一个或多个网络中传输,并且在目的地重新组合。

4、数据段:这里特指传输层的PDU,也即传输层传给网络层的PDU。数据流被分割成小块,传输层报头被创建并放在数据字段前面的报头中,此时的数据块称为数据段。用这个报头进行在接收端对数据段进行排序。传输层PDU。

5、报文或消息:这部分主要是应用层作为补充,网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。应用层的数据块。报文也是网络传输的单位,传输过程中会不断的封装成分组、包、帧来传输,封装的方式就是添加一些信息段,那些就是报文头以一定格式组织起来的数据。传输层实现报文交付。我们将位于应用层的信息分组称为报文。 

4、设备与层的对应关系最后我们再了解一下每一层都分别对应着哪些设备,直接上图:

7170b254ca4a5d0ae70de2b9ffb081fd.png

这部分了解一下就可以了,知道每层对应的设备是什么,一般我们说二层交换机、三层交换机,对应的就是设备与层的关系,也就限定了设备的作用范围。 5、终端之间通讯
  • 以太网MAC地址

我们知道MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配,

以太网在二层链路上通过MAC地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。发送端使用接收端的MAC地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。

如下图所示:

aa2069a90778d9589e928388e5b7bdf2.png

如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。MAC地址长度为48比特,通常用十六进制表示。MAC地址包含两部分:前24比特是组织唯一标识符OUI,由IEEE统一分配给设备制造商。

  • 数据帧传输

ae8c4d555f8f419af42422579d22d384.png

数据包在以太网物理介质上传播之前必须封装头部和尾部信息。封装后的数据包称为数据帧,数据帧中封装的信息决定了数据如何传输。

Ethernet_II的帧中各字段说明如下:

1、D.MAC(Destination MAC)是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者。

2、S.MAC(Source MAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者。 

3、类型字段(Type)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为0x0800的帧代表IP协议帧;类型字段取值为0806的帧代表ARP协议帧。

4、数据字段(Data)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节。

5、循环冗余校验字段(FCS)提供了一种错误检测机制。该字段长度为4个字节。

数据帧传播方式可分为三种: 

1、单播

0c5626038d46c76328bb5b84610df447.png

指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。

在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。 

2、广播

6d372de387855631b02cab11731cf0a1.png

第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF,所有收到该广播帧的主机都要接收并处理这个帧。

广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。

当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。 

3、组播

f4e98ce53fbee8f8296af426d831898e.png

第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。

组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。

当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下,通常会使用组播方式。

4、发送与接收

当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。

帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。

如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。 

总结我们分别了解了OSI和TCP/IP模型,知道了层的概念和每层的具体功能和作用,此外我们学习了数据在网络中传输过程以及如何通过分层来细化和规范传输流程。整个数据封装和解封装逻辑很清晰,数据传输的每一层都掌握一种封装报文的格式,并且在数据发送和接收时候会对自己所在报文类型进行封装与解封装操作,再深入一点就是每层报文封装格式,这部分内容我们留到后面分享,博主会在后面做协议文案时候,专门写一篇汇总文章,将我们常见的协议进行汇总讲解,并结合实际工作中使用情况着重讲解一些日常中用的比较多的协议报文使用与解析。今天的内容就分享到这里了,如果教程对你有帮助,麻烦给博主点个赞支持一下,当然如果有任何问题也可以在评论区留言,博主会尽可能的进行解答,也欢迎大家指正问题和不足地方,博主会不断优化改进,争取将最好的作品分享给大家。  b3694c11035c1f4bb5da6eee70b989ce.gif

12bd09470df17b6ec12b453c0909d7ea.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值