网络通信的实现方式:揭秘消息发送与数据处理过程

发表时间: 2019-07-31 19:54

上两篇学习了OSI 7层网络模型,那么在传输数据的时候,具体的流程是怎样呢?

OSI 7层模型中每一层都是相互协作,上层依赖下层,下层为上层提供服务。发送和接收数据是两个相对的过程。每一层都把上层的协议包当成数据部分,加上自己的协议头部,组成自己的协议包。


现在假设你打开QQ,给小明发送信息: “你好”,然后软件会调用相应的协议,把“你好”转换成数据,通过用户层面把数据包发送到传输层。

当数据到达传输层时,这个数据将会被分段传输以保证传输的速率,在分段时也会对每段数据编号以保证数据的有序性。然后在数据的头部加上“源端口” “目的端口” 的标识。

然后数据到达网络层。在此时数据包打上“源IP” “目的IP” 的标志。

然后将数据传输到数据链路层,把数据包打上“源MAC”“目的MAC”“帧类型”的标识。

最后数据到达物理层,把刚刚打包的数据包转化成比特流(比如:010101011……),通过光信号,或者电信号传输到小明的设备上。

至此,数据发送完成,这个过程又叫做封装。


小面就是小明接收信息了。

当数据传输到小明的设备上时,他设备上的网卡收到比特流,把比特流翻译成数据链路层能看懂的数据。

这时,数据链路层查看报头来确定协议,然后剥离数据链路层的报头,把数据传送到网络层。

网络层以同样的方式查看和剥离网络层报头。把数据传送到传输层。

传输层的报头中有对应的端口号,通过端口号交给相应的应用程序去处理(这一过程需要表示层、会话层对于数据的处理和翻译)。

然后“你好”就弹出在小明的设备上。

至此,数据接收完成,这一过程又叫解封装。


可见,平时我们简单的发个消息,但是数据在传输的过程中是非常麻烦的,不过好在,我们只需要会打字就能把信息发送出去了。