OSI的7层模型和TCP/IP四层模型

本文详细介绍了TCP/IP四层模型与OSI七层模型的区别及各层功能,并深入探讨了网络层的IP协议原理及其数据包封装过程,特别针对以太网帧和ARP数据报格式进行了实例说明。

TCP/IP 四层模型

  • TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。

OSI 7层模型

这里写图片描述

  • 物理层:主要定义物理设备标准(网线的接口类型、光纤的接口类型、各种传输介质的传输速率),作用:传输比特流,就是将高低电平(0,1)转化为电流强弱来进行传输,到达目的地之后再转化为高低电平(0,1)这就是我们平时所说的数模转换与模数转换,这一层的数据叫做比特
  • 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的9600、8、N、1(波特率,数据位,校验位,停止位)
  • 网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择,而网络层正是管理这种连接的层。网络层负责的传输(这里的“”指主机路由器
  • 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP,UDP。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做传输层负责的传输(这里的“”指源主机目的主机
  • 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
  • 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
  • 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如 telnet、http、ftp)提供网络服务。

网络层的IP协议详解

  • 网络层的IP协议是构成internet的基础。internet上的主机通过IP地址来标识,internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层(网络层)的网络设备,同时兼有交换机(和网卡一样工作在链路层)的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层链路层两层首部并重新封装。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。

数据包封装

这里写图片描述

  • 不同的协议层对数据包有不同的称谓,在传输层叫做数据段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
  • IP和网络接口层之间传送的数据单元应该是分组( packet)。分组既可以是一个IP数据报,也可以是IP数据报的一个片(fragment)。

以太网帧格式

这里写图片描述
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片(fragmentation)。ifconfig命令输出中也有“MTU:1500”。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧头长度。

ARP数据报格式

这里写图片描述
看一个具体的例子。 请求帧如下(为了清晰在每行的前面加了字节计数,每行16个字节): 以太网首部(14字节) 0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08 06 ARP帧(28字节) 0000: 00 01 0010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37 0020: 00 00 00 00 00 00 c0 a8 00 02 填充位(18字节) 0020: 00 77 31 d2 50 10 0030: fd 78 41 d3 00 00 00 00 00 00 00 00

  • 以太网首部:
    * 目的主机采用广播地址,
    * 源主机的MAC地址是00:05:5d:61:58:a8,
    * 上层协议类型0x0806表示ARP。
  • ARP帧:
    * 硬件类型0x0001表示以太网,
    * 协议类型0x0800表示IP协议,
    * 硬件地址(MAC地址)长度为6,
    * 协议地址(IP地址)长度为4,
    * op为0x0001表示请求目的主机的MAC地址,
    * 源主机MAC地址为00:05:5d:61:58:a8(假设)
    * 源主机IP地址为c0 a8 00 37(192.168.0.55)(假设)
    * 目的主机MAC地址全0待填写,
    * 目的主机IP地址为c0 a8 00 02(192.168.0.2)(假设)
  • 由于以太网规定最小数据长度为46字节,ARP帧长度只有28字节,因此有18字节填充位,填充位的内容没有定义,与具体实现相关。`

应答帧如下: 以太网首部 0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06 ARP帧 0000: 00 01 0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02 0020: 00 05 5d 61 58 a8 c0 a8 00 37 填充位(18字节) 0020: 00 77 31 d2 50 10 0030: fd 78 41 d3 00 00 00 00 00 00 00 00

  • 以太网首部:
    * 目的主机的MAC地址是00:05:5d:61:58:a8,
    * 源主机的MAC地址是00:05:5d:a1:b8:40,
    * 上层协议类型0x0806表示ARP。
  • ARP帧:
    * 硬件类型0x0001表示以太网,
    * 协议类型0x0800表示IP协议,
    * 硬件地址(MAC地址)长度为6,
    * 协议地址(IP地址)长度为4,
    * op为0x0002表示应答,
    * 源主机MAC地址为00:05:5d:a1:b8:40,
    * 源主机IP地址为c0 a8 00 02(192.168.0.2),
    * 目的主机MAC地址为00:05:5d:61:58:a8,
    * 目的主机IP地址为c0 a8 00 37(192.168.0.55)。

如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目的主机通信?
答:ARP一般只在局域网起作用,即两个主机在同一个网段,虽然部分路由器有ARP代理功能,但也不可能把广域网上所有的地址都代理。所以在两个不同的网段进行访问的时后,当发现目的地址不是本网段IP的时候,将会把数据包发送给网关处理(一般网关就是路由器来做的),路由器此时就发挥他的路由功能进行IP路由.(查询路由表)

### OSI层模型TCP/IP四层模型的结构及差异 OSI层模型TCP/IP四层模型是计算机网络中两种重要的分层模型,它们各自有不同的设计理念应用场景。以下是两者在结构功能上的主要区别联系。 #### 1. 模型的起源与设计思想 OSI模型是由国际标准化组织(ISO)制定的一个理论框架,旨在提供一个通用的参考模型来描述网络通信过程[^2]。它先定义了服务、接口、协议等概念,并在此基础上构建了一个完整的七结构。相比之下,TCP/IP模型是在实际应用需求驱动下发展起来的,其设计更加注重实用性,先有协议后有模型,且参考了OSI模型的设计思路[^1]。 #### 2. 次结构的对比 OSI模型采用七结构,从低到高依次为物理、数据链路、网络、传输、会话、表示应用。而TCP/IP模型则简化为四或五结构,具体包括网络接口、网络、传输应用[^3]。在TCP/IP模型中,OSI模型中的会话表示的功能被合并到应用中,同时将物理数据链路的功能归入网络接口。 #### 3. 各功能的比较 - **网络接口**:TCP/IP模型中的这一对应于OSI模型中的物理数据链路,负责管理硬件设备物理媒介之间的通信,包括以太网、Wi-Fi等协议[^3]。 - **网络**:两者的网络功能基本一致,主要负责数据包的路由转发,使用IP协议定义数据包的传输路径。 - **传输**:OSI模型TCP/IP模型的传输都提供端到端的数据传输服务,支持可靠的TCP协议简单的UDP协议[^3]。 - **应用**:TCP/IP模型的应用涵盖了OSI模型中的应用、表示会话的功能,负责处理用户与网络应用程序之间的通信,包括HTTP、FTP、SMTP等协议[^3]。 #### 4. 实际应用的差异 OSI模型虽然理论上非常完善,但由于其复杂性开发周期较长,在实际应用中并未得到广泛推广,更多地存在于教科书中作为理论参考[^1]。而TCP/IP模型由于其实用性强、易于实现的特点,已经成为当前互联网的核心协议簇。 ```python # 示例代码:TCP/IP模型中的简单HTTP请求 import requests response = requests.get("http://example.com") print(response.text) ``` #### 5. 联系与总结 尽管OSI模型TCP/IP模型次划分上存在差异,但它们的核心理念是一致的,即通过分设计简化网络通信的复杂性。TCP/IP模型可以看作是对OSI模型的一种简化优化,更符合实际应用的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值