OSI网络七层协议从下往上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,下面分别说说这几次协议都干了什么事情,如有不对请指正
1.物理层:机器互联的物理链路,主要是物理介质,比如网线、光纤、无线电波,实现了各个主机之间的基本连接,它们发送的是电信号,数据格式:比特流,是0101010的二进制数据(这一层没有协议)
2.数据链路层:物理层发送的01010比特流是没有什么意义的数据,怎么把它变成有意义的数据呢?怎么确定这个比特流数据是发给我的呢?数据链路层就是为了解决这些问题,它把比特流进行分组处理,8位为一组成为一个字节,依次按顺序发送数据(数据格式:帧);MAC地址跟身份证一样是唯一的,来表示机器的物理地址,数据链路层发送数据包时会带上源MAC地址和目的MAC地址,类似于寄信,寄信时写上收件人是谁,寄件人是谁。(这一层没有协议)
3.网络层:当主机A想要连接主机F时,假如他们之间隔了B,C,D,E四个主机,路径有很多条,怎么去选择最优路径?要怎么知道对方的MAC地址?这些问题就是网络层要解决的。
a:怎么知道对方MAC地址?-----ARP(Address Resolution Protocol)协议,这个协议可以通过IP地址知道MAC地址;
b:怎么判断主机是否在同一子网?------IP协议,通过这个协议可以判断主机A和主机B是否在同一个子网内;
c:怎么选择最优路径?----通过一组路由协议来选择,例如静态路由,动态路由协议
4.传输层:如果发送的数据多数据包很大,需要传输很长时间,但是中途网络中断了,怎么保证重传?怎么保证数据包是完整正确的?传输层就来解决这些问题,这一层定义了两个协议UDP和TCP来封装数据包,然后一个一个按顺序依次发送。这一层通过定义端口实现了应用程序的寻找,比如发送聊天消息时,你电脑上有钉钉和qq,对方是通过钉钉发给你的,数据达到你电脑后,怎么判断这个数据是给到钉钉这个应用程序而不是给到qq这应用程序呢?答案就是刚才的端口了,通过端口可以找到对应的程序,然后发给对应的程序进行数据的处理
5.会话层:这一层实现了断点续传功能,可以从校验点继续恢复数据进行重传。而且实现也自动寻址和自动收发包功能(这一层没有协议)
6.表示层:计算机有多种操作系统,比如windows、mac、linux,各种系统的语法不一样,为了实现不同系统之间的通信,这一层充当了一个翻译的角色,提供了一种公共语言,让不同的系统之间可以通信(这一层没有协议)
7.应用层:前面6个层传输的都是字节流,字节流不好识别不好操作,为了解决这个问题,应用层定义了各种应用协议规范数据格式,比如HTTP、HTTPS、DNS、FTP、SMTP等常见的协议