通信与网络安全管理之ISO七层模型与TCP/IP模型

一.ISO参考模型
OSI七层模型一般指开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。
它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。具体每层的定位如下图所示:
1.物理层(physical)
将位转换为用于传输的电压。控制同步、数据传输速率、线缆噪声和介质访问
一般为网络接口卡和驱动程序将位信号转换为电压
此层定义了标准接口:10BASE-T、ISDN、DSL、SONET、V.35、V.24、EIA/TIA 232、RJ45
2.数据链路层(data link)
负责介质访问和链路管理。负责上层顺利建立通信,识别是局域网、广域网还是ATM。将数据转换成网络层需要知道格式(电气电压),重新安排未按照数据传输的数据帧,出现错误时通知上层协议
两个功能性子层
  • LLC(逻辑链路控制层):负责与网络层的协议通信,负责控制数据流和检查错误
  • MAC(介质访问控制层):以适当的协议加载,以满足物理层需求。接收来自LLC层的数据,知道到底是局域网、城域网还是广域网。知道如何把该数据包传出之前添加最后的首部和尾部
数据从网络层先传输到LLC,由LLC传输到MAC,再由MAC传输到物理层
网络层——LLC-MAC——物联层
 
关于IEEE 802规范
IEEE 802规范定义了网卡如何访问传输介质(如光缆、双绞线、无线等),以及如何在传输介质上传输数据的方法,还定义了传输信息的网络设备之间连接建立、维护和拆除的途径。遵循IEEE 802标准的产品包括网卡、桥接器、路由器以及其他一些用来建立局域网络的组件。 
  • IEEE802.3-------CSMA/CD访问控制方法与物理层规范 
  • IEEE802.11------无线局域网访问控制方法与物理层规范 
常见协议:PPP、ATM、L2TP、FDDI、ARP、RARP、SLIP、HDLC、帧中继
ARP 是IP到MAC
RARP 是MAC到IP
 
数据链路层将数据称为帧(frame)
3.网络层(network)
主要实现IP选址及路由,体现形式包括路由表和IP地址。在数据包头部插入信息,以便将数据正确的编址和路由,并且将数据实际路由到正确的目的地。
常见协议:IP、ICMP、RIP、EIGRP、BGP、IGMP、BGP

协议

协议号

ICMP

1

IGMP

2

IP 4

TCP

6

EGP

8

IGP

9

UDP

17

RDP

27

IPV6

41

ESP

50

AH

51

TLSP

56

EIGRP

88

OSPF

89

VRRP

112

L2TP

115

STP

118

SCTP

132

FC光纤通道

133

网络层叫做数据报(datagram)
4.传输层(transport)
建立、维护和管理端到端的连接,将数据组装成数据流。通过传输层将一次发送多少信息、接收数据如何进行完整性验证,如何确定数据是否丢失等参数沟通一致
常见协议:TCP、UDP、SPX(序列包交换)
格式为数据流,传输层叫做段(segment)
5.会话层(session)
负责在两个应用程序之间建立连接。会话层控制进程与进程之间的通信,当一个子进程在远程,应用程序将调用会话层协议
工作三个阶段:建立连接、数据传输、连接释放
常见协议:SQL、RPC、NetBIOS、CORBA、DCOM、SOAP、Net Freamwork、PAP、PPTP
会话常见的三种模式:单工模式、半双工模式、全双工模式
与应用层的区别:会话层只控制应用程序到应用程序之间的通信
会话层协议在网络环境使用很少,通过配置防火墙策略控制开放的对象。一般在一个网络中应用与应用之间通信使用
 
6.表示层(presentation)
将所有信息转变为所有遵循ISO模型的计算机都能理解的格式。不考虑数据的含义,而只关心数据的格式和语法
将应用程序使用的格式翻译成能够用于通过网络传递消息的标准格式
常见服务:TIFF、GIF、JPEG、数据加密和压缩、ASCII、EBCDIM、MPEG、MIDI
这一层只有服务,没有协议
加密、压缩、标准格式化
7.应用层(application)
提供文件传输、信息交换、终端会话以及更多功能
包括支持应用的协议:SMTP、HTTP、FTP、TFTP
应用使用API与协议进行通信
二.TCP/IP模型
TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。ARPANET是由美国国防部DoD(U.S.Department of Defense)赞助的研究网络。逐渐地它通过租用的电话线连结了数百所大学和政府部门。当无线网络和卫星出现以后,现有的协议在和它们相连的时候出现了问题,所以需要一种新的参考体系结构。这个体系结构在它的两个主要协议出现以后,被称为TCP/IP参考模型(TCP/IP reference model)。
TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层(主机到主机)、传输层、和应用层。
1)应用层:应用层对应于OSI参考模型的应用层、表示层、会话层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等.
2)传输层:传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).
TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务.
3)网际互联层:网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
4)网络接入层(即主机-网络层)
网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。
 
 
 
工作过程:将应用层将数据格式化成为消息;消息传输至传输层,对数据进行分片;数据传输到网络层,添加路由和寻址信息,变成数据包;传输到网络接口层添加头部和尾部,变成数据帧。数据从一层传输到下一层称为数据封装。
数据在TCP协议下,称为分片,在UDP协议下成为数据报文。
在应用系统在网络通信过程中,主要面向TCP和UDP两类协议族展开。以下针对TCP和UDP展开进行描述。
1.TCP协议
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的可靠的基于字节流的传输层通信协议,由IETF的RFC 793定义。
1)TCP协议机制
a)数据分片:发送端负责分片,接收端负责重组。
b)到达确认:接收端对分片逐一确认。
c)超时重发:发送方对分片进行计时,在未在计时时间收到接收端确认消息,将重新发送分配。
d)滑动窗口:接收端只允许接收其他大小的缓冲数据,由滑动窗口控制,防止较快主机致使较慢主机的缓冲区溢出。
e)失序处理:分片达到可能存在混乱,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
f)重复处理:作为IP数据报来传输的TCP分片会发生重复,TCP的接收端必须丢弃重复的数据。
g)数据校验:TCP将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。
TCP头部信息如下所示:

端口的区间为0-65535,即可提供65536种可能,65536用位表示是2^16,占了16位,每8位为1比特,端口号字段在IP包中占了2比特。
 
2)TCP建立连接——经典的三次握手
第一步:主体向客体发送一个SYN的包
第二步:客体向主体回复一个SYN/ACK包
第三步:主体向客体回复一个ACK包
3)TCP关闭连接
第一步:主体发起关闭连接,发送FIN的包
第二步:客体向主体发送ACK包
第三步:客体向主体发送FIN包
第四步:主体向客体发送ACK包
4)常见攻击
TCP SYN flood:又称半开式连接攻击,每当我们进行一次标准的TCP连接,都会有一个三次握手的过程,而TCP-SYN Flood在它的实现过程中只有前两个步骤。这样,服务方会在一定时间处于等待接收请求方ACK消息的状态。由于一台服务器可用的TCP连接是有限的,如果恶意攻击方快速连续地发送此类连接请求,则服务器可用TCP连接队列很快将会阻塞,系统资源和可用带宽急剧下降,无法提供正常的网络服务,从而造成拒绝服务。
TCP session hijacking(会话劫持):TCP建立连接会约定一个序列号插入数据包头部,通过欺骗双向的头部,实现会话的劫持
2.UDP协议
UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成  ,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。
UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。常用的UDP端口号有:53(DNS)、69(TFTP)、161(SNMP),使用UDP协议包括:TFTP、SNMP、NFS、DNS、BOOTP。
UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。
3.IP协议
IP协议是为了在分组交换(Packet-switched,又译为包交换)计算机通信网络的互联系统中使用而设计的。
IP是一个无连接的、不可靠的、点对点的协议,只能尽力(Best Effort)传送数据,不能保证数据的到达
IP的主要目的是通过一个互联的网络传输数据报,涉及两个最基本的功能:
  • 寻址(Addressing):IP协议根据数据报首部中包括的目的地址将数据报传送到目的节点,这就要涉及传送路径的选择,即路由功能。IP协议使用IP地址来实现路由。 并从一个网络转发到另一个网络
  • 分片(Fragmentation):IP协议还提供对数据大小的分片和重组,以适应不同网络对数据包大小的限制。如果网络只能传送小数据包,IP协议将对数据报进行分段并重新组成小块再进行传送。
 
IP协议使用以下4个主要的机制来提供服务:
  • 服务类型(Type of Service):用来指示要求的服务质量。
  • 生存时间(Time to Live):数据报生存时间的上限。
  • 选项(Operation):提供在某些情况下需要或有用的控制功能。
  • 首部校验和(Header Checksum):提供对IP首部内容进行出错检测的功能。
3.1.IPV4
3.1.1.IPV4报文格式
(1)版本(4位):该字段定义IP协议版本。
(2)头部长度(4位):该字段定义数据报协议头长度,表示协议头部具有32位字长的数量。协议头最小值为5,最大值为15。 
(3)服务(8位):该字段定义上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。前3位成为优先位,后面4位成为服务类型,最后1位没有定义。这些8位字段用于分配优先级、延迟、吞吐量以及可靠性。
(4)总长度(16位):该字段定义整个IP数据报的字节长度,包括协议头部和数据。其最大值为65535字节。以太网协议对能够封装在一个帧中的数据有最小值和最大值的限制(46~1500个字节)。
(5)标识(16位):该字段包含一个整数,用于识别当前数据报。当数据报分段时,标识字段的值被复制到所有的分段之中。该字段由发送端分配帮助接收端集中数据报分段。 
(6)标记(3位):该字段由3位字段构成,其中最低位(MF)控制分段,存在下一个分段置为1,否则置0代表该分段是最后一个分段。中间位(DF)指出数据报是否可进行分段,如果为1则机器不能将该数据报进行分段。第三位即最高位保留不使用,值为0。
(7)分段偏移(13位):该字段指出分段数据在源数据报中的相对位置,支持目标IP适当重建源数据。
(8)生存时间(8位):该字段是一种计数器,在丢弃数据报的每个点值依次减1直至减少为0。这样确保数据报拥有有限的环路过程(即TTL),限制了数据报的寿命。 
(9)协议(8位):该字段指出在IP处理过程完成之后,有哪种上层协议接收导入数据报。这个字段的值对接收方的网络层了解数据属于哪个协议很有帮助。
(10)头部校验和(16位):该字段帮助确保IP协议头的完整性。由于某些协议头字段的改变,这就需要对每个点重新计算和检验。计算过程是先将校验和字段置为0,然后将整个头部每16位划分为一部分,将个部分相加,再将计算结果取反码,插入到校验和字段中。 
(11)源地址(32位):源主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间必须保持不变。 
(12)目的地址(32位):目标主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间同样必须保持不变。
3.1.2.IPV4地址
32位寻址,有效载荷 65535
A类 0.0.0.0-127.255.255.255
B类 128.0.0.0-191.255.255.255
C类 192.0.0.0-223.255.255.255
D类 224.0.0.0-239.255.255.255
E类 240.0.0.0-255.255.255.255
3.2.IPV6
3.2.1.IPv6报文格式
(1)版本(4位):该字段定义IPv6协议版本,其值为6,负责向处理机所运行的IP软件指明此IP数据报是IPv6版本。
(2)优先级(4位):该字段定义当发生通信拥塞时的分组的优先级。
(3)流标号(24位):该字段用来对特殊的数据流提供专门处理。 
(4)有效载荷长度(16位):该字段定义整个IPv6数据报的字节长度,包括基本头部和有效载荷。其最大值为65,535字节。
(5)下一个头部(8位):该字段定义了数据报中跟随在基本头部之后的头部。下一个头部可以是IP所使用的可选扩展头部,也可以是上层协议的头部。
(6)条数限制(8位):该字段与IPv4中生存时间(TTL)字段一样是一种计数器,在丢弃数据报的每个点值依次减1直至减少为0。
(7)源地址(128位):源主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间必须保持不变。
(8)目的地址(128位):目标主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间同样必须保持不变。
(9)扩展头部:该字段包含6个可选类型,包括逐跳选项、源路由选择、分段、鉴别、加密的安全有效载荷、目的端选项。
3.2.2.IPV6地址
IPv6地址,128位,分成了段,每段4个字符,有效载荷 4294967295。
一个IPv6地址,需要写32个字母,正常写法:
2001:0db8:85a3:08d3:1319:8a2e:0370:7344
其他写法:
四个连续数字都是零,可以使用::代替
2001:0db8:85a3:0000:1319:8a2e:0370:7344 等价于 2001:0db8:85a3::1319:8a2e:0370:7344
连续多个四个连续的零,可以使用一个::或者多个:0代替
2001:0DB8:0000:0000:0000:0000:1428:57ab
2001:0DB8:0000:0000:0000::1428:57ab
2001:0DB8:0:0:0:0:1428:57ab
2001:0DB8:0::0:1428:57ab
2001:0DB8::1428:57ab
使用::零压缩在地址中只能出现一次。
前导的零可以省略
2001:0DB8:02de::0e13 等价于 2001:DB8:2de::e13
在IPv6地址中使用内嵌的IPv4地址 地址的第一部分使用十六进制表示,而IPv4部分采用十进制。这是过渡机制所用的IPv6地址特有的表示法。如fe80::200: 5efe: 58.20.27.60,这个IPv6地址的后半部分是一个IPv4地址。
IPv6提供了两类嵌有IPv4地址的特殊地址:
0000:0000:0000:0000:0000:FFFF:xxxx:xxxx
0000:0000:0000:0000:0000:0000:xxxx:xxxx
 
 
IPv6支持子网前缀标识方法,类似于IPv4的无分类域间路由CIDR机制(注意:IPv6没有子网掩码mask的概念)。使用“IPv6地址/前缀长度”表示方法,例如:
2001:C3:0:2C6A::/64表示一个子网;
而2001:C3:0:2C6A:C9B4:FF12:48BC:1A22/64表示该子网下的一个节点地址。
可以看到,一个IPv6的地址有子网前缀+接口ID构成,子网前缀由地址分配和管理机构定义和分配,而接口ID可以由各操作系统实现生成。
IPv6有三种地址类型,分别是单播,多播(也称作组播),泛播(也称作任意播);在IPv6里广播不再使用。
1)组播地址
IPv6多播地址的格式前缀为1111 1111(FF00::/8)总是以FF打头。与IPv4 中一样,目标地址为组播地址的分组被传输到该组播地址表示的所有接口。这种地址有时也被称为一对多地址。IPv6组播地址很容易识别,它们总是以FF打头。
2)任意播地址
与组播地址一样,任意播地址也标识多个设备的多个接口,但有一个很大的差别:任意播分组只被传输到一个接口一一根据路由选择距离确定的最近接口。这种地址的特殊之处在于,可将单个任意播地址分配给多个接口。这种地址被称为”一对最近”地址。任意播不能用于源地址,只能做目的地址;子网前缀必须固定,其余位置全0。
3)IPv6单播地址
全球单播地址:前缀2000::/3,相当于IPv4的公网地址。这种地址在全球的路由器间可以路由。
链路本地地址:前缀FE80::/10,此类地址用于同一链路上的节点间的通信,主要用于自动配置地址和邻居节点发现过程。Windows和Linux支持或开启IPv6后,默认会给网卡接口自动配置一个链路本地地址。也就是说,一个接口一定有一个链路本地地址。
值得说的是:每个接口必须至少有一个链路本地地址;每个接口可以配置1个以上的单播地址,例如一个接口可以配置一个链路本地地址,同时也可以配置一个全球单播地址。注意:链路本地地址对应于IPv4的APIPA地址,也就是169.254开头的地址。
特别地:在IPv6 socket编程中,可以使用链路本地地址编程通信,但是需要增加一些额外的参数。
唯一本地地址:前缀FC00::/7,相当于IPv4的私网地址(10.0.0.0、172.16.0.0、192.168.0.0),在RFC4193中新定义的一种解决私网需求的单播地址类型,用来代替废弃使用的站点本地地址。IPv6下私网支持的理由:在安全性和私密性要求下,IPv6中同样需要支持私网,并且也需要支持NAT。在Linux内核3.7版本开始加入对IPv6 NAT的支持,实现的方式和IPv4下的差别不大。
站点本地地址:前缀FEC9::/48,以前是用来部署私网的,但RFC3879中已经不建议使用这类地址,建议使用唯一本地地址。
特殊地址:回环地址
0:0:0:0:0:0:0:1或::1,等同于IPv4的127.0.0.1
过渡地址:内嵌IPv4地址的IPv6地址
就是在IPv6的某一些十六进制段内嵌这IPv4的地址,例如IPv6地址中64:ff9b::10.10.10.10,此IPv6地址最后4个字节内嵌一个IPv4的地址,这类地址主要用于IPv6/IPv4的过渡技术中。
由于IPv6的地址扩展为128位,比IPv4的更难书写和记忆,因此IPv6下的DNS变得尤为重要。IPv6的的DNS资源记录类型为AAAA(又称作4A),用于解析指向IPv6地址的完全有效域名。
下面是一个示例:
Hostipv6.example.wechat.com IN AAAA 2001:db8:1::1IPv6下的域名解析可以认为是IPv4的扩展,详细可以查看RFC3596.
3.2.2.IPV4到IPV6过度
目前IETF(Internet Engineering Task Force,国际互联网工程任务组)设计了三种策略来实现平滑的IP版本升级。 
(1)双协议栈策略,就是一个站同时运行IPv4和IPv6,直到整个因特网使用IPv6。当一个分组被发送到目的端时,主机向DNS进行查询。如果DNS返回一个IPv4地址,那么源主机就发送一个IPv4分组,如果返回一个IPv6地址,就发送一个IPv6分组。
(2)隧道技术策略,当两台使用IPv6的计算机要进行相互通信,但其分组数据要通过使用IPv4的网络时,该分组要封装成IPv4分组,而当分组离开时该网络时再去掉这个封装。
(3)头部转换策略,当因特网中绝大多数系统设备已经过渡到IPv6,但一些系统仍然使用IPv4时,发送方想使用IPv6,但接收方不能识别IPv6,这时将IPv6头部格式转换成IPv4头部格式,IPv6地址按照一定规则映射转换为IPv4地址。
 
 
 
 
特别声明:
1.以上所有描述内容部分参考链接/文献未逐一列出,若有侵权,请及时告知,有则改之无则加勉。
2.以上仅是学习过程的总结,相信有很多理解偏差的地方,特别希望指出,给予帮助,更新知识体系,共同进步。
参考文献:
https://www.cnblogs.com/imstudy/p/9056334.html IPv6技术详解:基本概念、应用现状、技术实践(上篇)
https://blog.csdn.net/skiwnc/article/details/86681950 TCP/IP第四层--传输层TCP数据报文详解









posted @ 2020-07-15 14:21  worter  阅读(1866)  评论(0编辑  收藏  举报