TCP/IP是一个协议族,包含众多的协议。例如HTTP、MQTT、FTP等都是其家族中的协议。
1)同步通信
2)单向通信,由客户端向服务端发送数据或请求,无法被动接受服务端的数据。
HTTP协议是Hyper Text Transaction Protocol(超文本传输协议)的缩写,HTTP的应用最为广泛。HTTP协议工作于<客户端-服务端>架构之上,浏览器作为HTTP客户端通过URL向HTTP服务器即WEB服务器发送所有请求。
FTP(File Transfer Protocol)是文件传输协议的简称。FTP是工作在应用层的网络协议。FTP使得主机间可以共享文件,用于在两台设备之间传输的客户端程序,客户端连接到FTP服务端程序,客户端发送指令给FTP服务端程序,服务端执行对应指令。
TCP/IP协议是一个庞大的协议家族,它包括ARP、IP、ICMP、UDP、TCP、DNS、DHCP、HTTP、FTP、MQTT等待。按照功能这些协议可以划分到不同的层次。
物理层(PHY)规定了传输信号所需要的物理电平、介质特征;
链路层(MAC)规定了数据帧能被网卡接受的条件,发送方在即将发送的数据帧中加入接受方网卡的MAC地址,当接收方的网卡监听到属于自己的MAC地址后,才会去接受并处理数据。
每个网络设备都应该有自己的网络地址,网络层规定了主机的网络地址该如何定义,以及如何在网络地址和MAC地址之间进行映射,即ARP协议。网络层实现了数据包在主机之间的传递,而一台主机内部可能运行着多个网络程序,传输层可以区别数据包是属于哪一个应用程序的。 数据包在传输过程中会出现丢包、乱序和重复的现象,网络层并没有提供对这些错误的机制,而传输层可以解决这些问题。
需要发送的应用数据 调用应用层首部 下发给传输层,传输层的TCP协议加上TCP协议首部下发给网络层,网络层加IP协议首部发送给链路层,链路层将数据打乱重新排列,加入以太网首部和校验数据。
在学习这类软件协议的过程中要转变思路,软件协议并不类似与我们常见的通信协议(IIC、SPI等)。虽然都是协议,但是却有所不同。软件协议大多是数据的整理和校验,然后在不同的层加入对应层的数据包,之后再由最下层的硬件发送。这其中必须经历AD\DA的转化,但是嵌入式中用的这类通信协议是由引脚通过电平的反转来实现协议。所以总的来说还是由区别,需要仔细对比。
《[野火]LwIP应用开发实战指南—基于野火 STM32 全系列(M4-M7)开发板》