引
本文只是简单的介绍一下服务器和客户端通信的大致的流程
应用层 -> 传输层 -> 网络层 -> 数据链路层 -> 物理层 -> 数据链路层 -> 网络层 -> 传输层 -> 应用层
具体流程
1、qq 软件会按照一定的规则(qq 的程序员约定的通讯协议),把hello 这个字符串构造成一个应用层数据包。然后将这个数据包交给操作系统的传输层
例如构造的是这样的一个信息:
张三;123456789;李四987654321;2022/7/15 12:30;hello;
2、在传输层中,就会把刚才这个数据打包成一个传输层数据包。假设此处使用 UDP 协议,然后将这个数据包交给网络层
假设这里使用的是 UDP 协议
3、到了网络层后,网络层也会把刚才这个数据打包成一个网络层的数据包
假设此处使用 IP 协议,接下来网络层又会把数据交给数据链路层
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7UkUXVjt-1657893165151)(https://s3.bmp.ovh/imgs/2022/07/15/336a176ee4ba73cb.png)]
4、数据链路层也会把这个数据封装成一个数据链路层的数据包
假设这里使用以太网协议,就会把这个数据按照以太网数据帧的格式进行组织,打包完后将这个数据交给物理层
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sAtwneFj-1657893165151)(https://s3.bmp.ovh/imgs/2022/07/15/bb7e45bb4fe192ec.png)]
5、物理层就会把这个数据以二进制的方式转换成为 0/1 这样的光信号/电信号并进行传输,通过网线/光纤/无线网络将数据包发送到接收端
紧接着,光电信号到达了接收端(即主机)
6、首先到达接收端的物理层。物理层再把这个光电信号进行翻译,转换为 0/1 这样的二进制序列,也就得到了一个以太网数据帧,然后把这个数据帧交给了数据链路层
7、数据链路层对这个以太网数据帧进行解析,去掉了帧头和帧尾将中间的负载部分信息获取到,然后交给上层协议(即网络层)
8、到了网络层后,IP 协议就会按照协议格式来解析这个数据,去掉 IP 报头获取到其中的负载部分信息,然后交给上层协议(即传输层)
9、到达传输层后,传输层的 UDP 协议再解析这个数据去掉 UDP 包头获取到负载部分信息,然后交给上层协议(即应用层)
10、到达应用层后,应用程序就会按照应用层的协议在解析数据去出其中的关键信息(即 hello 这条消息),然后将其显示在屏幕上
|