TCP/IP网络分层模型与OSI网络分层模型及他们的映射关系
1.TCP/IP 网络分层模型
-
第一层叫“链接层”(link layer),负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次上,使用 MAC 地址来标记网络上的设备。
-
第二层叫“网际层”(internet layer),IP 协议就处在网际层。用 IP 地址取代 MAC 地址,把许多局域网、广域网连接成一个虚拟的巨大网络,如果要在这个网络里找设备则要把 IP 地址“翻译”成 MAC 地址。
-
第三层叫“传输层”(transport layer),负责在 IP 地址标记的两点之间“可靠”地传输数据,是 TCP 协议和 UDP 协议 这两个传输层协议工作的层次。
特性\传输层协议 TCP UDP 是否是有状态的协议? 是 不是 是否需要事先建立连接 需要 不需要 数据的形式 连续的字节流,有先后顺序 分散的数据包,顺序发乱序收 -
第四层叫“应用层”(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地址则是下一跳的地址,每跳过一次路由器都会改变。