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

avatar
作者
猴君
阅读量:0

在这里插入图片描述

不信人间有白头

一些概念

  • 以太网、局域网、互联网
    • 以太网(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()函数关闭套接字,释放资源。

回送地址127.x.x.x

回送地址 loopback address,一般使用127.0.0.1。
回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输
因此 127.0.0.1 可以用来表示本地主机( Local host )的IP地址!!

公网、私网、内网、外网

两个隶属不同局域网(私网)的IP如何相互通信

主机A:你家的笔记本,IP:192.168.0.101
主机B:你公司的电脑,IP:192.168.100.61
由于主机A、B处在各自的局域网当中,无法直接通信,无法ping通对方。
私网、局域网中的主机只能直接跟公网IP(服务器)进行通信,例如,主机A、B都可以直接ping通www.baidu.com,但是主机A、B无法互相ping通对方。如果想要实现两个私网内的IP相互通信,那么就要将主机A、B进行私有网络组网,例如使用虚拟组网技术实现,如zerotier或VPN。

内网穿透、异地组网、虚拟组网

异地组网工具:ZeroITier、Tailscale。
https://zhuanlan.zhihu.com/p/711092796

参考文献

【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
【9】公众号“奇妙的Linux世界”的文章《一文带你搞懂公网、私网、内网、外网的区别》

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!