ardupilot开发 --- 网络技术综述 篇

不信人间有白头

一些概念

  • 以太网、局域网、互联网

    • 以太网 (Ethernet),是一种局域网有线连接的实现方式。以太网是一种有线网络技术,传输介质包括:以太网电缆,如常见的双绞线、光纤等。根据传输速度,可以氛围10兆以太网、百兆以太网和千兆以太网。 
           

    • 局域网 (LAN,Local Area Network),是指在某一个区域内由多台计算机互联成的计算机组。局域网可以实现文件管理、应用软件共享、打印机共享等。局域网的类型很多,若按传输介质分类,可分为有线局域网和无线局域网;若按网络拓扑结构分类,可分为总线型、星型、环型、树型、混合型等;若按传输介质所使用的访问控制方法分类,又可分为以太网、令牌环网、FDDI网和无线局域网等。

    • 互联网 (Internet,又称广域网),指的是通过TCP/IP协议族相互连接在一起的N个局域网的统称。

    • 总结
      互联网 = N个互联的局域网。
      局域网 = ( 有线局域网 | 无线局域网 ) +TCP/IP协议。
      以太网 = 凭借交换机、路由器、双绞线(网线)、光纤实现有线局域网的一种方式。

  • 有线网络、无线网络、移动通信网络(4g | 5g)
    有线网络技术:如以太网;
    无线网络技术:如 wifi、热点、4 | 5 G 蜂窝数据等;
    移动通信网络技术、使移动终端接入互联网:如 2G | 3G | 4G | 5G 蜂窝网络(移动网络)技术。

  • 网络传输协议
    TCP/IP 是互联网相关的各类协议族的总称,它以两个原始协议:传输控制协议(TCP)和 Internet 协议(IP)来命名。比如:TCP,UDP,HTTP、MQTT、RTSP、FTP、SSH等都属于 TCP/IP 族内的协议。TCP/IP 模型是互联网的基础,它可以划分为四层,分别为链路层、网络层、传输层和应用层。

  • 网卡、网络适配器
    网络适配器(network adapter),俗称网卡,是终端用来连接网络(以太网、wifi局域网、4g无线网络等)的实体设备。网卡可分为有线网卡、无线网卡、无线上网卡(如4g无线网卡)、虚拟网卡。

    • 有线网卡
      用于连接以太网,通过双绞网线、光纤。
            
    • 无线网卡
      需要配合路由器wifi、AP、热点使用才能连接网络。
            
    • 4g无线网卡(无线上网卡)
      需要配合网络运营商的sim卡使用。
            
    • 虚拟网卡
      虚拟网卡是通过软件模拟出来的网卡。
      如向日葵远程、VPN软件等都还是通过创建虚拟网卡来在互联网上实现私有网络互联。

VPN 技术

VPN即虚拟专用网络。

待续...

多网络适配器的路由优先级

当电脑安装并连接了多个网络适配器后,例如同时连接了有线网络适配器、无线网络适配器、虚拟网络适配器,优先级合格路由规则是怎么样的呢?

待续...

TCP与UDP

基本概念

  • 网络模型

  • IP地址:使用IP地址来描述网络上一个设备所在的位置。

  • 端口号:区分一个主机上不同的应用程序,端口就相当于在一个大的宿舍楼里面通过宿舍门牌号去区分每个宿舍。一个进程可以绑定多个端口号,一个端口号不能被多个进程所绑定。我们把进程想象成房间,把端口号想象成进入房间的门,是不是就可以具象化的理解了。

  • 数据传输的可靠性
    可靠传输 :就是能够知晓报文是否成功传输到目标主机(传输失败的时要求重新发送)。
    不可靠传输:就是无法确认报文是否成功传输到目标主机,无法判断是否丢包。

  • 有连接和无连接

    TCP是面向连接的通讯;

    UDP是无连接的通讯;

    有连接和无连接可以比作打电话发短信

    打电话需要对方接通你的拨号,双发才能正常通讯;

    发短信只需要知道对方的电话号码(IP和端口),就可以给对方发送消息!

  • TCP与UDP比较

UDP

  • 类似于飞鸽传书
        
  • ⽆连接:知道对端的IP和端⼝号就直接进⾏传输,不需要建⽴连接。
  • 不可靠:没有确认机制,没有重传机制,报文发送之后无法得知是否安全到达。
  • 快速但不可靠
    UDP传输速度快效率,但不保证到达。也就是说UDP尽最大努力交付,但不保证可靠。
  • 双工性
    UDP支持一对一、一对多、多对一和多对多的交互通信。简单来说就是UDP提供了单播,多播,广播的功能。
  • 应用场景
    UDP 最适合需要速度快和效率高的应用场景,如:
    • 即时通讯QQ,微信等
    • 媒体流,如RTSP视频流推送、
    • 现场直播
    • 线上游戏
    • 域名系统(DNS)
    • 互联网协议语音(VoIP)
    • 普通文件传输协议(TFTP)
  • 客户端和服务器
    在UDP通讯中,什么是客户端?什么又是服务端(服务器)?
    UDP支持一对一、一对多、多对一和多对多的交互通信。简单来说就是UDP提供了单播,多播,广播的功能。
    在一对一情况下,没有所谓的客户端、服务器。
    在一对多、多对多情况下才有所谓的客户端、服务器。

    这种情况下:
    服务器在创建UDP套接字时需要绑定一个固定的端口,以便告知所有客户端要往服务器的哪个端口发送报文。
    而客户端在创建UDP套接字时可以选择绑定固定端口,也可以不绑定固定端口(如果不指定端口,操作系统会自动分配一个临时端口,因为这样可以避免端口冲突)。绑定不绑定固定端口这要看使用场景:
    • 假如客户端只需要 往服务器不断地发送报文数据,而不需要监听(接收)服务器发来的信息,这时客户端就可以不用绑定固定端口,不绑定的好处就是操作系统会自动分配一个临时端口,这样可以避免端口冲突。
    • 假如客户端不仅需要 往服务器不断地发送报文数据,还需要监听(接收)服务器发来的信息,这时客户端就必须绑定一个固定端口,以便告知服务器该往哪个端口发送数据,以便客户端自己知晓应该监听哪个端口来接收服务器发来的数据。

TCP

  • TCP是一种面向连接的协议,它在传输数据之前会建立一条专用的通信连接。

  • TCP 是一对一的两点服务,即一条连接只有两个端点,请求连接者叫客户端,应答者叫服务端。

  • TCP最核心的机制就是可靠 传输,而实现可靠传输需要依靠确认应答机制 来实现,其中超时重传是对确认应答的重要补充。

  • 使用场景
    TCP 最适合用于对时序不太关心的,且要求高可靠性的应用场景,如:

    • 万维网(HTTP,HTTPS)
    • 安全外壳(SSH)
    • 文件传输协议(FTP)
    • 电子邮件(SMTP,IMAP / POP)
  • 确认应答机制

  • 超时重传

  • 建立连接
    建立连接:三次握手;
    握手:发送一个不含业务数据的数据报,不起到任何业务的作用,只是建立连接。
    通过三次握手,来确认通信双方的接收和发送功能都是正常的:

  • 断开连接
    断开连接:四次挥手;
    客户端和服务端都可以先发起结束报文(FIN);

  • 客户端和服务端
    在TCP通讯中,什么是客户端?什么又是服务端(服务器)?
    TCP 是一对一的两点服务,即一条连接只有两个端点,请求连接者叫客户端,应答者叫服务端。

  • 编程流程

    • 服务器端流程
      (1)创建套接字(socket):使用socket()函数创建一个套接字,指定使用的协议族(如IPv4或IPv6)和socket类型(如流式socket)。
      (2)绑定套接字(bind):使用bind()函数将套接字与服务器的网络信息(如IP地址和端口号)进行绑定。
      (3)监听套接字(listen):使用listen()函数将套接字设置为监听状态,准备接收客户端的连接请求。
      (4)接受连接(accept):使用accept()函数阻塞等待客户端的连接请求,并返回一个新的套接字用于与该客户端进行通信。
      (5)进行通信(recv/send):使用recv()和send()函数与客户端进行数据的接收和发送。
      (6)关闭套接字(close):通信完成后,使用close()函数关闭套接字,释放资源。
    • 客户端流程
      (1)创建套接字(socket):与服务器端相同,使用socket()函数创建一个套接字。
      (2)连接服务器(connect):使用connect()函数向服务器发起连接请求,指定服务器的IP地址和端口号。
      (3)进行通信(send/recv):连接建立后,使用send()和recv()函数与服务器进行数据的发送和接收。
      (4)关闭套接字(close):通信完成后,使用close()函数关闭套接字,释放资源。

参考文献

【1】https://www.zhihu.com/question/511508659

【2】https://www.baidu.com

【3】https://www.zhihu.com/question/47378601/answer/2619299969

【4】https://blog.csdn.net/weixin_74352792/article/details/132290577

【5】https://baijiahao.baidu.com/s?id=1804433546891915309&wfr=spider&for=pc

【6】https://blog.csdn.net/BEIFEN13/article/details/138476360

【7】https://zhuanlan.zhihu.com/p/160910050

【8】https://zhuanlan.zhihu.com/p/460331076

相关推荐
干了这碗汤25 天前
ardupilot开发 --- C嘎嘎 篇
ardupilot
EmotionFlying1 个月前
(24)(24.2) Minim OSD快速安装指南(二)
外设硬件·copter·ardupilot
干了这碗汤1 个月前
ardupilot开发 --- Rpanion-server 篇
ardupilot
EmotionFlying1 个月前
(40)温度传感器
外设硬件·copter·ardupilot
lida20032 个月前
ArduPilot开源代码之AP_DAL_RangeFinder
c++·开源·ardupilot
lida20032 个月前
ArduPilot开源代码之OpticalFlow_backend
c++·开源·ardupilot
EmotionFlying2 个月前
(19)夹钳(用于送货)
外设硬件·copter·ardupilot
EmotionFlying3 个月前
(13)DroneCAN 适配器节点(一)
外设硬件·copter·ardupilot
干了这碗汤3 个月前
ardupilot开发 --- RTSP视频流 篇
ardupilot