假期在家无聊,花了半天把这本书浏览了一遍。初看这本书的标题,以为和《21天精通C++》这类书籍差不多。之所以选择读它,一方面是对...
假期在家无聊,花了半天把这本书浏览了一遍。初看这本书的标题,以为和《21天精通C++》这类书籍差不多。
之所以选择读它,一方面是对于TCP/IP协议的兴趣,另一方面是由于当前的工作性质决定。但本着科普的心态阅读,没想到还真从书里收获些许知识点。
我现在做SOMEIP以太网通信协议栈,而SOMEIP协议作为车载以太网应用层通信协议被各大OEM采用。
请注意SOMEIP协议仅仅是以太网应用层协议,学过计算机网络的朋友都知道计算机网络通常分为5层,分别是:物理层、数据链路层、网络层、传输层和应用层。
SOMEIP协议就属于最上层的应用层通信协议
对于计算机网络不熟悉的朋友理解各层网络比较困难,书中列举了处于不同层的设备,方便大家理解,从下到上分别是:
物理层设备:USB扩展器(HUB)
数据链路层设备:二层交换机、电脑网卡
网络层设备:路由器
传输层设备:网关(GateWay)
应用层设备:IVI或TBOX...
此外,书中还介绍了IP地址、子网掩码、网络号、主机号和主机数的概念与计算方法。本文不做详细介绍,有兴趣的朋友可以上网查询或从书中了解。
IP地址类似终端的身份证,子网掩码用于判断终端属于哪个网段,IP地址和子网掩码按位与得到网络号,IP地址取反与子网掩码按位与得到主机号,主机数则根据主机号二进制的位数进行计算。
对于非通信行业的朋友来说,这些知识毫无用处。但这些知识点对于我来说则是工作基础,比如有些客户设置了错误的子网掩码,导致ECU处于不同网段,哪怕两个ECU都连在网关上,两者间也无法实现数据通信。
书中还介绍了ARP协议,这也是日常工作中接触较多的协议。它的主要作用是获取目的ECU的MAC地址。
源ECU准备向目的ECU发送网络包时,源ECU不知道对端的MAC地址。此时,源ECU会发送ARP广播包,目的ECU收到ARP包时,会给源ECU发送response包,而这个response包中就有目的ECU的mac地址。源ECU收到response包后,才能将IP层的网络包继续打包进而发送给目的ECU。
上面只是大致介绍了ARP通信的基本原理,其具体工作原理比较复杂,分为同网段和不同网段等。我从书中截取了ARP通信的漫画,供大家参考。
从上面知道ARP包属于广播包。对于广播包而言,如果每个终端都发送广播包到网络上,那么终端处理数据包的压力会大大增加。即使两个终端完全不可能通信,但其仍会不停收到对端的广播包。
为了解决这个问题,vlan应运而生。它通过给每个数据包打上vlan标签,这样就能够将广播包发送给同一VLAN下的所有终端,而其他vlan下的终端不会收到该广播包,相当于在物理局域网的技术上划分出了虚拟局域网,从而大大减轻了终端处理数据的压力。
当然书中还介绍了TCP/IP协议簇的其他内容,要么是我已经掌握的,要么是工作中用不到的,本文不再介绍。感兴趣的朋友可以当做科普读物来读,建议在 微信读书 上免费阅读,没必要买纸质版。
希望今天这篇文章可以给各位朋友带来一些启发和参考。最后如果你觉得本文写的不错,可以来一波收藏、点赞、在看。
ps: 欢迎关注我的公众号[程序猿司晨],分享汽车行业转行程序员的成长与反思.
如果认为本文对您有所帮助请赞助本站