OSI参考模型:国际标准化组织(ISO)在1979年建立了一个分委员会来专门研究一种用于开放系统互连的体系结构(Open Systems Interconnection),简称OSI。
“开放”这个词表示:只要遵循OSI标准,一个系统可以和位于世界上任何地方的、也遵循OSI标准的其他任何系统进行连接。这个分委员会提出了开放系统互连,即OSI参考模型,它定义了连接异种计算机的标准框架。
OSI分层模型:高层与数据流层
高层:
1. 应用层
2. 表示层
3. 会话层
数据流层:
4. 传输层
5. 网络层
6. 数据链路层
7. 物理层
层(layer):描述了所有需求的有效的通讯过程,并把这些过程逻辑上的组叫做层。
应用层:提供用户接口
用户接口:与其他计算机进行通讯的一个应用,对应应用程序的通信服务。
常见应用层协议:Telnet、SMTP、HTTP、FTP
表示层:数据表示加密(解密、编码、解码)等特殊处理过程,主要功能是定义数据格式(ASCII MPG JPEG等)及加密。
会话层:保证不同应用间的数据区分,定义了如何开始、控制和结束一个会话、包括对多个双向会话的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的。
传输层:可靠或不可靠的数据传输、数据重传前的错误纠正。是否选择差错恢复协议还是无差错恢复协议,在同一主机上对不同应用的数据流的输入进行复用,对收到的顺序不对的数据包的重新排序。还定义了如何将一个大块数据分割成更小的段的分段方法。TCP、UDP、SPX
网络层:决定路径的逻辑寻址,数据包和地址的格式。定义了能够表示所有节点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。IP、IPX
数据链路层:封装成帧、控制对物理层介质的访问、标识连接到介质上的网络设备、发现错误但不能纠正。定义了在单个链路上如何传输数据。802.3/802.2、HDLC/PPP、Frame-Relay
物理层:设备间接受或发送比特流说明电压、线速和线缆等。物理层协议分为功能性协议和程序性协议。EIA/TIA-232、V.35、RJ45
PDU(protocol data unit):每一层使用自己层的协议和别的系统的对应层相互通信,协议层的协议在对等层之间交换的信息叫做协议数据单元。
各层协议数据单元(PDU):
高层:message 消息
传输层:segment 段
网络层:packet 包
数据链路层:frame 帧
物理层:bit 比特流
封装(encapsulate/encapsulation):数据要通过网络进行传输,要从高层一层一层的向下传送,如果一个主机要传送数据到别的主机,先把数据转到一个特殊协议报头中,这个过程叫做封装。
封装分为:切片和加控制信息。
解封装:上述的逆向过程。
各层封装过程:
高层——>传输层:上层数据
传输层——>网络层:TCP头&上层数据
网络层——>数据链路层:IP头&TCP+切片的上层数据
数据链路层——>物理层:
LLC头(逻辑链路控制)&IP+TCP+切片的上层数据&FCS
MAC头&LLC头+IP+TCP+切片的上层数据&FCS(帧效验序列)
物理层:01010100011000101001……
中间系统(网络中心):根据地址信息将数据转发到正确的目的地。设备包括路由器和交换机等。
路由器:网络层+数据链路层+物理层
交换机:数据链路层+物理层
分层的优点:
- 使人们容易探讨和理解协议的许多细节
- 在各层间标准化接口,允许不同的产品只提供各层功能的一部分(如路由器在一到三层),或者只提供协议功能的一部分。(Win95中的Microsoft TCP/IP)
- 创建更好的集成环境
- 减少复杂性,允许更容易编程改变或快速评估
- 用各层的headers和trailers排错
- 较低的层为较高的层提供服务
- 把复杂的网络划分为更容易管理的层
OSI分层模型的缺陷:
- 许多功能在多个层次重复,有冗余感(如流量控制、差错控制等)
- 各层功能分配不均匀(链路、网络层任务重、会话层任务轻)
- 功能和服务定义复杂,很难产品化
因此诞生了事实上的标准——TCP/IP
OSI和TCP/IP:
OSI是一种通信协议的七层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
OSI与TCP/IP对应关系:
OSI: TCP/IP:
应用层
表示层 应用层
会话层
—————————————-
传输层 主机到主机层
—————————————-
网络层 互联网层
—————————————-
数据链路层
物理层 网络接口层
—————————————-
也有教材中的TCP/IP分为五层,其中的数据链路层与物理层并未分开。
TCP/IP中的应用层:应用程序间沟通的层。
包括TFTP、FTP、SMTP、Telnet、rlogin(远程登录)、SNMP(简单网络管理协议)、DNSping、tracert
TCP/IP中的主机到主机层:提供了节点间的数据传送服务
TCP:传输控制协议
UDP:用户数据报协议
TCP/IP中的互联网层:基本的数据封包传送功能
IP:互联网协议
ICMP:互联网控制信息协议
ARP:地址解析协议
RARP:逆向地址解析协议
TCP/IP中的网络接口层:同OSI中数据链路层与物理层
TCP数据格式:附图
16位源(SP)和目的端口号(DP):为封装的数据指定了源和目的程序
32位序列号:确认了发送数据中被封装数据所在的位置
32位确认号:接收节点下一次希望从目标接收的序列号
4位首部长度:指定了TCP头部的长度
6位保留位一般设置为000000
6位标记字段:URG、ACK(置1则接收端查看确认号)、PSH、RST、SYN(置1则代表是一个连接请求)、FIN(置1则代表是传输中的最后一个数据)
16位窗口大小:用于流量控制
16位检验和:检测整个TCP数据段是否有错误
16位紧急指针:URG被置1时使用,被添加到序列号上,用于指明紧急数据
(上述字段总计20字节)
选项字段:一般用不到
数据字段:上层数据
端口:一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O缓冲区。
端口分类:
1. 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。
2. 注册端口(Registered Ports):从1024到49151.它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。例如:许多系统处理动态端口从1024左右开始。
3. 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535.理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配端口。
TCP的三次握手:
在正式传输用户数据前,主机之间建立TCP连接的过程。
1. 首先主机A向主机B发送SYN请求(seq=A,ctl=SYN)
2. 主机B接收到SYN请求,向主机A发送SYN和ACK数据段(seq=B,ack=A+1,ctl=syn,ack)
3. 主机A接收到SYN请求,证明B已正确收到A的SYN请求,并且B将与A建立TCP连接。主机A发送一个数据段(seq=A+1,ack=B+1,ctl=ack)
4. TCP连接建立
TCP的确认机制:
发送方序列号
接收方确认号=发送方序列号+1
第一个ACK=1
TCP确认机制举例:
1. A:seq=10,ack=1
2. B:seq=1,ack=11(10+1)
3. A:seq=11,ack=2(1+1)
……
TCP窗口机制(流量控制、确认重传):
假设window size=n
发送方:send 1,send 2……send n-1,send n.
接收方:仅收到了1至n-1的数据段,发送ack=n,调整window size=n-x(x由接收方缓存大小决定)
发送方:window size=n,(根据接收方window size发送n-x个数据段)send n,send n+1……send n+n-x-1
接收方:window size=2,ack=5
……
UDP数据格式:
16位源端口号
16位目的端口号
16位UDP长度
16位UDP检验和
(上述UDP首部一共8字节)
数据
(视频、语音等多使用UDP)
IP(Internet Protocol):网络互联协议。为计算机网络相互连接进行通信而设计的协议。
在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此IP协议也可以叫做“因特网协议”。
IP数据格式:
4位版本:IPv4(0100)、IPv6(0110)
4位首部长度:标识IP首部长度
8位服务类型(TOS):指示特殊数据包的处理标志(优先级、区分服务代码)
16位总长度(字节数):标识IP包大小
16位标识:和3位标志13位片偏移一起使用,同一个数据包分片拥有一样的16位标识
3位标志:仅使用后两位,第二位置1,表示路由器不能切片处理。
13位偏移量:IP分片相对于原始报头的偏移位置
8位生存时间(TTL):最大255,数据包每经过一个路由器,TTL-1
8位协议:指示交付上层数据的上层协议类型,置1代表ICMP,置4代表IP-in-IP,置6代表TCP,置17代表UDP
16位首部检验和:对IP首部校验
32位源IP地址
32位目的IP地址
选项
以上IP首部共20字节
数据
IP地址=网络号+主机号
IP地址分类:
A类:8位网络号+24位主机号
第一个8位位组以0开始,且不全为0(1——126)
B类:16位网络号+16位主机号
第一个8位位组以10开始(128——191)
C类:24位网络号+8位主机号
第一个8位位组以110开头(192——223)
D类:组播地址
第一个8位位组以1110开头(224——239)
E类:研究用地址
未划分
一些特殊的IP地址:
1本地回环(loopback)测试地址127.0.0.1(我记得本地回环地址不仅仅是127.0.0.1这一个,实际上以127开头的且主机位不全为0的都是loopback地址,已经用PING测试验证)
全网广播地址:255.255.255.255(同一数据链路中)
IP地址0.0.0.0:代表任何网络
主机位全为0:代表该网段
广播地址:主机位全为1的IP地址用于广播
(广播是指同时向网上所有的主机发送报文,也就是说不管物理网络特性如何,Internet网支持广播传输。如136.78.255.255就是B类地址中的一个广播地址,将数据包送到此地址,就是将信息送给网络号为136.78.0.0的所有主机)
私有地址(RFC 1918中定义,为解决网络地址紧张而建立,不出现在公网中):
A类地址中:10.0.0.0到10.255.255.255
B类地址中:172.16.0.0到172.31.255.255
C类地址中:192.168.0.0到192.168.255.255
子网掩码:标识出某个IP地址哪部分是网络位,哪部分是主机位。
子网掩码的设定规则:与IP地址长度相同,32位。左边是网络位,用二进制数字“1”标识,右边是主机位,用二进制数字“0”表示。
子网掩码不能单独存在,必须结合IP地址一起使用。
默认情况下的子网掩码:
A类:255.0.0.0
B类:255.255.0.0
C类:255.255.255.0
ARP(地址解析协议):运行在同一个以太网链路当中。
广播对某一IP地址的ARP请求,目的主机单播自身的物理地址。可在CMD中用arp -a指令查询自身的ARP表
MAC(Media Access Control):介质访问控制
MAC地址:烧录在NIC里,也叫硬件地址,由48比特长,16进制的数字组成。
MAC地址中0-23位代表厂商,24-47位由厂商分配给自己生产的网卡,叫做组织唯一标识符,是识别LAN节点的标识。
在网络底层的传输过程中,使用MAC地址来识别主机的,它一般也是全球唯一的。
RARP(Reverse Address Resolution Protocol):反向地址转换协议,已知本地的MAC地址,求本地IP。
ICMP(Internet Control Message Protocol):Internet控制报文协议,它是TCP/IP协议族的一个子协议,通过IP数据包进行传递,协议号为1,用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。其本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。典型使用为ping、tracert/traceroute