返回第266章 数字世界的灵魂——TCP/I(1 / 2)紫茶柚首页

关灯 护眼     字体:

上一章 目录 下一页

“什么是通讯协议?”

李卫国没有直接开始写代码,而是先提出了一个问题。

孙教授和钱院士对视一眼,由在软件领域更权威的孙教授来回答。

“协议,就是一种约定,一种规则。”

“比如,我们之前在局域网内传输文件,会约定好,发送方先发一个请求信号,接收方回复一个准备就绪信号,然后发送方再开始传输数据。”

“这就是一种简单的协议。”

“没错。”

李卫公点头,对孙教授的理解表示肯定。

“但这种简单的你问我答式协议,只能用在局域网这种,线路质量极高、几乎不会出错的无菌环境里。”

“而我们现在要面对的,是长途电话线这种,充满了噪音、干扰、甚至会随时中断的垃圾场。”

“在这种环境里,你问我答就没用了。”

李卫国打了个比方。

“这就好比,你隔着一条嘈杂的马路,对另一个人喊话。”

“你喊一句你好吗,他可能只听到了一个你字,或者听成了泥嚎吗。”

“甚至,一辆卡车开过,他什么都没听到。”

“那怎么办?”

“很简单。”

李卫国自问自答。

“首先,我们不能再按句子来喊话了,太长了,容易出错。”

“我们得把一句话,拆成一个个的包裹。”

他在纸画了一个个的小方块。

“比如,你好吗,就拆成你、好、吗三个包裹。”

“然后,给每个包裹,都编号。1号包裹是你,2号包裹是好,3号包裹是吗。”

“这样,对方就算收到的顺序是乱的,比如先收到了3号,再收到了1号,他也能根据编号,自己重新排好序。”

钱院士听到这里,眼睛一亮。

“数据包!我明白了,这是数据包拆分和排序!”

“对,但这只是第一步。”

李卫国继续说道。

“光有编号还不够,如果中间有个包裹,因为噪音太大,损坏了,或者干脆丢失了怎么办?”

“比如,2号包裹好,对方收到的,变成了孬,或者干脆没收到。”

“所以,我们要在每个包裹的封皮,再加一个东西。”

“叫做校验码。”

“这个校验码,是通过一个特殊的算法,根据包裹里的内容计算出来的。比如,你这个字的校验码是,好这个字的校验码是。”

“当接收方收到1号包裹时,他自己也用同样的算法,计算一下包裹里的你字,如果算出来的校验码也是,那就说明这个包裹是完好无损的。”

“如果他收到2号包裹,里面的内容是孬,他一算,校验码不对,就知道这个包裹在路摔坏了。”

“或者,他收到了1号和3号,就是没收到2号,那他也知道,2号包裹寄丢了。”

“那寄丢了或者摔坏了,怎么办?”

孙教授追问道。

“问得好。”

李卫国笑了。

“这就需要我们的第三个关键机制,也是最重要的机制。”

“确认与重传nnnrnsssn。”

“规则很简单:接收方每成功收到一个完好的包裹,就必须给发送方,回一个确认信息。比如,1号我收到了,完好无损。”

『加入书签,方便阅读』

上一章 目录 下一页