学习嵌入式开发之以太网TCP/IP协议基础知识

yumo66619小时前技术文章7

学习嵌入式开发之以太网TCP/IP协议基础知识

1 引言

在我们生活当中随处都可以见到网络,只需要一根网线我们的电脑就可以上网。那么我们的嵌入式产品是否可以通过网线连接与电脑或者其它设备通讯呢?答案肯定是可以的。这个时候就需要引入我们的以太网了。

2 以太网简介

以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。目前根据传输速度常见的有10Mbps以太网、100Mbps以太网、1Gbps以太网,而我们家庭中目前使用的基本都是100Mbps以太网。(100Mbps/8=12.5MB/s,所以我们的下载的网速说是100M宽带实际只有12.5MB/S左右的下载速度)以太网根据协议的不同可以分为很多种,如本文中讲述的TCP/IP协议、目前比较流行的工业以太网EtherCAT,他们只是传输的协议不同但是物理层都是一样的(电路一样)。TCP/IP协议又下分很多种如:IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等。这里我们只讨论TCP和UDP两种。其以太网报文结构如下图所示:

3 嵌入式实现以太网

以太网的实现一般需要三部分,即:MAC、PHY、TCP/IP协议。

(1)MAC

MAC(Media Access Control)即媒体访问控制子层协议,该协议位于OSI七层协议中的数据链路层,主要负责控制与连接物理层的物理介质。也可以认为它是一个以太网控制器。

(2)PHY

PHY((Physical Layer,PHY))是IEEE802.3中定义的一个标准模块,主要用于收发以太网帧数据(数模转换),MAC通过RMII(简化媒体独立接口)或者MII(媒体独立接口)协议与其交换数据,通过SMI(Serial Manage Interface)协议配置PHY芯片的相关寄存器。属于OSI七层模型中的物理层。

(3)TCP/IP协议

TCP/IP是我们实现以太网协议的主要核心部分,主要用于解析以及封装(打包)以太网数据帧,它处于OSI七层模型中的网络层和传输层。

在我们嵌入式上实现以太网的方案中通常有两种选择。一种是MAC与PHY独立分开的,即MAC和PYH在两个不同的芯片当中,现在很多的ARM芯片都集成了一个或两个MAC因此只需在外部添加一个PHY芯片即可实现,这种方案可以做到传输速率比较高也是最常见的方案例如:STM32的F1/F4/H7都集成了一个MAC控制器,MAC与PHY芯片之间通过RMII或者MII接口进行数据通信,对于100Mbps的以太网采用RMII接口的话需要提供50MHZ的时钟如果采用MII接口的话只需要提供25MHZ的时钟即可;还有一种是MAC和PHY集成在一起例如W5500、DM9000。他们是通过串口或者SPI接口等来与其交换数据,并且W5500是集成了硬件TCP/IP协议栈,即我们只负责配置相关寄存器就可以直接在AMR中读取应用层的数据,不需要在ARM中额外编写移植TCP/IP对以太网帧进行解析。但是这种方式传输的速度没有第一种方式快且灵活。

OSI七层协议模型

1

应用层

2

表示层

3

会话层

4

传输层

5

网络层

6

数据链路层

7

物理层

4 TCP与UDP的区别

TCP与UDP最大的区别在于传输数据的可靠性。

(1)TCP

TCP是一种面向连接的传输,即在传输数据前需要经过三次握手等客户端与服务端建立连接以后才能传输数据,断开时需要经过四次挥手。并且具有超时重传机制(数据传输需要经过确认,固定时间内未确认会重新传输)和心跳检测机制(建立连接后会定时发送心跳帧来判断连接是否断开)等。

TCP还具有客户端和服务端的概念,服务端只能等待客户端的连接而不能主动发起连接,但是建立连接以后双方都是可以主动发送数据的,作为客户端去连接服务端时不仅要设置自己的IP地址和端口号还需要知道服务端的IP地址和端口号。如下图所示:

而作为服务端需要设置自己的IP地址和端口号以便客户端进行连接,通常一个服务端同时支持多个客户端(不同IP或者端口号)的连接,如下图所示:

需要注意的是客户端的IP地址前三段必须一样(同一网段),例如客户端的IP地址为192.168.1.35,那么它只能连接IP地址为192.168.1.x的服务端,其中x的取值范围:1~254。

(2)UDP

UDP是一种不需要建立连接的通信,也没有客户端和服务端的概念,只需要知道对方的IP地址和端口号即可,因此他是一种不可靠的连接,发送数据后无法保证数据可以准确的传输到对方。

在我们实际的应用中通常传输的数据量比较大要求传输速度比较快时采用UDP协议,例如:多播、组播发送时采用UDP协议,当需要传输的数据可靠时通常采用TCP协议例如:我们触摸屏上常用的Modbus TCP协议就是建立在TCP协议的基础上的。

5 总结

本章的内容有点晦涩难懂,大家也不用丧失学习的信心;以太网这块的知识本身就比较难理解并不是一时半会可以掌握的也不是几句话就可以描述清楚的,本篇文章的目的主要是想给大家简单普及一下嵌入式以太网这块的知识并没有讲得太细,如果大家有想要了解更加详细的相关知识可以在评论区留言,如果我有时间且刚好我会的情况下我可以写出来与大家共同探讨学习。

相关文章

终于把TCP/IP 协议讲的明明白白了,再也不怕被问三次握手了

文:涤生_Woo下周就开始和大家成体系的讲hadoop了,里面的每一个模块的技术细节我都会涉及到,希望大家会喜欢。当然了你也可以评论或者留言自己喜欢的技术,还是那句话,希望咱们一起进步。今天周五,讲讲...

TCP/IP协议——IP协议(tcp/ip协议简单易懂总结)

引言IP协议是TCP/IP协议族中最核心的协议,所有的TCP,UDP、ICMP以及IGMP等协议都以IP数据报的格式传输。IP协议提供最好的传输服务,其提供无连接、不可靠的数据传输。或许这句话读起来很...

一文教你了解TCP/IP协议(tcp\ip协议)

又到了金三银四的时间,阿粉也是有点蠢蠢欲动,想要准备面试一下,检验一下自己的工作水平了,于是阿粉就开始了改改简历,然后想着准备面试一下,结果在面试的第一家就遭遇了滑铁卢,直接是凉凉收尾.为什么呢?那就...

TCP/IP协议详解(tcpip协议详解视频教程)

为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。...

TCP/IP协议是网络协议中的核心协议,含三次握手,四次分手

一、网络协议国际标准化组织(International Standard Organization,ISO)公布了开放系统互连参考模型(OSI/RM)。OSI/RM是一种分层的体系结构,参考模型共有7...

关于TCP/IP协议,你必须掌握的这几个知识点

TCP/IP必会的知识点1、什么是TCP/IP?TCP/IP协议并不只有TCP与IP两种协议,而是一个应用于不同网络间信息传输的协议簇,它对网络中各结构层次的通信制定了标准和方法。TCP/IP包含了很...