“什么是通讯协议?”
李卫国没有直接开始写代码,而是先提出了一个问题。
孙教授和钱院士对视一眼,由在软件领域更权威的孙教授来回答。
“协议,就是一种约定,一种规则。”
“比如,我们之前在局域网内传输文件,会约定好,发送方先发一个‘请求’信号,接收方回复一个‘准备就绪’信号,然后发送方再开始传输数据。”
“这就是一种简单的协议。”
“没错。”
李卫公点头,对孙教授的理解表示肯定。
“但这种简单的‘你问我答’式协议,只能用在‘局域网’这种,线路质量极高、几乎不会出错的‘无菌环境’里。”
“而我们现在要面对的,是长途电话线这种,充满了噪音、干扰、甚至会随时中断的‘垃圾场’。”
“在这种环境里,‘你问我答’就没用了。”
李卫国打了个比方。
“这就好比,你隔着一条嘈杂的马路,对另一个人喊话。”
“你喊一句‘你好吗’,他可能只听到了一个‘你’字,或者听成了‘泥嚎吗’。”
“甚至,一辆卡车开过,他什么都没听到。”
“那怎么办?”
“很简单。”
李卫国自问自答。
“首先,我们不能再按‘句子’来喊话了,太长了,容易出错。”
“我们得把一句话,拆成一个个的‘包裹’。”
他在纸上画了一个个的小方块。
“比如,‘你好吗’,就拆成‘你’、‘好’、‘吗’三个包裹。”
“然后,给每个包裹,都编上号。1号包裹是‘你’,2号包裹是‘好’,3号包裹是‘吗’。”
“这样,对方就算收到的顺序是乱的,比如先收到了3号,再收到了1号,他也能根据编号,自己重新排好序。”
钱院士听到这里,眼睛一亮。
“数据包!我明白了,这是数据包拆分和排序!”
“对,但这只是第一步。”
李卫国继续说道。
“光有编号还不够,如果中间有个包裹,因为噪音太大,‘损坏’了,或者干脆‘丢失’了怎么办?”
“比如,2号包裹‘好’,对方收到的,变成了‘孬’,或者干脆没收到。”
“所以,我们要在每个包裹的‘封皮’上,再加一个
本章未完,请点击下一页继续阅读!