到底什么是TCP/IP协议栈,看完这篇你就明白!
时间:2022-12-09 来源:一谈到TCP/IP 协议栈,相信不少小白都处于暴躁的边缘,只懂其一不知其二。没关系,看完这篇你就知道啦!
我们先简单了解下TCP/IP协议,该协议最早得名于上世纪80年代,由美国国防部提出并应用于arpa网(即阿帕网,互联网的鼻祖)项目,由于其优异性,很快便成为主流网络通信协议。后面出现的各类协议(http、ip、dns、tcp、arp等)都被整体纳入这一协议体系中去,被统称为“TCP/IP 协议栈”,“TCP/IP 协议栈”名称就是这么由此而来的。
对应这一协议栈,同时发展出了TCP/IP 参考模型,该模型是一个抽象的分层模型,TCP/IP 协议栈中的所有协议被归类到这一模型的4个层次中(四个层分别是:链路层、网络层、传输层、应用层),每一层都呼叫它的下一层所提供的协议来完成其需求,各个层次间互相协作,由此完成了互联网通信的主要工作。
*由于OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型*
为了让你对通信过程有一个更好的理解,我将以http请求通信的过程为例子,从 TCP/IP 四个层次出发,对应各个层次的通信实体,看各个协议是如何在这些通信实体中发生作用。
在这之前我们先了解下网络通信中的三个地址:IP 地址、Mac 地址以及端口号,三者分别代表:
IP地址:网络中互联的主机和路由器的标识
Mac 地址:每个网卡硬件的物理地址
端口号:识别同一个主机上不同的应用程序,也可以理解为程序地址
当你输入一个网址并按下回车键的时候:应用层协议会先对该请求包做格式定义;紧接着传输层协议加上双方的端口号,确认双方通信的应用程序;然后网络层协议加上双方的IP地址,确认双方的网络位置;最后链路层协议加上双方的MAC地址,确认双方的物理位置,以太网协议会通过对电信号数据进行分组,形成数据帧,再采用广播方式,通过传输介质发送给对方主机。而对于不同网段,该数据包先会转发给网关路由器,经过多次转发后,最终被发送到目标主机。目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,最终被应用层的协议解析并交给服务器处理。在这个过程中,各项协议确保了传输过程的实现以及数据的安全。
IP地址相当于是人所在的区域,MAC地址相当于是人的身份证号码,对于网络传输最终都是以MAC地址来实现的。
我们来梳理一下每层模型的职责:
1. 应用层:定义数据格式,并按照对应的格式解读数据
2. 传输层:定义端口,确认主机上应用程序的身份,并将数据包交给对应的应用程序
3. 网络层:定义IP地址,确认主机所在的网络位置,并通过IP进行MAC寻址,对外网数据包进行路由转发
4. 链路层:以字节为单位对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据
以上内容是对TCP/IP四层模型做了简单的介绍,而实际上每一层模型都有很多协议,每个协议要做的事情也很多,但我们首先得有一个清晰的脉络结构,把基本的作用都掌握了,然后再去丰富细节,就比较好理解了。