首页 > 代码库 > 网络互联参考模型(详解)
网络互联参考模型(详解)
转自:真实的归宿
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
网络互联参考模型
1. 什么是协议
为了使数据可以在网络上从源传递到目的地,网络上所有设备需要“讲”相同的“语言”
描述网络通信中“语言”规范的一组规则就是协议
例如:两个人交谈,必须使用相同的语言,如果你说汉语,他说阿拉伯语……
数据通信协议的定义
决定数据的格式和传输的一组规则或者一组惯例
2. 协议分层
网络通信的过程很复杂:
数据以电子信号的形式穿越介质到达正确的计算机,然后转换成最初的形式,以便接收者能够阅读
为了降低网络设计的复杂性,将协议进行了分层设计
分层设计的意义:
1) 用户服务层的模块设计可相对独立于具体的通信线路和通信硬件接口的差别
2) 而通信服务层的模块设计又可相对独立于具体用户应用要求的不同
例如:文件传输或电子邮件服务模块的设计,不必关心底层通信线路是光纤还是双绞线
邮局实例:
? 邮局对于写信人来说是下层
? 运输部门是邮局的下层
--下层为上层提供服务
? 写信人与收信人之间使用相同的语言
? 邮局之间的约定
--同层次之间使用相同的协议
3. OSI的七层框架
数据的封装与解封装过程:
1)直观:
2)大体过程:
3)协议描述
4. TCP/IP协议参考模型
由于OSI模型和协议比较复杂,所以并没有得到广泛的应用。于是20世纪70年代中期美国国防部为ARPANET开发了TCP/IP网络体系结构, TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次和5个层次,四层分别是:网络访问层、网际互连层、传输层(主机到主机)、和应用层。而TCP/IP模型因其开放性和易用性在实践中得到了广泛的应用,TCP/IP协议栈也成为互联网的主流协议。
4.1 TCP/IP各层对应的协议
4.2TCP/IP模型与OSI模型的比较
相同点:
1)两者都是以协议栈的概念为基础
2)协议栈中的协议彼此相互独立
3)下层对上层提供服务
不同点:
1)OSI是先有模型;TCP/IP是先有协议,后有模型
2)OSI适用于各种协议栈;TCP/IP只适用于TCP/IP网络
3)层次数量不同
5.TCP/IP 协议数据封装的过程
以传输层采用TCP或者UPD、网络层采用IP、链路层采用Ethernet为例,可以看到TCP/IP中报文的封装过程如图所示。用户数据经过应用层协议封装后传递给传输层,传输层封装TCP头部,交给网络层,网络层封装IP头部后,再交给数据链路层,数据链路层封装Ethernet帧头和帧尾,交给物理层,物理层以比特流的形式将数据发送到物理线路上。
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
5.1 物理层-网络的基础
物理层是TCP/IP模型的最底层
1)功能:物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境, 它利用传输介质为数据链路层提供物理连接。为此,该层定义了物理链路的建立、维护和拆除有关的机械、电气、功能和规程特性。
包括信号线的功能、“0”和“1”信号的电平表示、数据传输速率、物理连接器规格及其相关的属性等。物理层的作用是通过传输介质发送和接收二进制比特流。
2)物理层的设备:
物理层的媒体包括架空明线、平衡电缆、光纤、无线信道等。通信用的互连设备指DTE和DCE间的互连设备。DTE既数据终端设备,又称物理设备,如计算机、终端等都包括在内。而DCE则是数据通信设备或电路连接设备,如调制解调器等。数据传输通常是经过DTE──DCE,再经过DCE──DTE的路径。互连设备指将DTE、DCE连接起来的装置,如各种插头、插座。LAN中的各种粗、细同轴电缆、T型接头、插头,接收器,发送器,中继器等都属物理层的媒体和连接器。
3)物理层规定的特性
为了传输信号,物理层规定了以下这些特性:
机械特性:指明通信实体间硬件连接接口的机械特点
电气特性:规定了在物理连接上导线的电气连接及有关的电路的特性
功能特性:指明物理接口各条信号线的用途(用法)
规程特性:指明利用接口传输位流的全过程及各项用于传输的事件发生的合法顺序
5.2数据链路层——以太网
数据链路可以粗略地理解为数据通道。
1)功能:数据链路层是为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。
- 为IP模块发送和 接收IP数据报。
- 为ARP模块发送ARP请求和接收ARP应答。
- 为RARP发送RARP请 求和接收RARP应答
数据帧中包含物理地址(又称MAC地址)、控制码、数据及校验码等信息。该层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路转换成对网络层来说无差错的数据链路。
此外,数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻塞。
2)链路层即二层网络,交换机由于运行在第二层(数据链路层),故被称为二层网络设备。
二层交换机一般只认帧中的源和目的MAC地址进行数据传输。根据MAC地址寻址,通过站表选择路由,站表的建立和维护由交换机自动进行。而路由器属于OSI第三层即网络层设备,它根据IP地址进行寻址,通过路由表路由协议产生。
二层交换机最大的好处是快速:由于交换机只须识别帧中MAC地址,直接根据MAC地址产生选择转发端口算法简单,便于ASIC实现,因此转发速度极高。
但交换机的工作机制也带来一些问题:
1.回路:根据交换机地址学习和站表建立算法,交换机之间不允许存在回路。一旦存在回路,必须启动生成树算法,阻塞掉产生回路的端口。而路由器的路由协议没有这个问题,路由器之间可以有多条通路来平衡负载,提高可靠性。
2.负载集中:交换机之间只能有一条通路,使得信息集中在一条通信链路上,不能进行动态分配,以平衡负载。而路由器的路由协议算法可以避免这一点,OSPF路由协议算法不但能产生多条路由,而且能为不同的网络应用选择各自不同的最佳路由。
3.广播控制:交换机只能缩小冲突域,而不能缩小广播域。整个交换式网络就是一个大的广播域,广播报文散到整个交换式网络。而路由器可以隔离广播域,广播报文不能通过路由器继续进行广播。
4.子网划分:交换机只能识别MAC地址。MAC地址是物理地址,而且采用平坦的地址结构,因此不能根据MAC地址来划分子网。而路由器识别IP地址,IP地址由网络管理员分配,是逻辑地址且IP地址具有层次结构,被划分成网络号和主机号,可以非常方便地用于划分子网,路由器的主要功能就是用于连接不同的网络。
5.保密问题:虽说交换机也可以根据帧的源MAC地址、目的MAC地址和其他帧中内容对帧实施过滤,但路由器根据报文的源IP地址、目的IP地址、TCP端口地址等内容对报文实施过滤,更加直观方便。
6.介质相关:交换机作为桥接设备也能完成不同链路层和物理层之间的转换,但这种转换过程比较复杂,不适合ASIC实现,势必降低交换机的转发速度。因此目前交换机主要完成相同或相似物理介质和链路协议的网络互连,而不会用来在物理介质和链路层协议相差甚元的网络之间进行互连。而路由器则不同,它主要用于不同网络之间互连,因此能连接不同物理介质、链路层协议和网络层协议的网络。路由器在功能上虽然占据了优势,但价格昂贵,报文转发速度低。近几年,交换机为提高性能做了许多改进,其中最突出的改进是虚拟网络和三层交换。
3)以太网工作在数据链路层,
1、数据链路层为网络层提供可靠的数据传输;
2、基本数据单位为帧;
3、主要的协议:以太网协议;
4、两个重要设备名称:网桥和交换机。
5.3网络层
定义了基于IP协议的逻辑地址
连接不同的媒介类型
选择数据通过网络的最佳路径
1) 功能:负责点到点(point-to-point)的传输(这里的“点”指主机或路由器)
网络层是为传输层提供服务的,传送的协议数据单元称为数据包或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过路径选择算法(路由)将数据包送到目的地。另外,为避免通信子网中出现过多的数据包而造成网络阻塞,需要对流入的数据包数量进行控制(拥塞控制)。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。
2) 网络地址: 网络层地址由两部分地址组成:网络地址和主机地址。网络地址是全局唯一的。
3)路由器在网络层,所以是第三层设备。Internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。
二层交换机和三层路由器是性能和功能的矛盾体,交换机交换速度快,但控制功能弱,路由器控制性能强,但报文转发速度慢。解决这个矛盾的最新技术是三层交换,既有交换机线速转发报文能力,又有路由器良好的路由和寻址控制功能。
网络层的重点为:
1、网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;
2、基本数据单位为IP数据报;
3、 包含的主要协议:
IP协议(Internet Protocol,因特网互联协议);
ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
ARP协议(Address Resolution Protocol,地址解析协议);
RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
4、 重要的设备:路由器。
5.4 传输层
传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目的主机)
1)功能:传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。
传输层传送的协议数据单元称为段或报文。
主要有传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(UserDatagram Protocol),它们都是建立在IP协议的基础上
传输控制协议TCP提供可靠的面向连接服务,用户数据报协议UDP提供简单的无连接服务。
网络层的重点:
1、传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
2、包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议);
3、重要设备:网关。
5.5 应用层
应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等. 是用户与网络的接口。该层通过应用程序来完成网络用户的应用需求,如文件传输、收发电子邮件等。
应用层协议可分为3类:
(1)依赖于TCP的应用协议,如远程终端协议Telnet,文件传输型的电子邮件协议SMTP,文件传输协议FTP,超文本传输协议HTTP,外部网关协议BGP等。
(2)依赖于UDP的协议,例如单纯文件传输协议TFTP,简单网络管理协议SNMP,域名系统DNS,内部网关协议RIP,动态主机配置协议DHCP和引导程序协议BOOTP等。
(3)依赖于TCP和UDP的协议,如通信用管理信息协议CMOT。当然,一些没有标准化的建立在TCP/ IP协议簇之上的用户应用程序(或专用程序)也属于应用层。
目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示。
以太网驱动程序(网卡)首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。
注意,虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。
整个数据封装的格式如下图所示:
我们还是用邮局的例来说明:
1)用户:即电脑主机,所在地是某乡镇
2)应用层用户数据:信的内容(使用http协议来写)
3)传输层收信职员:用户需要投递信件,写好目的地址是北京,邮编门牌号,然后交给邮局收信职员(传输层:需要可靠的传输:tcp封装信封投递到邮局,目的地址是ip,门牌号:mac地址。网卡的’MAC‘地址(每一块网卡的MAC地址都是不一样的,这是网卡的制造商写死在网卡的芯片中的))
4)网络层邮局排序工人:邮政有多个层级,比如乡级邮政所不可能直接送到北京,但是他知道先送到哪,比如送往县城,如果在本埠,直接发给送信员,如外埠,需要送到县邮政局或者直接到省级,然后送到北京。每个节点都是路由。(网络层,设备路由器,路由到目标地址(ip)中间可能经过很多路由器)
5)链路层乡邮局包装信封人员:包装信封,比如送往县邮政局的是一摞,或者直接送往省局是一摞,每一摞上门都写明了具体目的地址和本地邮局地址(链路层:需要封装目的地址和源地址)
6) 物理层运输部门:把信件送到县邮政局(物理层)
7)链路层县邮局包装信封人员:经县邮局师傅拆装确认,没错,就是我们这里,然后师傅把后来又加的那层信封拆掉了。
8)网络层县邮局排序工人:查了这邮件无法直接送达北京,得先邮寄到省级邮政,查明了地址(路由),然后交给包装信封人员。
9)链路层县邮局包装信封人员:包装信封,送往运输部门。
10)物理层运输部门:把信件送到省邮政局(物理层)
重复上面的步骤,直到送到北京某地邮政局。
11)传输层送信职员:根据信封写的地址和门牌号,送到用户手里
12)应用层:用户收到邮件,拆开信封,根据http协议读取内容。
假设用户A,住在某个小区里面(局域网),如果想给该小区用户B写信件,你可以直接跑他家,即局域网是相互认识的。如果你不知道用户B的门牌号(mac地址),没问题,在小区门口有个看门的李大爷,他知道小区各个业主的门牌,李大爷就是你的网关。
如果你想邮寄信件到其他小区的用户B,怎么办? 这个时候投递信件到邮局,邮局负责把信件寄用户B.
6.ifconfig详解
ifconfig 是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为常用的。可以用这个工具来临时性的配置网卡的IP地址、掩码、广播地址、网关等。也可以把 它写入一个文件中(比如/etc/rc.d/rc.local),这样系统引导后,会读取这个文件,为网卡设置IP地址
1、 ifconfig 查看网络接口状态
Linux里面的ifconfig -a命令,这个命令通常会得到如下的结果
em1 Link encap:Ethernet HWaddr 34:17:EB:BB:ED:93
inet addr:192.168.1.48 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::3617:ebff:febb:ed93/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:847304 errors:0 dropped:0 overruns:0 frame:0
TX packets:540883 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:277120836 (264.2 MiB) TX bytes:195312995 (186.2 MiB)
Interrupt:20 Memory:f7c00000-f7c20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3620024 errors:0 dropped:0 overruns:0 frame:0
TX packets:3620024 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1035581503 (987.6 MiB) TX bytes:1035581503 (987.6 MiB)
其中,em1就是以太网接口,而lo则是loopback接口。这也说明这个主机在网络链路层上至少支持loopback协议和以太网协议。
注意有的网卡标识是eth0等
em=embedded device,表示系统识别出这块网卡是集成在主板上的;而eth是传统的以太网卡设备的命名机制。
em1 表示第一块网卡,Link encap: 这个字段代表该网络设备位于OSI物理层的名称Ethernet,即以太网。HWaddr:网卡的硬件地址,也就是MAC地址。inet addr:显示网卡的IP地址 Bcast:该接口的网络广播地址 Mask:该接口的网络子网掩码。
第4行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。 Metric:默认的路由成本。
第5,6行:接收、发送数据包情况统计:RX :已接受的封包统计。TX:已传送或者传送中的封包统计
第7行:collisions:网卡接口发生封包碰撞的次数,txqueuelen:网卡设置的传送队列长度
第8行:接收、发送数据字节数统计信息。RX bytes:已接收的封包数据量,单位是字节。 TX bytes:已传送的封包数据量,单位是字节
第9行:这张网卡接口的IRQ中断值。
lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
2、命令参数:
up 启动指定网络设备/网卡。
down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
arp 设置指定网卡是否支持ARP协议。
-promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a 显示全部接口信息
-s 显示摘要信息(类似于 netstat -i)
add 给指定网卡配置IPv6地址
del 删除指定网卡的IPv6地址
<硬件地址> 配置网卡最大的传输单元
mtu<字节数> 设置网卡的最大传输单元 (bytes)
netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel 建立隧道
dstaddr 设定一个远端地址,建立点对点通信
-broadcast<地址> 为指定网卡设置广播协议
-pointtopoint<地址> 为网卡设置点对点通讯协议
multicast 为网卡设置组播标志
address 为网卡设置IPv4地址
txqueuelen<长度> 为网卡设置传输列队的长度
4.使用实例:
实例1:启动关闭指定网卡
ifconfig eth0 up #为启动网卡eth0
ifconfig eth0 down #为关闭网卡eth
ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。
实例2:为网卡配置和删除IPv6地址
ifconfig eth0 add 33ffe:3240:800:1005::2/64 为网卡eth0配置IPv6地址;
ifconfig eth0 del 33ffe:3240:800:1005::2/64 为网卡eth0删除IPv6地址;
练习的时候,ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。
实例4:用ifconfig修改MAC地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE 修改MAC地址
实例5:配置IP地址
ifconfig eth0 192.168.120.56 #给eth0网卡配置IP地:192.168.120.56
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 #给eth0网卡配置IP地址:192.168.120.56 ,并加上子掩码:255.255.255.0
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255
#给eth0网卡配置IP地址:192.168.120.56,加上子掩码:255.255.255.0,加上个广播地址: 192.168.120.255
实例6:启用和关闭ARP协议
ifconfig eth0 arp #开启网卡eth0 的arp协议;
ifconfig eth0 -arp #关闭网卡eth0 的arp协议;
实例7:设置最大传输单元
ifconfig eth0 mtu 1500
设置能通过的最大数据包大小为 1500 bytes
备注:用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
7.网络连接的时间
TCP建立连接,根据网络环境不同,使用的时间如下:
1、本机的话,通信内容直接走内存。
2、局域网走网卡,然后通过交换机,指定到相应主机。tcp建立3次握手,一般耗0.6毫秒左右。
3、外网通过网卡->路由器->互联网。
网络互联参考模型(详解)