聊聊网络协议
参考:https://zhuanlan.zhihu.com/p/665914921
参考:https://blog.csdn.net/weixin_43988680/article/details/123754721
网络的七层协议概念
1、物理层:这一层的数据叫做比特-将数据传递给访问对象
解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。
它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。
它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。
。
2、数据链路层:(访问)这一层的数据叫做帧-添加通讯对象(google)的mac地址
在计算机网络中由于各种干扰的存在,物理链路是不可靠的。
该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;
同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。
。
3、网络层:(访问)IP协议-添加访问服务器的IP地址(google)
计算机网络中如果有多台计算机,怎么找到要发的那台?如果中间有多个节点,怎么选择路径?这就是路由要做的事。
该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。
这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。
4、传输层:(访问)确定访问对象(如google)所使用的传输协议(tcp、udp等协议)、通讯端口
当发送大量数据时,很可能会出现丢包的情况,另一台电脑要告诉是否完整接收到全部的包。如果缺了,就告诉丢了哪些包,然后再发一次,直至全部接收为止。
简单来说,传输层的主要功能就是:监控数据传输服务的质量,保证报文的正确传输。
5、会话层:建立维护与应用程序之间的当前会话(socket)
虽然已经可以实现给正确的计算机,发送正确的封装过后的信息了。
但我们总不可能每次都要调用传输层协议去打包,然后再调用IP协议去找路由,所以我们要建立一个自动收发包,自动寻址的功能。
于是会话层出现了:它的作用就是建立和管理应用程序之间的通信。
6、表示层:(访问请求)将访问的数据传输转换加密(SSL/TLS)-将应用层的数据接收翻译成机器语言-发送到会话层
表示层负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。
7、应用层:(返回)将数据展示给用户-(访问)用户访问的数据-通过http协议发送到表示层
-- (http、https-http+ssl、ftp-文件传输协议、POP3-邮局协议、SMTP-邮箱、telnet-远程终端协议)
应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。
前端同学对应用层肯定是最熟悉的。
模型参考图
四层协议
应用层(http+ssl/tls+socket)
传输层(tcp/udp)
网络层(ip)
网络接口层(mac地址)
参考图
数据通讯流程
发包流程
应用层数据:首先,应用程序生成需要发送的数据。这可以是HTTP请求、电子邮件、文件传输等。
套接字发送:应用程序使用套接字接口将数据发送到传输层协议,例如TCP或UDP。套接字负责将数据封装为数据包,并提供接口供应用程序发送。
传输层处理:传输层协议(例如TCP或UDP)在这里负责将应用层数据分割成适当的数据包,添加首部信息,然后将它们传递给网络层。
网络层处理:网络层协议(通常是IP协议)接受传输层的数据包,并根据目标IP地址进行路由选择。它添加IP首部信息,然后将数据包传递给链路层。
链路层处理:链路层负责将数据包封装为帧,并发送到物理网络介质,如以太网、Wi-Fi等。这一层还可以进行MAC地址解析和ARP操作,以确定目标主机的物理地址。
物理层传输:数据包通过物理层发送到网络中,经过各种中间设备,例如交换机、路由器等,最终到达目标主机。
收包流程
物理层接收:在目标主机上,物理层接收到数据包,然后将其传递到链路层。
链路层处理:链路层接收到数据包后,进行物理层解封装,然后将数据包传递给网络层。
网络层处理:网络层接收到数据包后,解析IP首部,检查目标IP地址,然后将数据包传递给传输层。
传输层处理:传输层接收到数据包,解析传输层首部,将数据包分发给相应的套接字,完成数据包的重新组装。
套接字接收:应用程序通过套接字接口接收数据包,并将其传递给应用层进行处理。
应用层处理:应用层接收到数据包后,进行数据解析和处理,以完成通信过程。
数据的封装
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。
其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示:
数据的传输