上两篇我们学习了OSI 7层网络模型,那么在传输数据的时候,具体的流程是怎样呢?
现在假设你打开QQ,给小明发送信息: “你好”,然后软件会调用相应的协议,把“你好”转换成数据,通过用户层面把数据包发送到传输层。
当数据到达传输层时,这个数据将会被分段传输以保证传输的速率,在分段时也会对每段数据编号以保证数据的有序性。然后在数据的头部加上“源端口” “目的端口” 的标识。
然后数据到达网络层。在此时数据包打上“源IP” “目的IP” 的标志。
然后将数据传输到数据链路层,把数据包打上“源MAC”“目的MAC”“帧类型”的标识。
最后数据到达物理层,把刚刚打包的数据包转化成比特流(比如:010101011……),通过光信号,或者电信号传输到小明的设备上。
至此,数据发送完成,这个过程又叫做封装。
小面就是小明接收信息了。
当数据传输到小明的设备上时,他设备上的网卡收到比特流,把比特流翻译成数据链路层能看懂的数据。
这时,数据链路层查看报头来确定协议,然后剥离数据链路层的报头,把数据传送到网络层。
网络层以同样的方式查看和剥离网络层报头。把数据传送到传输层。
传输层的报头中有对应的端口号,通过端口号交给相应的应用程序去处理(这一过程需要表示层、会话层对于数据的处理和翻译)。
然后“你好”就弹出在小明的设备上。
至此,数据接收完成,这一过程又叫解封装。
可见,平时我们简单的发个消息,但是数据在传输的过程中是非常麻烦的,不过好在,我们只需要会打字就能把信息发送出去了。