本文转载自微信公众号「混说Linux」,作者Linux_Daily。转载本文请联系混说Linux公众号。

通信协议类似于交通规划,就是在规划路上的司机怎么走。

假如你在某宝上买了一个东西,商家就会把你买的东西发一个快递给你,那么要如何通过网络投递到你的手上?

1. 要有交通道路或者说交通路线。

2. 要有你家的通信地址。

3. 要有运输工具(货车、飞机) 。

4. 要有快递员 。

这四点满足了不就可以通信了,而这四点不就是tcp/ip模型吗?

1. 那么交通道路是不是会发生堵车(congestion),是不是就会有一些办法去减少堵车:

1). 避开高峰期(CSMA/CD),对于996或者通宵加班的打工人来说是不是完全避开。

CSMA/CD即载波侦听多路访问/冲突检测。

2). 限行(Token),比如深圳在工作日7时至9时、17时30分至19时30分限行。

Token通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。

3). 设置专用车道(虚拟专用网络),比如深圳上下班期间就有公交专用车道,其他车辆不能行驶。

它是一种虚拟专用网络,在公用网络上建立专用网络,比如你去外地出差,然后你可以远程访问公司内网的服务资源。

4). 上下班乘坐公交或者地铁(CDMA),使更多的人既可以正常上下班,又能减少车辆出行。

CDMA一般指码分多址,码分多址是指以不同的伪随机码来区别基站,各基站使用同一频率并在同一时间进行信息传输。

5). 工厂里面工人比较多,下班时间工厂附近交通就容易瘫痪,那么就拆迁(Proxy),把厂房和工人都赶到郊区去,在郊区建一个工厂。

Proxy指的是代理软件或代理服务器,也可以认为是一种网络访问方式。

6). 将道路扩宽(Frame Relay、ATM)

Frame Relay是一种有效的数据传输技术,它可以在一对一或者一对多的应用中快速而低廉的传输数字信息。

ATM为一种交换技术,在发送数据时,先将数字数据切割成多个固定长度的数据包发送。

2. 通信地址就会比较麻烦了,遇到有的小区保安不让进,而且有些地方会走错路,甚至有有的收件人重名。

1). 小区保安不让进(防火墙)怎么办?

a. 给保安发支烟,叫保安要称呼靓仔或者帅哥,不要叫人叼毛,说不定保安听着舒服就让你进去了(ACL)。

ACL指访问控制列表,是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。

b. 让保安广播通知或贴出告示快递到了保安室(ARP),让大家来保安室认领自己的快递,但是容易发生被别人冒充认领(ARP欺骗)。

ARP是地址解析协议,主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

ARP欺骗:主机收到应答报文时不会检测该报文的真实性,由此攻击者就会向主机发送伪ARP应答报文,这就构成了一个ARP欺骗。也就是说有人来冒领快递保安并不会检查是不是本人来领的,冒领者就会通过这个方式来冒领,造成真实快递主人的快递被别人拿走了。

2). 有些地方会走错路怎么办?

a. 小城市(RIP)要学会抄近道(OSPF),小地方交通比较顺畅。

RIP是一种分布式的基于距离向量的路由选择协议,主要适用于小规模的网络环境。

OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议。

b. 大城市(比如深圳)要学会使用地图导航(BGP),因为各种立交桥和高架桥让你找不着北。

BGP是自治系统间的路由协议,BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。

3). 收件人重名怎么办?

a. 缩小区域确认收件人,将区域区分到某个街道(subnet mask),确认收件人在哪一个区域,重名收件人在别的区域就不管。

Subnet Mask指子网掩码,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。

b. 给每一位住户门口贴好门牌号(内网IP),每个人收件人即使重名但是门牌号是不会重名的。

内网IP就是局域网网络地址。

3. 运输的货车可能在路上会发生交通事故,货车运输时间决定快递几天能够送到收件人手里。

1). 货车发生交通事故怎么办?

a. 货车发生交通事故,导致快递破损,如果快递公司赔付商家,但是商家还是得重发(TCP),因为收件人并没有收到快递(ACK),只要收件人没有收到快递,商家就得一直重新发货(SYN)。

TCP是一种面向连接的、可靠的通信服务,需要经历三次握手才能建立连接。

ACK是确认字符,需要收件人收到快递并且在某宝上确认收货。

SYN是同步序列编号,也就是商家发货的信息。

2). 收件人几天可以收到快递?

a. 货车运输速度决定快递什么时候可以送达,如果路比较宽阔,红路灯比较少,不堵车,车速就可以越快,收件人就可以更早收到快递,这就是香农定理。

4. 到了快递这里又会发生一些情况,快递员送快递给收件人,收件人发现快递包裹已经破损。

1). 收件人发现快递包裹已经破损,收件人在快递员派送快递给自己的时候当场验货拒收(CRC校验)。

整个通信协议利用一个快递的从商家手里发出到收件人收件的过程进行了非常通俗易懂的描述,应该是比较好理解了。

本文转载自微信公众号「混说Linux」,可以通过以下二维码关注。转载本文请联系混说Linux公众号。