TCP/IP网络分层模型与OSI网络分层模型及他们的映射关系

1.TCP/IP 网络分层模型

第一层叫“链接层”(link layer),负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次上,使用 MAC 地址来标记网络上的设备。

第二层叫“网际层”(internet layer),IP 协议就处在网际层。用 IP 地址取代 MAC 地址,把许多局域网、广域网连接成一个虚拟的巨大网络,如果要在这个网络里找设备则要把 IP 地址“翻译”成 MAC 地址。

第三层叫“传输层”(transport layer),负责在 IP 地址标记的两点之间“可靠”地传输数据,是 TCP 协议UDP 协议 这两个传输层协议工作的层次。

特性\传输层协议TCPUDP

是否是有状态的协议?是不是

是否需要事先建立连接需要不需要

数据的形式连续的字节流,有先后顺序分散的数据包,顺序发乱序收

第四层叫“应用层”(application layer),负责面向具体的应用传输数据,应用层有面向具体应用的各种协议,HTTP 协议就在这一层,还有一些例如 FTP 协议、SSH 协议 等等。

2.OSI 网络分层模型

第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等;

第二层:数据链路层,它基本相当于 TCP/IP 的链接层,负责在底层网络上发送原始数据包,工作在物理层之上,使用MAC地址标记网络中的设备;

第三层:网络层,相当于 TCP/IP 里的网际层,用IP地址取代MAC地址,将许多局域网、广域网连接成一张虚拟的巨大网络;

第四层:传输层,相当于 TCP/IP 里的传输层,负责在IP地址标记的两点之间可靠的传输数据;

第五层:会话层,维护网络中的连接状态,即保持会话和同步;

第六层:表示层,把数据转换为合适、可理解的语法和语义;

第七层:应用层,面向具体的应用传输数据。

3.OSI 网络分层模型 到 TCP/IP网络分层模型 的映射关系

第一层:物理层,TCP/IP 里无对应;

第二层:数据链路层,对应 TCP/IP 的链接层;

第三层:网络层,对应 TCP/IP 的网际层;

第四层:传输层,对应 TCP/IP 的传输层;

第五、六、七层:统一对应到 TCP/IP 的应用层。

“四层”和“七层”到底是什么?“五层”“六层”哪去了?

四层七层是OSI分层模型里的第四层传输层和第七层应用层。OSI把五六七层分太细,实际上五层会话层和六层表示层通常和具体应用联系非常紧密,不好分开,他们三层映射到TCP/IP 网络分层模型中都是应用层,比如说HTTP 协议就同时包含了连接管理和数据格式定义。

4.TCP/IP 协议栈的工作方式

问的也就是HTTP 协议利用 TCP/IP 协议栈传输数据的过程。HTTP协议利用TCP/IP协议栈传输数据分为发送和接受。

发送过程:通过协议栈逐层向下,每一层都添加该层的专有头,逐层打包,由下层把数据发送出去。

浏览器显示了一个页面,你点击了一个链接,浏览器使用应用的端口号发起一个HTTP请求

然后加TCP头,记录了源端口号和目的端口号(一般是80)

然后加IP头,记录源IP地址和目标IP地址

然后加MAC头,记录下源MAC地址和目标MAC地址

然后就通过下层的网口发送出去了

接受过程:通过协议栈逐层向上,每一层都拆掉该层的专有头,逐层拆包,由上层接收本来的数据。

一个网口经过了一个网络包,把它拿进来交给网络包处理程序来处理

拆掉二层头,看看MAC地址跟自己的是不是相符,如果不相符,那不管它;如果MAC地址相符,继续拆三层头

拆掉三层头,看看IP地址跟自己的是不是相符,如果不相符,说明自己只是这个数据包的一个中转站,那我们把MAC地址更改,转发出去;如果IP地址相符,根据IP头里的标示知道四层是TCP地址还是UDP地址,我们假设是TCP的

拆掉四层头,看看这是个请求还是应答还是一个正常的数据包,如果是发起或应答那可能接下来要发一个回复包;如果是一个正常的数据包,就要交给上层来处理,网络包处理程序是不能拆七层头的,那么根据TCP头里的端口号交给对应的应用

应用拿到数据包想做什么处理就做什么处理,那就是应用的事了,比如说这个应用是浏览器,那浏览器当然是解析数据包(假设里面传送的是HTML),然后把页面显示出来

MAC地址的局限性和IP地址的连接性:因特网把各种网络连接起来,每个网络都使用不同的MAC地址,如果异构网络要互相通信就必须进行复杂的MAC地址转换工作,于是统一的IP地址把这个复杂问题解决了。IP地址本质上是终点地址,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。

你可能感兴趣的:(TCP/IP网络分层模型与OSI网络分层模型及他们的映射关系)