TCP/IP 协议栈是一系列网络协议总和,采用了4层结构,分别是 应用层、传输层、网络层、链路层。
(通俗:一个主机的数据要经过那些过程才能发送到主机上。)
0、物理介质
光纤、双绞线、无线电波等
协议间的通信最终都要转化为 0和1 的电信号,通过物理介质进行传输才能到达对方的电脑。
当通过 HTTP发起一个请求时,应用层、传输层、网络层、和链路层的相关协议依次对该请求进行包装并携带对应的首部,最终在链路层生成以太网数据包,以太网数据包通过物理介质传输给对方主机,对方接受到数据包以后,然后再一层一层采用对应的协议进行拆包,最后把应用层数据交给应用程序处理。
1、链路层
主要是:对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接受方。
以太网规定 一组电信号就是一个数据包,一个数据包被称为一帧,制定这个规则的协议就是以太网协议。
以太网协议通过对电信号分组并行成数据帧,通过物理介质把数据帧从一个网卡传到另一个网卡后发给接收方。
首部:14字节,包含目标Mac地址、源Mac地址和类型。
数据:46~1500字节,更多数据可分割成多个帧。
尾部:4字节,表示数据帧校验序列,确保是否损坏。
Mac地址:网络适配器地址 or 网卡地址 or 数据包的发送地址和接受地址,十六进制标识6字节(厂商编号+网卡流水号PS:4C-0F-6E-12-D2-19)。
2、网络层
主要工作:定义网络地址,区分网段,子网内Mac寻址,对于不同子网的数据包进行路由。
引入三个协议,分别是 IP协议、ARP协议、路由协议。
【1】IP协议
IPv4(32位)和IPv6,如果两个IP地址在同一个子网内,则网络地址一定相同。IP地址与子网掩码按位与后的网络地址。
【2】ARP协议
地址解析协议:根据IP地址获取MAC地址的一个网络层协议,局限在同一个子网中。
【3】路由协议
子网与子网之间的网关,多次转发数据包将之发送到目标IP所在子网。
【4】IP数据包
3、传输层
链路层定义了主机的身份,即MAC地址,而网络层定义了IP地址,明确主机所在的网段。
传输层的主要工作是:定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可保证数据传输的可靠性。
数据包被发送到主机上以后,由UDP协议来确定哪个应用程序接受这个包。
简单来说:TCP就是有确认机制的的UDP协议,TCP需要三次握手四次挥手。
4、应用层
主要工作是:定义数据格式并按照对应的格式解读数据。常见的有 HTTP、FTP、SMTP等,HTTP是一种比较常见的应用层协议,主要用于B/S架构之间的数据通信。
5、全流程
链路层:对0与1进行分组,定义数据帧,确认主机的物理地址,传输数据;
网络层:定义IP地址,确认主机所在的网络的位置,并通过IP进行MAC寻址,对外网数据包进行路由转发;
传输层:定义端口,确认主机上应用程序的身份,并将数据包交给对应的应用程序;
应用层:定义数据格式,并对照对应的格式解读数据。
通俗地讲:
当你输入一个网址并按下回车键的时候,首先,应用层协议对该请求包做了格式定义;紧接着传输层协议加上了双方的端口号,确认了双方通信的应用程序;然后网络协议加上了双方的IP地址,确认了双方的网络位置;最后链路层协议加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,采用广播方式,通过传输介质发送给对方主机。而对于不同网段,该数据包首先会转发给网关路由器,经过多次转发后,最终被发送到目标主机。目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,最终被应用层的协议解析并交给服务器处理。
摘自:TCP/IP 协议栈
参考:(更全面具体)