知识总结1:简述TCP/IP四层协议模型

目录

TCP四层协议的内容

为什么要分层进行设计,为什么又是按照这四个层级进行划分?

四层模型每层的作用以及整体是如何实现通信的。

以访问google.com为例说明整体的http请求到响应的过程


TCP四层协议的内容

TCP/IP协议族可按层次划分为四层,从上层到底层为:应用层,传输层,网络层, 数据链路层。

 

为什么要分层进行设计,为什么又是按照这四个层级进行划分?

假设整个协议都是一个整体,没有进行层次化的设计,那么如果协议需要进行调整的时候,那就需要对整个协议进行修改。但是,进行分层解耦之后,每一层的内容相对独立,互不影响。需要进行变更的时候就只需要针对某一层的协议内容进行做变动,不会影响到其他几层的内容。其实和开发过程中的模块封装解耦一样。

有的同学会有疑问,网络模型不是七层的吗,这里怎么变成了四层。其实将这四层在再次细分划出去之后也就变成了七层模型。

tcp/ip协议族分层之后的总体设计:

知识总结1:简述TCP/IP四层协议模型

ISO七层模型设计:

知识总结1:简述TCP/IP四层协议模型

两种设计的对应层数划分关系:

知识总结1:简述TCP/IP四层协议模型

 

四层模型每层的作用以及整体是如何实现通信的

通信的整体结构图

知识总结1:简述TCP/IP四层协议模型

从应用层开始讲起:
应用层决定这次通信的应用类型,比如说FTP、DNS、SMTP等等,同时HTTP协议也属于应用层的范围。通俗来讲,应用层决定这一次通信要干嘛。

传输层:传输层提供两台计算机之间的数据传输,传输层中包含着两个很叼的协议,分别是TCP和UDP协议。面试中经常提及的三次握手,四次挥手就是TCP协议的部分内容

网络层:网络层则是用来处理这些流动的数据包,也就是如果把相应的数据包路由到指定的地点,为通信时的网络传输选择传输路线

数据链路层:数据链路层包含了软件与硬件的接口部分,以及各种网络设备的硬件,也就是整个网络通信过程中最底层的基础设施

 

以访问google.com为例说明整体的http请求到响应的过程

简单了解了每一层的作用之后,我们试着串起来,摸索一下一次整体的http请求到响应的过程。
拿访问google做个例子

0.访问google.com,按下回车。

1.应用层准备好请求报文,通过DNS服务进行域名解析,得到google的ip地址,并将报文发到传输层。

2.传输层收到报文后,会将请求的数据包进行拆分,打包,并对每个包裹打上tag。在请求报文的基础上,加上一层TCP的首部信息,然后发往网络层。

3.到了网络层以后,IP协议就发挥了巨大的作用,IP协议中需要两个比较重要的信息,那就是ip地址和mac地址。ip已经在应用层通过dns解析出来了,那mac怎么办。。。真尴尬,然而这时ARP协议又冒了出来,它可以根据ip地址反向查询到目标主机的mac地址。好了,现在啥都有了,打包带走,把数据发到数据链路层。

4.终于走到基础设施这里了,此时数据包就在一根根光纤中旋转跳跃的奔向目的地,当然,整个过程不一定是直达的,可能需要经过各种中转站,就跟坐火车转车一样的。

5.请求到达服务器后,先从数据链路层往上走,并验证消去以太网首部信息,在网络层消去IP首部,在传输层消去TCP首部,就像剥洋葱一样一层一层去皮,最后剩下的就请求报文。在应用层对请求做出处理之后,需要对请求返回一个响应。而整个响应的传输过程就和请求一样,一层一层的封装,响应到达客户端时再一层一层的消去首部,最后呈现响应的结果。