小白笔记理解TCP/IP协议栈

互联网最初是由于军事用途出现的,现在网络已经走进千家万户,称为生活的一部分。互联网的各个终端之间能否进行交互的软件基础是"网络协议栈",目前主流的网络协议栈是TCP/IP协议栈,下面我们就结合OSI国际标准的七层模型和TCP/IP的四层实际标准来将说明一下这个网络协议栈是如何工作的。

在此之前,我们知道的是,这个协议栈的模型是用来进行不同终端之间进行交互的一个基础网络结构模型,事实上,这个结构的标准OSI模型是由国际互联网标准化组织(International Organization for Standardization,ISO)定义的,但是目前实际上我们使用的却是TCP/IP的四层协议模型,这是因为OSI的七层模型实现起来太过复杂,而TCP/IP四层模型是在OSI的基础上进行的简化和浓缩版的网络协议模型,是目前使用最广泛的实际标准,我们先来看一下OSI的七层模型是如何工作的。

如下图,OSI的七层自顶向下分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层,每一层的服务提供是由下向上的,即下层通过层间接口为上层提供服务。一个主机上运行的网络规则实现的集合称为协议栈,主机也是利用这个协议栈进行发送和接收数据。

下面我们先介绍一下每一层的功能,再来说明主机间交互时协议栈的工作状况。

应用层(Application Layer):为应用程序提供访问网络服务的接口,并未用户提供常用的应用(即软件)。例如常用的电子邮件应用、网络浏览器应用都在本层定义,本层的协议规范有Telnet、FTP、HTTP、SNMP、P2P等。

表示层(Presentation Layer):对网络传输的数据进行变换,使得多个主机之间传送的信息能够相互理解,包括数据的压缩、加密、格式的转换等。本层定义有ASCLL、JPEG、MPEG(为运动图像定制的标准)。

会话层(Session Layer):管理主机之间的会话过程,包括会话的建立、终止和中间的管理,来提供服务请求者和提供者之间的通信。属于本层的规范有:TCP、UDP、SPX(序列分组交换协议)等。

传输层(Transport Layer):传输层将上层的数据处理分为分段的数据,提供可靠(TCP)或者不可靠的(UDP)的传输,为上层掩盖下层细节,保证会话层的数据信息能够传送到另一方的会话层(但不一定是另一方的应用层)。属于本层的一些规范有TCP、UDP、SPX等。

网络层(NetWork Layer):负责将各个子网之间的数据进行路由选择,将数据从一个主机传送到另一个主机,其功能包括网际互连、流量控制和拥塞控制等。属于本层的定义规范有IP、IPX(互联网分组交换协议)、RIP、OSPF,实际中的路由器就是属于这层的。

数据链路层(Data Link Layer):在物理介质基础之上提供可靠的数据传输,在这一层利用通信信道实现误差错传输,提供物理地址寻址、数据层帧、数据的检测重发、流量控制和链路控制等功能。属于本层定义的规范有SDLC、HDLC、PPP、STP、帧中继等,实际的MAC就属于本层。 

物理层(Physical Layer):规定了物理线路和设备的触发、维护、关闭物理设备的机械特性、电气特性、功能特性和过程,为上层的传输提供了一个物理介质,本层是通信端点之间的硬件接口。属于本层定义的规范有EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等,实际使用中的网卡就属于本层(注意这个,老有人把它当成网络层的)。

下面我们来理解一下数据在这个模型中的流动:

现在我们假设你是右边的主机A,要跟你的左边的好友主机B通过QQ聊天,

  • 首先,你发送的信息数据由应用程序(QQ)调用应用层接口,进入协议栈的应用层。
  • 在应用层,应用程序将数据加上应用层的报头,包装成形成应用层协议数据单元,然后将数据传输给协议栈中应用层的下一层-表示层。
  • 在表示层,它不关心应用层传输来的数据内容,把数据和应用层报头作为一个整体进行处理,加上表示层报头,然后递交给下一层会话层。
  • 与表示层类似,在会话层、传输层、网络层和数据链路层分别将数据加上自己的报头,然后向下传递,但是这里注意,到数据链路的时候,后面还要加一个数据链路层的尾部(数据校验和),打包成一个数据帧,然后递交给物理层。
  • 在物理层,主机A的网络设备将数据链路层传递过来的数据发送到网络上。
  • 然后主机B物理层接收到数据后,将数据保存下来,然后递交给它的上一层数据链路层。
  • 数据链路层将数据去掉数据链路层头部和尾部,进行数据校验,没有错就向上传递给网络层。
  • 后面就是层层剥去各层的首部然后向上递交,最后数据到达主机B的应用程序中。

这里有人可能会问,可是我QQ发送的消息为什么没有发送到它的微信上呢,这就是应用层的一个端口起到的作用,端口将递交上来的报文送到对应的端口(这个端口号是主机分配给某个应用程序的),后面的工作就由TCP或UDP来完成。


OK,说完,OSI的七层模型功能,我们来对比一下TCP/IP的四层模型,实际的标准中TCP/IP将OSI七层模型中的应用层、表示层和会话层整合为一个应用层,取消了会话层和表示层,但他们的功能还在,放在新的应用层中来实现。

另外,传输层和网络层不变,最下面的物理层和数据链路层被合并一个新的主机到网络层,大抵功能都还在,不过被整合一起了。

我们在初次学习的时候,一般会将两种模型进行整合,产生一个新的五层模型,即:

  • 应用层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

这样对每一层的功能详细展开,就能说明整个网络协议栈的工作原理,这就是在实际数据传输的一个模型,但是要是深入了解每个层的具体功能,如何实现,所用协议等还需要进一步学习,加油!!

参考书目:

计算机网络-谢希仁

Lniux网络编程-宋敬彬等

猜你喜欢

转载自blog.csdn.net/MARS_098/article/details/105031478