TypechoJoeTheme

武小栈

武小栈

学习、记录、总结、分享

[技术栈]网络协议1协议栈

2021-02-07
/
0 评论
/
179 阅读
/
正在检测是否收录...
02/07

1.前言

接下来我打算写几篇文章简单的介绍一下我们常用的一些通信协议,当然所有描述都是基于我自己现有了解,肯定会有所纰漏,甚至错误的地方,望各位大佬不吝指正。

2.网络模型介绍

以中移ML302模组为例,在模组部官网中查询到的产品规格中网络协议支持以上这几项,所以以测IPv4,IPv6,TCP,UDP,PPP,FTP,HTTP,NTP,MQTT这八种协议为例说明。

既然要测网络协议,那就先找一个网络协议模型瞧一瞧,个人比较喜欢看五层协议,就找个五层协议说说。

上面这个就是TCP/IP五层模型,不熟悉的也了解过,不了解的也听说过。

IPv4,IPv6这俩位于第3层,网际层

TCP,UDP这俩位于第4层,传输层

PPP位于第2层,网络接口层

FTP,HTTP,NTP,MQTT这四个都位于第5层,应用层

2.通信示例介绍

2.1通信流程

就以我们最耳熟能详的TCP为例来讲讲一次数据的发送和接收发生了什么,总得来说就如下图所示。从用户A操作发送信息开始,经过了协议栈层层“打包”,然后数据终于通过网线传到了用户B处,然后这个数据经过了用户B设备的协议栈层层“拆包”,最终用户B拿到了用户A发送的原内容。

2.2演示方式

图上看着是这样,但是实际上是不是这样呢,眼见为实,这次的演示方式如下:

在B电脑创建TCP SERVER服务,并开启抓包软件进行抓包。
在A电脑创建TCP CLIENT连接B电脑服务。
从A电脑向B电脑发送一段数据。
在B电脑通过抓包软件观测A电脑传过来的数据。

2.3 实例演示

做好环境准备工作,首先通过TCP连接发送36个字节长度的数据,如下图所示

2.3.1 TCP协议

根据上面流程中的描述,我这里点击了“发送”按钮,然后数据被传到传输层,在这里经过TCP协议的加工,给添加上TCP报头,先看一下TCP报头是什么样的。

从图中也可以看到,TCP报头基础长度为20个字节,每个字节代表的含义图中也有相应的说明。详细的可以自己去查阅https://tools.ietf.org/html/rfc793#page-15原文,下表为各字段的简要说明。

看一下抓包软件抓到的数据是不是这样组成的,下面图中蓝色部分的20字节就是TCP(Transmission Control Protocol)报文头,简单的对比一下前面4个字节,看看是不是向上图中所描述的那样。

从TCP报文头说明图中可以看到前面2个字节(16位)是源端口,后面2个字节(16位)是目标端口,前面连个字节是0x1030

用计算器一算就可以得出0x1030正是源端口4144。后面的目标端口也是一样的。

传输层的TCP协议处理完了,根据流程图,接下来就应该把数据传给网络层处理了。

2.3.2 IP协议

同样呢,先看看网络层中IP协议的头部定义描述

可以看到,IP协议头部同样基础长度为20字节。

下图就是抓包的数据,其中蓝色部门的20字节就是IP协议头部,同样我们选取几个字段来对比看看,可以从上图中看到,IP协议头部基础的20个字节长度里,最后8个字节分别为源地址目标地址,就看看抓包数据中最后8个字节是不是原地址和目标地址。

从图中的标注也可以明确的看到,最后8个字节的确分别是源地址和目标地址。

从流程图上来看,下面就应该传到数据链路层,由以太网协议来蹂躏它了。

2.3.3 以太网协议

网络层的事情到现在完成了,然后网络层将IPv4报文传到第2层,数据链路层。

在数据链路层还会将数据再封装一层,这一层会将IP数据包封装成以太帧,如下图所示,这一步的主要目的是加入MAC地址,所以这里记录了当前以太帧需要由网卡发送到哪一个屋里设备上去,在不同的设备或者系统中,这里的帧格式不一定相同。

到了这一层了,自己也不甚了解,就不大言不惭了,这一层已经比较接近物理层了,对于我一个软件开发的来说,基本上难以言传。

总了个之,数据链路层和物理层就是将数据加以处理,使数据能在物理设备中转发后达到指定设备上。

3.后记

其实除了TCP/IP网络协议之外还有很多,基本上各个大厂都出过,比如微软、苹果、思科等等都搞过,不过随着互联网的飞速发展,TCP/IP协议可以说已经应用到了互联网的每一个角落,所以,这里讲述网络协议模型就采取了TCP/IP协议为例。

4.网络协议关系图

4.1 TCP/IP协议关系图

4.2 网络通信协议关系图

网络协议
朗读
赞 · 0
版权属于:

武小栈

本文链接:

https://www.wulinn.com/technology/networkprotocol1.html(转载时请注明本文出处及文章链接)

评论 (0)