OSI七层模型
2023-12-27 15:04:20 23 举报
OSI七层模型
作者其他创作
大纲/内容
网络层
传输数据
为了保证数据能从发送方传输到接收方,接收方会给发送方提供一些有关线路状况的反馈信息:1.通过差错检测和纠正,接收方对接收到的帧进行检测和纠正错误内容,如果无法纠正到正常帧数据,则要求发送方重发。2.基于反馈的流量控制,如果接收方接收速度慢于发送方发送速度,接收方会发送信息要求发送方减慢发送速度。3.基于速率的流量控制,可以限制发送方的传输速度,而无须接收方的反馈信息。3.接收方每成功接收到一个帧后会给发送方发送一条确定信息,发送方就知道此帧已成功发送出去。4.发送方每发送一帧时会引入一个计时器,如果长时间没有收到接收方的确定反馈,则认为此帧发送失败,需要重新发送。
主机S1
IP数据包头
ISP的设备
会话层
Domain_name
主机H2
3.3.2.MAC地址
名字
用途
实例
http
超文本(HTML)
http://www.ee.uwa.edu/~rob/
https
安全超文本
https://www.bank.com/accounts/
ftp
FTP
ftp://ftp.cs.vu.nl/pub/minix/README
file
本地文件
file://usr/suzanne/prog.c
mailto
发送邮件
mailto:JohnUser@acm.org
rtsp
流式媒体
rtsp://youtube.com/montypython.mpg
sip
多媒体呼叫
sip:eve@adversary.com
about
浏览器信息
about:plugins
应用层
5.3.常见端口用途
/index.html
1990年代的以太网网卡或叫NIC(Network Interface Card,以太网适配器)。这张卡可以支持基于同轴电缆的10BASE2 (BNC连接器,左)和基于双绞线的10BASE-T(RJ-45,右)。
Data
如果发送者和接收者都是同一个子网,那么可以通过ARP获取接收者的MAC地址,然后通过广播把数据发送出来。如果它们属于不同子网,那么就需要把数据交给路由器A,让路由器A进行转发到接收方路由器B,然后路由器B再把数据传给接收方。
包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节
URL是开放式的,允许浏览器通过多种协议去获取各种不同的资源。
6.2.万维网
主机H1
4.4.选路
A
120.24.209.93
IP数据包的\"标头\
UDP头
上面提到,以太网数据帧的\"标头\",包含了发送者和接收者的信息。那么,发送者和接收者是如何标识呢?以太网规定,连入网络的所有设备,都必须具有\"网卡\"接口。数据帧必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据帧的发送地址和接收地址,这叫做MAC地址。
网络的应用,为用户提供服务。应用层也需要协议的支持,以便各种应用程序能够工作:DNS;电子邮件;万维网(www);http;https;ftp;file...
传输层
单纯的0和1没有任何意义,必须规定解读方式:多少个传输比特算一组?每个比特位有何意义?这就是\"数据链路层\"的功能,它在\"物理层\"的上方,确定了0和1的组成方式。一组比特组成一个“帧”,组成帧的方法有很多种,早期的时候,每家公司都有自己的组成帧方式。如:1.字节计数法2.字节填充的标志字节法3.字节填充的标志比特法4.物理层编码违禁法逐渐地,Xerox公司创建的一种叫做\"以太网\"(Ethernet)的协议,占据了主导地位。以太网规定,组成每一帧分成两个部分:标头(Head)和数据(Data)。
通过ARP(地址解析协议)可以获得目标机器的MAC地址,有了MAC地址,系统怎样才能把数据包准确送到接收方?以太网采用了一种很\"原始\"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。
5.2.TCP
数据包
线路2
600
根据IP协议发送的数据,就叫做IP数据包。不难想象,其中必定包括IP地址信息。但是前面说过,数据链路层里的以太网数据帧只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?回答是不需要,我们可以把IP数据包直接放进以太网数据帧的\"数据\"部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构。具体来说,IP数据包也分为\"标头\"和\"数据\"两个部分。
D
对需要连接的用户建立会话服务:对话控制:记录由谁来传递数据令牌管理:禁止双方同时执行同一个关键操作同步功能:长链接过程中设置断点,防止崩溃后恢复到崩溃前的状态继续进行
Head
它在\"物理层\"的上方,确定了0和1的分组方式,以“以太网”的协议为标准,把一组电信号组成“帧”,使用MAC地址进行通信。还提供了重要的数据错误检测和修正功能,流控功能。
比特:比特==bit,用于代表二进制一个位1Byte = 8bit1KB = 1024B1M = 1024KB1G = 1024M1T = 1024G
根据网络部分和主机部分的占用多少位不同,把IP地址分为5种类型:
以太网头
物理层
现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做UDP协议(用户数据报协议 User Datagram Protocol),它的格式几乎就是在数据前面,加上端口号。UDP数据包,也是由\"标头\"和\"数据\"两部分组成。
应用层面向用户工作的,在应用层可以找到所有的网络应用。然而,即使在应用层也需要协议的支持,以便各种应用程序能够工作。举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式。
主机S2
UDP数据
\"标头\"部分主要包括版本、长度、IP地址等信息,\"数据\"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。
\"传输层\"的功能,就是建立\"端口到端口\"的通信。相比之下,\"网络层\"的功能是建立\"主机到主机\"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做\"套接字\"(socket)。有了它,就可以进行网络应用程序开发了。
4.3.ARP
TCP/IP参考模型
有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。接下来的问题是,同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做\"端口\"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。\"端口\"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。
传输层和网络层一起构成了网络协议层次的核心。网络层使用数据报或虚电路技术为端到端通信提供数据包交付服务。传输层架构在网络层提供的服务之上,把数据传递服务从两天计算机之间扩展到量两台计算机上的进程之间,并且服务所需的可靠性程度独立于当前使用的物理网络。传输层为应用层使用网络提供了抽象的模型。
1.2.层与协议
上图中,1号计算机向2号计算机发送一个数据帧,同一个子网络的3号、4号、5号计算机都会收到这个帧。它们读取这个帧的\"标头\",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做\"广播\"(broadcasting)。有了数据帧的定义、网卡的MAC地址、广播的发送方式,数据的检错纠正,流量控制,\"数据链接层\"就可以在多台计算机之间传送数据了。
如果传输需要经过多个路由器,而且传输的线路可能不止一条,那么就需要选择一条最优的线路把数据传输到目标路由器,这里就是选路。由上图子网1主机H2需要将数据包传输到子网2主机S2,那么它可能选择路线1或路线2。选路有两种方式,无连接服务的数据报网络;面向连接服务的虚电路网络。数据报网络:每次传输一个数据包都需要选择一条最优线路进行。虚电路网络:先选择一条最优的线路,此线路称为虚电路(VC,virtual circuit),接下来传输的数据包都走此虚电路。我们的IP协议选路使用的是数据报网络,而电话通信使用的是虚电路网络。我们来对比下两种方式:
5.1.UDP
将IP数据包分组传输到目标地方。数据包的格式和协议为:因特网协议(IP协议),因特网控制报文协议(ICMP协议)作为辅助协议,Internet组管理协议(IGMP协议)
由上面一条例子,添加一条域名解析记录,主机记录为www,即将域名解析为:www.yangxg.com,此域名在DNS服务器上缓存时间为600秒,类型为A,即将域名指向一个IPv4地址,Value为IPv4地址。最后此记录生效后,域名www.yangxg.com指向地址120.24.209.93
\"标头\"部分由8个字节组成,主要定义了发出端口和接收端口,\"数据\"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的\"数据\"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:
链路层
3.3.3.广播
2.物理层
6.1.DNS
4.网络层
www.yangxg.com
星型拓扑图
标题 1
协议
20,21
文件传输
22
SSH
远程登录
25
SMTP
电子邮件
80
HTTP
万维网
110
POP-3
143
IMAP
443
HTTPS
543
RTSP
631
IPP
问题
数据报网络
虚电路网络
电路建立
不需要
需要
寻址
每个数据包 包含全部的源和目标地址
每个数据包 包含简短的VC号
状态信息
路由器不保留连接状态
针对每个连接,每条VC都需要路由器保存其状态
路由方式
每个数据包被单独路由
建立VC时选择路由,所有数据包都遵循该路由
路由器失效的影响
没影响,除了那些路由器崩溃期间丢失的包
穿过故障路由器的所有VC都将中断
服务质量
困难
容易,如果在预先建立每条VC时有足够的资源可分配
拥塞控制
物理层的作用的是将比特从一台机器传输到另一台机器。那么必须要将两台机器连接起来才能进行传输比特,连接两台机器用到的材料(物理介质)有多种选择,不同的选择会对传输的大小,快慢,成本各不相同。常见有:双绞线;光纤;同轴电缆;光缆;无线。
子网2
下面说下访问一个网页时的解析流程:1.浏览器确定URL2.浏览器请求DNS查询服务器www.yangxg.com的IP地址3.DNS返回地址:120.24.209.934.浏览器与120.24.209.93机器的80端口建立一个TCP连接,80端口是http协议的知名端口5.浏览器发送http报文,请求/index.html页面数据6.www.yangxg.com服务器发回数据给浏览器7.浏览器显示页面/index.html内容8.如果短期内没有向同一个服务器发出请求,那么释放TCP连接
Type
OSI参考模型
以太网协议,依靠MAC地址发送数据。理论上,单单依靠MAC地址,上海的网卡就可以找到洛杉矶的网卡了,技术上是可以实现的。但是,这样做有一个重大的缺点。以太网采用广播方式发送数据包,所有成员人手一\"包\",不仅效率低,而且局限在发送者所在的子网络。也就是说,如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。互联网是无数子网络共同组成的一个巨型网络,想象上海和洛杉矶的电脑会在同一个子网络,这几乎是不可能的。因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用\"路由\"方式发送。遗憾的是,MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。这就导致了\"网络层\"的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做\"网络地址\",简称\"网址\"。于是,\"网络层\"出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。所以网络层关注的是如何将源端数据包一路发送到接收方。为了将数据包发送到接收方,可能沿途要经过许多的中间路由器,所以需要选择最优的路径来发送数据,并引入了第二地址:网络地址(IP地址)。
根据域名用途不同划分了多种顶级域名(一级域名)
IN
前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。
表示层
B
数据链路层
子网1
为两台主机上的应用程序提供端口到端口的通信。在TCP/IP协议族中,有两个互不相同的传输协议:可靠的TCP(传输控制协议)和不可靠的UDP(用户数据报协议)。
路由器
我们当前使用的TCP/IP模型进行编写socket应用,关注点都是在应用层和传输层提供的接口上,对于往下的层的功能是完全透明的,需要理解整个互联网,必须从最下层开始,自下而上理解每一层的功能。不管OSI的七层模型,还是TCP/IP的四层模型,现在我这边把它整理为五层模型进行分析。
数据包数据
UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。TCP数据包和UDP数据包一样,都是内嵌在IP数据包的\"数据\"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
C
设备之间的比特流的传输,规定物理接口,规定电气特性设备:网线,网卡物理接口:网线接口,音频接口电气特性:如网线8根线,1326传信号,其他线不传
UDP数据包非常简单,\"标头\
OSI与TCP/IP的主要区别:1.OSI模型是在应用层相关协议(FTP,HTTP,WWW等等)开发出来前设计的。而TCP/IP是先有相关的协议集然后建立模型的,只适用于TCP/IP网络,不适用于其他协议。2.实际应用市场不同,OSI只是理论上的模型,并没有成熟的产品,而TCP/IP已经成为“实际上的国际标准”。
\"标头\"包含数据包的一些说明项,比如发送者、接收者、数据类型等等;\"数据\"则是数据包的具体内容。\"标头\"的长度,固定为18字节。\"数据\"的长度,最短为46字节,最长为1500字节。因此,整个\"帧\"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。
建立“端口到端口”的通信(进程绑定端口port),UDP协议的不可靠无连接快速传输和TCP协议可靠有连接传输。传输层还启到流控功能。
Time_to_live
Value
4.2.IP数据包
1.1.五层模型
总线型拓扑图
规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。
Class
每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做\"协议\"(protocol)。互联网的每一层,都定义了很多协议。这些协议的总称,就叫做\"互联网协议\"(Internet Protocol Suite)。它们是互联网的核心。
确定数据的编码方式,如英文使用ASCII,中文使用GB2312,音乐使用MP3
4.1.IP地址
域
启动时间
com
商业
1985
edu
教育
gov
政府
int
国际组织
1988
net
网络
协议(http)
DNS(Domain Name System)域名系统,它负责处理Internet命名问题。每台计算机都拥有它的唯一IP,要想向它发送数据必须事先知道IP地址,然而IP对于我们来说非常难于记忆,于是我们引入了可读性好的高层名字,即为“域名”。域名系统就是将一个名字映射到IP地址,应用程序调用一个名为“解析器”的库程序,然后解析器向本地DNS服务器发送一个包含该名字的报文请求,本地DNS服务器解析到IP返回给应用程序。
路径名
http://
ARPANET是由美国国防部资助的一个研究性网络。它通过租用的电话线,将几百所大学和政府部门的计算机设备连接起来。后来,当卫星和无线网络也要加入时,发现原来的协议在它们互连时遇到了很大的麻烦,因而需要一种新的参考体系结构。所以,以无缝的方式将多个网络连接起来是从一开始就制定的主要设计目标之一。这个体系结构后来称为TCP/IP参考模型,以其中两个最主要的协议命名。该体系结构最初在1974年描述,后来在1989年中被重新修订并得到Internet团体的标准化。
DNS域名
3.2.差错控制
以太网(Ethernet)是一种计算机局域网技术。IEEE组织的IEEE802.3标准制定了以太网的技术标准。以太网是目前应用最普遍的局域网技术,取代了其他局域网标准如令牌环、FDDI和ARCNET。以太网的标准拓扑结构为总线型拓扑,但目前的快速以太网(100BASE-T、1000BASE-T标准)为了减少冲突,将能提高的网络速度和使用效率最大化,使用交换机(Switch hub)来进行网络连接和组织。如此一来,以太网的拓扑结构就成了星型;但在逻辑上,以太网仍然使用总线型拓扑和CSMA/CD(Carrier Sense Multiple Access/Collision Detection,即载波多重访问/碰撞侦测)的总线技术。
习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数\"子网掩码\"(subnet mask)。所谓\"子网掩码\",就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。知道\"子网掩码\",我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
3.1.组帧
因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。通常情况下,对方的IP地址是已知的,但是我们不知道它的MAC地址。所以,我们需要一种机制,能够从IP地址得到MAC地址。这里又可以分成两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的\"交换机\",让交换机去处理。第二种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个\"广播\"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。总之,有了ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。
包含了所有的高层协议,负责处理特定应用程序的细节。重要的高层协议有:虚拟终端协议TELNET,文件传输协议FTP,电子邮件协议SMTP,域名系统DNS,超文本协议HTTP
在OSI出现之前,存在众多的计算机网络体系结构。IBM公司的SNA网络体系结构和DEC公司的DNA数字网络体系结构最为著名。为了解决不同体系结构的网络的互联问题,ISO在1981年订制了OSI参考模型(Open System Interconnection 开发系统互连参考模型)
建立“主机到主机”的通信(IP地址),数据传输选路
5.传输层
6.应用层
线路1
3.3.1.以太网定义
每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。
主机S3
主机H3
3.3.以太网
3.数据链路层
www
0 条评论
回复 删除
下一页