前言
别看标题起的这么嚣张,只是想吸引读者而已哈哈。永远对知识保持敬畏之心,永远记得自己只在冰山一角。
本文用意在于不让前端小白记太多东西,就用最简短的大白话大概的理解下。
七层与五层
网络协议千千万,根据完成事情的性质进行分层区分,通过分层来明确每一层的工作职责,协同工作,保证不同层的协议修改不会影响其他层的,每一层可以使用下面各层的功能,所以分层是必然的。
最开始网络分为七层,叫做OSI七层模型,从顶到底分别是:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
后来有TCP/IP五层模型,从OSI七层模型优化而来,把前三层合并成一层应用层。
物理层
就理解为物理连线,用来传输0101信息。
数据链路层
底层的物理层不知道0101是什么,就需要在本层进行规定,这样通讯双方就能理解对方在叽里呱啦什么。也就是将二进制数据包与网络信号相互之间转换。
此时,双方已经通过MAC地址建立连接了。
网络中计算机设备的唯一标识,从计算机在厂商生产出来就被十六进制的数标识为MAC地址。就理解为硬件的身份证得了。
网络层
此时,双方虽然取得联系,但还需要分辨是否处在同一个子网中(理解成住宅小区),那么就需要用到网络层中的IP协议和子网掩码进行判断了。
传输层
假如一个计算机和一个服务器以上层都走过了,是不是可以愉快的网上冲浪了呢?别急,到了你计算机还要细分数据是传给哪个程序的,每个程序对应联系的是哪个服务器。咋办,那就给每个程序分配不同的端口,就理解为给每个程序开个小门,服务器同理。开这些小门就需要传输层上的TCP协议了,这个TCP既提供了端口对端口的通讯,也能让双方相互确认是否都已“在线”。也就是三次握手。
应用层
得嘞,这层就理解为提供特定于应用程序的协议,比如负责浏览器和网络服务器相互通信的HTTP协议、文件传输的FTP协议、负责电子邮件客户端检索邮件的IMAP协议;
走一遍流程
好,了解完TCP的五层模型,我们来举例走一遍,没病走两步!
假设我们的浏览器已经和服务器连接并已经正常传输数据了。
-
当浏览器使用应用层HTTP协议发送数据时,数据会被分成很多片段,每一个片段称为数据包;
-
通过传输层TCP给每个包添加源端口和目标端口,其中TCP会帮助数据包的不丢失,保证顺序,并经过握手进入网络层IP协议;
-
每个数据包将会赋予原计算机和目标计算机的IP地址;IP层还能给过大的数据包进行再次的分包;
-
每个数据包在数据链路层中把文本信息转成电子信号(0101)放在物理层电缆传输。在电缆的另一端有路由器检查,根据ip地址接力发送,最终到达服务器。
由于每个包链路不一样,所以到达顺序也不一样,这时TCP会根据包上携带的序列号来进行重组排序,并且发送方没有在特定时间内接受到接收方的ack确认时,会重新发送一次;
服务端获取到后自下而上层级传输,一层一层的恢复,到应用层时只剩数据;当前服务器会监听端口号,就能获取到数据,知道你要什么了;然后把你要的按照五层模型再走一次,浏览器就接收到了;
完~