TCP/IP协议族四层模型简述

TCP/IP协议族可按层次划分为四层,从上层到底层为:应用层,传输层,网络层, 数据链路层。知道了TCP/IP协议是进行分层设计的,很多好奇心强的同学肯定会又疑惑,为什么要分层进行设计,为什么又是按照这四个层级进行划分。

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

有的同学会有疑问,网络模型不是七层的吗,这里怎么变成了四层。其实将这四层在再次细分划出去之后也就变成了七层模型。这篇文章主要是为了讲解一下tcp/ip协议族的四层设计思想,故不针对四层和七层模型做过多讲解。

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

QQ截图20170302180202.png

ISO七层模型设计:

QQ截图20170302180721.png

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

QQ截图20170302181612.png

具体设计差异以及ISO七层模型的讲解,放到后续的文章中。


ok,回到主题上来。下面开始介绍四层模型每层的作用以及整体是如何实现通信的。
先上通信的整体结构图:
QQ截图20170302180234.png

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

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

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

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

简单了解了每一层的作用之后,我们试着串起来,摸索一下一次整体的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首部,就像剥洋葱一样一层一层去皮,最后剩下的就请求报文。在应用层对请求做出处理之后,需要对请求返回一个响应。而整个响应的传输过程就和请求一样,一层一层的封装,响应到达客户端时再一层一层的消去首部,最后呈现响应的结果。

好了,看完这篇文章,你应该对TCP/IP协议族的四层模型有一个相对清晰的认识了。然而,这只是个比较粗略的过程,因为里面很多的细节都没有涉及。后续的文章中,会对这些细节进行剖析,让自己能够更加深入的了解学习协议,也能够为学习的同学分享知识,和乐而不为。

  • 15
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值