第一件事是什么
程序里写的是一个名字,不是一串数字。这次通信真正要做的第一件事是【0】。
阅读更多 →
自己写:把三个头一层层剥掉
一个包从外到里贴着链路、网络、传输三个头,最里面才是数据。 补全 peel(),从最外面那层开始剥,把剥掉的层名依次记下来。输出剥的顺序(用 - 连起来)和剥完还剩几样东西。
阅读更多 →
自己写:两种切法,内容一个字都不能变
同一份资料,一次切成大包、一次切成小包。切法可以随便挑,但拼回来的内容必须一模一样——否则就是切错了。 补全 same(),输出两种切法各切出几个包,以及两边拼回来是不是一致。
阅读更多 →
自己写:切得太碎要付多少代价
还是这份 1100 字节的资料,但这次每个包只装 50 字节。 补全 cost(),让它算出这些包一共贴掉多少字节的头。输出包数和开销字节数,中间用 / 隔开。
阅读更多 →
贴了几个头,一共上路多少字节
同一份资料、同一种切法。这段程序输出一共贴了几个头和真正在线上跑的总字节数。它输出什么? DATA, MSS = 1100, 400 PER = 20 + 20 + 14 def split(to
阅读更多 →
每个包要贴掉多少字节
还是那份 1100 字节的资料,每个包最多装 400 字节。每个包都要依次贴上传输层(20 字节)、网络层(20 字节)、链路层(14 字节)三个头。 这段程序输出每个包一共贴掉多少字节和这一份资料一
阅读更多 →
收方拆头的顺序
一个包从上到下贴了三个头,到了对方手里要一层层拆开。拆的顺序是【0】。
阅读更多 →
地址和端口分别归哪一层
一份数据要发出去,它身上既有地址也有端口。这两样分别归哪一层管:【0】。
阅读更多 →
分层换来的是什么
把网络拆成四层,最直接的好处是【0】。
阅读更多 →
自己写:两套规矩各解一遍
这次到的两个字节是 0x01 和 0x2C。 补全两个函数:read_be() 按高位在前解,read_le() 按低位在前解,输出两个结果,中间用 / 隔开。
阅读更多 →