介绍
七层模型,OSI(Open System Interconnection)。
参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。
它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。
每层的功能
| 层 | 功能 |
|---|---|
| 应用层 | 网络服务与最终用户的一个接口。 |
| 表示层 | 数据的表示、安全、压缩。 |
| 会话层 | 建立、管理、终止会话。 |
| 传输层 | 定义传输数据的协议端口号,以及流控和差错校验。 |
| 网络层 | 进行逻辑地址寻址,实现不同网络之间的路径选择。 |
| 数据链路层 | 建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。 |
| 物理层 | 建立、维护、断开物理连接。(由底层网络定义协议) |
TCP/IP 层级模型结构,应用层之间的协议通过逐级调用传输层(Transport layer)、网络层(Network Layer)和物理数据链路层(Physical Data Link)而可以实现应用层的应用程序通信互联。
应用层需要关心应用程序的逻辑细节,而不是数据在网络中的传输活动。
应用层其下三层则处理真正的通信细节。
在 Internet 整个发展过程中的所有思想和着重点都以一种称为 RFC(Request For Comments)的文档格式存在。
针对每一种特定的 TCP/IP 应用,有相应的 RFC 文档。
RFC 使一些基本相同的 TCP/IP应用程序实现了标准化,从而使得不同厂家开发的应用程序可以互相通信。
一些典型的 TCP/IP 应用有FTP、Telnet、SMTP、SNTP、REXEC、TFTP、LPD、SNMP、NFS、INETD 等。
层级关系
每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI的服务定义详细说明了各层所提供的服务。
某一层的服务就是该层及其下各层的一种能力,它通过接口提供给更高一层。各层所提供的服务与这些服务是怎么实现的无关。
通信特点:对等通信
对等通信,为了使数据分组从源传送到目的地,源端OSI模型的每一层都必须与目的端的对等层进行通信,这种通信方式称为对等层通信。在每一层通信过程中,使用本层自己协议进行通信。
四层模型
TCP/IP协议体系结构分为四个层次,从高到低依次是:网络接口层、网络互联层、传输层、应用层。
网络接口层主要负责利用物理介质将数据流传送给网络层所需要的功能。
网络层互联主要负责主机间或与路由器、交换机间对分组数据的路由选择和传递。
传输层主要负责整个报文从进程到进程的传送。
应用层主要负责提供用户接口和服务支持。
与四层模型的关系
每层的设备
在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的。
每层的协议
常用协议及知识点
网络层:ip ARP
-
ip协议
IP(Internet Protocol)协议,又称网际协议,它负责Internet上网络之间的通信,并规定了将数据从一个网络传输到另一个网络应遵循的规则,是TCP/IP协议的核心。
主要功能:无连接数据报传送、数据报路由选择和差错控制
IP协议是为了在分组交换(Packet-witched,又译为包交换)计算机通信网络的互联系统中使用而设计的,其只负责数据的路由和传输,在源节点(传输数据的出发源点)与目的节点(传输数据的最终接收点)之间传送数据报,并不处理数据内容。
此外,它也不负责解决数据报传达的可靠性等安全问题,而这些问题主要由TCP协议负责完成。
因特网看起来好像是真实存在的,但实际上它是一种并不存在的虚拟网络,只不过是利用IP协议把全世界所有愿意接入因特网的计算机局域网连接起来,使得它们彼此之间都能够通信。正如人类进行有效交流需要使用同一种语言一样,计算机之间的通信也要使用同一种“语言”,而IP协议正是这种语言。
IP协议是点到点的,协议简单,但不能保证传输的可靠性;
它采用无连接数据报机制,对数据是“尽力传递”,不验证正确与否,也不保证分组顺序,不发确认。
所以IP协议提供的是主机间不可靠的、无连接数据报传送。
任务
-
IP协议的任务是对数据报进行相应的寻址和路由选择,并从一个网络转发到另一个网络。
IP协议在每个发送的数据包前加入控制信息,其中包含了源主机的IP地址、目的主机的IP地址和其他一些信息。如果目的主机直接连在本网络中,IP可直接通过网络将数据报发给目的主机;如果目的主机在远端网络中,IP则通过路由器传送数据报,而路由器则依次通过下一网络将数据报传送到目的主机或再下一个路由器,也即一个IP数据报是通过互联网络,从一个IP模块传到另一个IP模块,直到终点为止的。
-
IP协议的另一项工作是分割和重编在传输层被分割的数据包。
由于数据报要从一个网络被传到另一个网络,当两个网络所支持传输的数据报大小不相同时,IP协议就要在发送端将数据报分割,然后在分割的每一段前再加入控制信息进行传输。当接收端接收到数据报后,IP协议将所有的片段重新组合形成原始数据。
-
IP协议提供尽最大努力投递(Best-effort Delivery)的传输服务,是不可靠无连接的数据报服务。
无连接是指主机之间不建立用于可靠通信的端到端的连接,给IP协议处理后的数据报都是互相独立的,源主机只是简单地将IP数据报发送出去,数据报传输路由可以完全不同,数据报抵达的先后顺序也不确定。不可靠性则是指数据报在传输过程中可能会出现丢失、重复、延迟时间大或者次序混乱等现象,但IP协议并不进行检查,不回送确认,也没有流量控制和差错控制功能。如果数据报在传输中发生某种错误,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。因此,要实现数据报的可靠传输,就必须依靠高层的协议或应用程序,如传输层的TCP协议。
版本:ipv4 ipv6
虽然IPv4设计得很好,但其缺点也逐渐显露出来:
①虽说借助子网化、无类寻址和NAT技术可以提高IP地址使用效率,因特网中IP地址的耗尽仍然是一个没有彻底解决的问题;
②IPv4没有提供对实时音频和视频传输这种要求传输最小时延的策略和预留资源支持; ③IPv4不能对某些有数据加密和鉴别要求的应用提供支持。
为了克服这些缺点,IPv6(Internet working Protocol version6)被提了出来。
在IPv6中,IP地址格式和分组长度以及分组的格式都改变了。
IPv6每个分组由必须的基本头部和其后的有效载荷组成。有效载荷由可选的扩展头部和来自上层的数据组成。基本头部占用40字节,有效载荷可以包含65535字节数据。
-
arp
ARP(Address Resolution Protocol),地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
传输层:TCP UDP
Internet 的传输层有两个主要协议,互为补充。
无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。
面向连接的是 TCP,该协议几乎做了所有的事情。
-
tcp
传输控制协议(TCP,Transmission Control Protocol)
是一种面向连接的、可靠的、基于字节流的传输层通信协议。
是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。
-
udp
用户数据报协议(UDP,User Datagram Protocol)
无连接的传输协议
UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法
UDP协议与TCP协议一样用于处理数据包,提供面向事务的简单不可靠信息传送服务。
UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那些需要在计算机之间传输数据的网络应用。
应用场景
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择。
会话层:DNS
Domain Name System
域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。
域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成,记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。
应用层:http ftp DHCP
- DHCP
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段lP地址范围,客户机登录服务器时就可以自动获得服务器分配的lP地址和子网掩码。
通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。
当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。
DHCP具有以下功能:
- 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
- DHCP应当可以给用户分配永久固定的IP地址。
- DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
- DHCP服务器应当向现有的BOOTP客户端提供服务。
DHCP有三种机制分配IP地址:
-
自动分配方式(Automatic Allocation)
DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。 -
动态分配方式(Dynamic Allocation)
DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。 -
手工分配方式(Manual Allocation)
客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。
DHCP封包在传输层( Transport Layer)是采用UDP协议。
当 Client传送封包给Server时,采用的是UDP 67 Port
从 Server传送给 Client,则是使用UDP 68 Port。
工作原理:
整个数据包:
(1)最前面的"以太网标头",设置发出方(本机)的 MAC 地址和接收方(DHCP 服务器)的 MAC 地址。前者就是本机网卡的 MAC 地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
(2)后面的"IP 标头",设置发出方的 IP 地址和接收方的 IP 地址。这时,对于这两者,本机都不知道。于是,发出方的 IP 地址就设为0.0.0.0,接收方的 IP 地址设为 255.255.255.255。
(3)最后的"UDP 标头",设置发出方的端口和接收方的端口。这一部分是 DHCP 协议规定好的,发出方是 68 端口,接收方是 67 端口。
这个数据包构造完成后,就可以发出了。
以太网是广播发送,同一个子网络的每台计算机都收到了这个包。
因为接收方的 MAC 地址是 FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的 IP 地址,才能确定是不是发过自己的。当看到发出方 IP 地址是0.0.0.0,接收方是 255.255.255.255,于是 DHCP 服务器知道"这个包是发过我的",而其他计算机就可以丢弃这个包。
接下来,DHCP 服务器读出这个包的数据内容,分配好 IP 地址,发送回去一个"DHCP 响应"数据包。这个响应包的结构也是类似的,以太网标头的 MAC 地址是双方的网卡地址,IP 标头的 IP 地址是 DHCP 服务器的 IP 地址(发出方)和 255.255.255.255(接收方),UDP 标头的端口是 67(发出方)和 68(接收方),分配给请求端的 IP 地址和本网络的具体参数则包含在 Data 部分。
新加入的计算机收到这个响应包,于是就知道了自己的 IP 地址、子网掩码、网关地址、DNS 服务器等等参数。
-
ftp
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。
FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。
同大多数Internet服务一样,FTP也是一个客户/服务器系统。
用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
用户要连上FTP 服务器,就要用到 FTP 的客户端软件。
此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口:其中20用于传输数据,21用于传输控制信息。
但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。
FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。
授权
要连上 FTP 服务器(即“登陆”),必须要有该 FTP 服务器授权的帐号,也就是说你只有在有了一个用户标识和一个口令后才能登陆FTP服务器,享受FTP服务器提供的服务。
地址格式
FTP地址如下:
ftp://用户名:密码@FTP服务器IP 或 域名:FTP命令端口/路径/文件名
上面的参数除FTP服务器IP或域名为必要项外,其他都不是必须的。
如以下地址都是有效FTP地址:
ftp://foolish.6600.org
ftp://list:[email protected]
ftp://list:[email protected]:2003
ftp://list:[email protected]:2003/soft/list.txt
匿名
互联网中有很大一部分 FTP 服务器被称为“匿名”(Anonymous)FTP 服务器。
这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。
-
http
见下一篇博客