首页/文章/ 详情

Socket和TCP、UDP究竟是什么关系?

1年前浏览324

这个标题有点唬人。


几个通信领域的专业名词,和自动驾驶仿真能有什么关系?

还真有。


这得从自动驾驶仿真界鼎鼎大名的软件-VTD-说起了。这个软件非常考验使用者对于整个仿真计算流程的理解,使用者首先需要知道该软件的整体框架,使用中也得随时准备徒手敲代码,遇到问题debug时脑海里要时刻演练数据流通的奥义。这个数据的流通,就是标题背后的故事了。


如果把VTD比喻为一本武林秘籍,那么修炼者要修炼好它,掌握数据的流通,就像疏导筋脉中的内力一样,走上七七好多个大周天,最终收于丹田(TaskControl),当修炼者需要打出一个招式(功能),那么首先需要的就是将内力(数据)导向某一个身体部位(进程)。这里面,内力(数据)从丹田(TaskCtrol)导向手脚(进程),都是需要特定的修炼手法(通信协议)的,稍有不适,就会走火入魔(死机)。

--个人理解,谨慎解读



但愿你看懂了,通信的重要性了。


软件中的进程和进程之间,甚至软件和硬件之间,进行通讯,一般都爱采用TCP协议和UDP协议。哎呀,说人话就是一种特殊的数据传输方式而已。

---------------------------

TCP 的全称是Transmission Control Protocol,传输控制协议

  • TCP是面向连接的服务。在传输数据之前必须先建立连接,数据传送介绍后需要释放连接。

  • TCP一般用于文件传输、发送和接收邮件、远程登录等场景。


UDP 的全称是 User Datagram Protocol,用户数据报协议

  • UDP在传送数据之前不需要先建立连接,远程主机在收到UDP报文以后,不需要给出任何确认。

  • 虽然UDP不提供可靠的交付,但在某些情况下UDP确实是一种最有效的工作方式(一般用于即时通讯),比如语音、视频、直播等。

---------------------------

再来看一张图:




看图说话


socket 其实就是操作系统提供给程序员操作「网络协议栈」的接口,说人话就是,你能通过socket 的接口,来控制协议找工作,从而实现网络通信,达到跨主机通信。


协议栈的上半部分有两块,分别是负责收发数据的 TCP 和 UDP 协议,它们俩会接受应用层的委托执行收发数据的操作。


协议栈的下面一半是用 IP 协议控制网络包收发操作,在互联网上传数据时,数据会被切分成一块块的网络包,而将网络包发送给对方的操作就是由 IP 负责的。


此外 IP 中还包括 ICMP 协议和 ARP 协议。

  • ICMP 用于告知网络包传送过程中产生的错误以及各种控制信息。

  • ARP 用于根据 IP 地址查询相应的以太网 MAC 地址。


IP 下面的网卡驱动程序负责控制网卡硬件,而最下面的网卡则负责完成实际的收发操作,也就是对网线中的信号执行发送和接收操作。


最后再来回答下标题的问题:

socket是对TCP/IP协议的封装,它的出现只是使得程序员更方便地使用TCP/IP协议栈而已。socket本身并不是协议,它是应用层与TCP/IP协议族通信的中间软件抽象层,是一组调用接口(TCP/IP网络的API函数)。



本文完。


来源:车路慢慢
通信自动驾驶控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-22
最近编辑:1年前
李慢慢
硕士 自动驾驶仿真工程师一枚
获赞 11粉丝 69文章 122课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈