第二章 网络参考模型(12.13)
2.1 OSI七层模型
应用层:提供是应用的接口。产生数据。比如网页,QQ,微信
表示层:进行数据格式的转换,比如:加密和解密
会话层:应用在传输数据的,要实现建立应用的会话。建立、管理、拆除应用会话。
传输层:通过端口号来区分不同的应用,传输数据之前需要建立端口到端口的连接通道。封装传输层的头部形成数据段(源目端口号+Data 数据段)
网络层:3层,提供一个逻辑的地址(IP地址),根据报文的目的地址寻址。IPv4、IPv6协议。封装网络层头部形成数据包(源目IP地址+源目端口号+Data 数据包)(路由器,3层交换机)。
数据链路层:对报文封装数据链路层头部形成数据帧,进行报错检查。点到点的通信。(源目MAC地址+源目IP地址+源目端口号+Data 数据帧),只有形成完整的数据帧,数据报文才能够转发出去。(交换机)
物理层:定义了电气化标准,接口的电气化标准,将数据帧形成bit流在物理介质上转发。(包含:光纤,双绞线-网线,无线电波,hub集线器设备)
2.2 TCP/IP对等模型
5层:应用层、传输层、网络层、数据链路层,物理层。
2.2.1各层对应的协议
- 应用层:
- Telnet 协议:用于远程登录网络设备(路由器,交换机,服务器),进行网络设备管理。
- FTP协议:文件传输协议,用于传输文件的,基于TCP协议,端口号21用于传输控制报文(协议本身的消息)。端口20,用于数据传输的。
- TFTP协议:简单文件传输协议,基于UDP协议,端口69。
- SNMP协议:简单网络管理协议,用于网络设备的自动管理。
- HTTP协议:超文本传输协议,网页服务,服务器端口号默认80
- HTTPS协议:安全的超文本传输协议,网页服务。端口号默认是443
- SMTP协议:简单邮件传输协议,在个人电脑上进行邮件管理
- DNS协议:域名解析协议。
- 主机访问www.baidu.com,没有对应的百度服务器的IP地址,无法封装正常的网页的请求数据包。
- 主机通过DNS协议向DNS服务器发送DNS请求,询问www.baidu.com的IP地址。DNS服务器存储了域名和IP地址的对应关系。
- DNS服务器收到请求后,回复响应报文,告知主机百度的IP地址。
- 主机保存www.baidu.com域名与IP地址的映射关系,并且封装对应的HTTP报文(报文中包含了百度的IP地址)。
- 常用的DNS服务器 114.114.114.114(DNS服务器的IP地址)
- DHCP协议:动态主机配置协议,用于主机的IP地址自动配置。
- 传输层协议:TCP(传输控制协议)、UDP(用户数据报协议),都包端口号,用于区分不同应用。
- 网络层协议:IP协议(IPv4协议)、IPv6协议,Internet Protocol(网际协议),IP地址以及寻址,头部字段中“协议Protocol”字段,如果取值为6,表示传输层协议是TCP,如果取值为17,表示传输层协议为UDP
- 数据链路层协议:
- ARP协议:地址解析协议,用于解析IP地址对应的MAC地址。
- Ethernet II协议:以太网协议(携带MAC地址),通常使用以太网交换机,和以太网线
- 802.3协议:以太网协议。
- PPP协议:点到点协议,没有MAC地址,通常采用串口线进行设备相连。
- PPPoE:以太网拨号协议,用于用户拨号上网。
2.3 传输层
2.3.1 单位换算
bit:一个0或者是1
8bit=1字节(Byte)
1024B=1KB
1024KB=1M
1024M=1G
2.3.2 TCP报文内容
源端口号:标识本端的应用程序
目的端口号:标识目的端的应用程序(服务)
序列号:TCP发送的报文都会添加一个序列号,用于标识报文的顺序
确认序列号:该字段用于确认已收到的报文,必须控制字段中的ACK比特位置位,该字段才有效。
头部长度:只TCP报文的头部总长度(包含了可变长的Option字段),如果不包含Option字段,头部长度为20B,也叫数据偏移。作用是用于标识TCP头部后的数据起点位置。
保留位:6bit填充0,用于以后的新增功能。
控制位:
- SYN 比特位:如果该报文的SYN比特位置1,则该报文是一个请求建立连接的报文。
- ACK 比特位:如果该报文的ACK比特位置1,则表示该报文的确认序列号字段有效。
- FIN 比特位:如果该报文的FIN比特位置1,则表示该报文是一个请求断开连接的报文。
- RST:置1表示重置当前的连接
- PSH:置1表示报文需要紧急交给应用程序处理。
- URG:置1表示紧急指针字段有效
窗口字段:用于控制报文的发送速度(根据接收到的报文中的窗口字段大小,发送报文。)
校验和:用于校验TCP的头部和数据,接收方根据相同的算法计算出值,与报文中的携带的校验和比较,相同则接受。
紧急指针字段:该字段表示,缓存中需要紧急处理的数据的大小,URG置位该字段有效。
Option字段:功能字段
Padding字段:填充字段,将报文的头部填充到4B的整数倍长度。
2.3.3 UDP字段
源端口号、目的端口号、长度、校验和。
长度:该字段值表示UDP头部和数据总长度。
2.3.4 端口号
端口号存储空间16bit,端口号的范围0-65535;
其中0-1023是知名端口号:比如FTP的21号端口,HTTP的80号端口。
其中1024-65535是非知名端口:本地产生数据访问服务器,在该范围内随机产生一个端口号,作为源端口号,用于区分本设备上的不同应用。
收到报文的时候,根据目的TCP/UDP头部中的目的端口来确定TCP的数据部分应该交给本地哪个应用(程序)处理。
2.4 TCP的工作机制
2.4.1 TCP的三次握手
- PC1向PC2发送TCP报文,其中序列号字段为a(己方),确认序列号字段为0,控制比特位中SYN比特置位1,表示该报文是一个请求建立连接的报文。
- PC2收到请求报文后,其中序列号是b(己方),确认序列号是a+1,表示收到了a报文,请下次发送a+1号报文。控制比特位SYN比特置位,表示该报文是一个请求报文,ACK比特位置位1,表示确认序列号a+1是有效的。
- PC1收到PC2的报文,也需要对PC2的报文进行确认,发送的报文序列号是PC2希望发送的序列号a+1,确认序列号是b+1,表示已收到b报文,请PC2下次发送b+1号报文,同时控制比特位ACK置位,表示确认序列号有效。
2.4.2 TCP的序列号和确认序列号(数据转发过程)
- PC1与PC2双向建立了TCP连接
- PC1向PC2发送带有载荷部分的TCP报文
- PC2的确认序列号是PC1发送给PC2报文中的序列号+载荷长度(B字节)
- 数据交互过程中的TCP报文的序列号沿用三次握手之后的序列号。
2.4.3 TCP的流控(流量控制)
通过TCP的头部字段中的窗口字段来告知建立连接的对端设备本端剩余的缓冲区大小,对端设备收到之后,按照缓冲区的大小发送报文,从而达到控制流量发送的速度。
设备收到TCP的报文不需要逐条进行确认,仅需要对最后收到的报文进行确认,相当于对最后报文之前的报文进行了确认。
2.4.5 TCP的四次挥手机制
- 四次挥手断开连接(确认和三次握手相同,不带载荷,序列号+1确认)
- PC1发送FIN比特位置位的报文请求断开与PC2的连接。Seq=a ack=b
- PC2收到后回复ACK置位的报文确认断开连接。Seq=b ack=a+1
- PC2再次发送FIN比特位置位的报文请求断开与PC1的连接。Seq=b ack=a+1
- PC1回复ACK置位报文确认断开连接,释放系统资源。Seq=a+1 ack=b+1
- 实际过程中通过RST置位对连接进行立即重置(断开),如果需要重新连接在重新连接。
2.5 网络层
作用:路由器工作在网络层(三层),依据路由表进行转发。
- 提供一个逻辑的地址(IP地址,可以修改)
- 根据报文中的目的地址查找设备上的路由表进行数据转发,路由表指明了去往地址的方向。
封装:IP头部(包含源目IP地址)+TCP/UDP的头部+Data(比如:Telnet),叫做数据报
2.6 数据链路层
作用:实现点到点之间的通信(相邻的三层到三层设备 修改下)
封装:帧头(MAC地址)+IP头部(包含源目IP地址)+TCP/UDP的头部+Data(比如:Telnet)+帧尾(用于查错校验)。
二层设备:依据帧头进行数据转发(依据MAC地址表进行转发),交换机工作在数据链路层上。
2.6.1 MAC地址
MAC地址唯一标识一个网卡。MAC地址的组成由48bit组成,分为两个部分,前24bit部分为OUI部分(厂商代码,由国际地址组织分配),后24bit位厂商自行分配。
表示方式:冒号分16进制表示法
例如:98:8D:46:FF:99:93 也有988D-46FF-99-93
- 十六进制
- 十进制:0-9,逢10进1,也就是9+1,进一成为1 0
- 二进制:0-1,逢2进1,也就是1+1,进一位成为1 0
- 十六进制:0-9,A-F,逢16进1,也就是F+1,进一位成为1 0
16进 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
10进 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
2进 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
- 二进制
科学计数 | 2^0 | 2^1 | 2^2 | 2^3 | 2^4 | 2^5 | 2^6 | 2^7 |
二进制 | 1 | 10 | 100 | 1000 | 10000 | 100000 | 1000000 | 10000000 |
10进制 | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 |
当由一个8位二进制数出现,从右向左第n,每一位表示的十进制值为x=2^(n-1)
例如: 8bit数如下:
1 1 1 1 1 1 1 1
2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
128+ 64+ 32 + 16 +8+ 4+ 2 + 1=255
2.6.2 MAC地址分类
1、单播MAC地址:从左向右第8bit位为0的是单播MAC地址
2、组播MAC地址:从左向右第8bit位为1的时组播MAC地址
3、广播MAC地址:48bit全为1的为广播地址。FFFF-FFFF-FFFF
例如:
- 98:8D:46:FF:99:93 单播地址
- 0100-5e00-0001 组播地址
- 3315-0000-1111 组播地址
- 1111-1111-1111 组播地址
- FFFF-FFFF-FFFF 广播地址
2.6.3 数据帧的分类
- 单播数据帧:数据帧的目的MAC地址是一个单播MAC地址。
- 组播数据帧:目的MAC地址是一个组播MAC地址。
- 广播数据帧:目的MAC地址是一个广播MAC地址。
交换机对不同的数据帧发送方式不一样:转发、泛洪、丢弃
- 如果交换机收到一个单播数据帧,则根据数据帧的目的MAC地址,按照MAC地址表向表中指定的接口进行转发。(已知单播帧,转发动作)
- 已知单播帧:MAC地址表中存在对应的单播MAC表项
- 如果MAC地址表中不存在该数据帧的目的MAC地址,则泛洪转发。(未知单播帧泛洪)。
- 未知单播帧:MAC地址表中不存在对应的单播MAC表项。
- 如果交换机收到一个组播或者广播数据帧,则进行泛洪转发。
- 泛洪转发:向所有的接口转发。
2.6.4 ARP地址解析协议
背景:报文发送的过程中,报文本身必须是完整的数据帧,包含源目IP地址和源目MAC地址。因此设备需要提前获取对方的IP地址和MAC地址(本链路上)
作用:根据已知的对端IP地址来获取对端的MAC地址
工作过程:
- PC1会封装ping报文(IP头部后面),由于没有对端MAC地址,无法封装完整的数据帧
- PC1发送ARP请求,广播请求对端的MAC地址,在ARP数据帧中携带对应的PC2的IP地址,同时数据帧帧头目的MAC地址为广播地址。
- PC2收到ARP请求,检查ARP的报文内容中的IP地址,并且缓存对应的ARP表项
- 如果报文中的IP地址是自己的就响应该ARP请求,单播发送ARP响应报文携带PC2的MAC地址给到PC1
- 如果报文中的IP地址不是自己的,不进行响应。
- PC1收到对应的响应报文,保存PC2的ARP表项(IP地址对应MAC地址映射关系)
- 之后的通信过程(如:发送ICMP报文)可以通过缓存表中的PC2的MAC地址进行通信
ARP表项老化时间:默认是1200s
2.7 物理层
- 物理层规范了线缆、针脚、电压、接口等物理特性规范。
- 双绞线:理论速度100m
- 双绞线(以太网线或者网线),8根线芯,两端RJ45水晶头,
- 两种制作方式:两种方式绿色和橙色对调
- 568A:白绿 绿 白橙 蓝 白蓝 橙 白棕 棕
- 568B:白橙 橙 白绿 蓝 白蓝 绿 白棕 棕
- 两种模式:
- 直通线:两边线序相同568B,不同设备之间通信。
- 交叉线:一边568A一边是568B,相同设备之间通信。
- 工作中就使用直通线就完了(设备会自动识别)。1,3,2,6是传输数据的,4,5传输语音数据,7,8保留的。
- 种类:5类(cat5),超5类(cat5,6类cat6,7类
- RJ11水晶头(用于电话线)
- 光纤:
- 单模光纤:只能传递一种光波,传递距离一般20KM左右
- 多模光纤:可以传递多种光波信号,传输距离相比于单模要短。
- 光模块:用于交换机的光口,将光信号转化为电信号。
- 串口线:同/异步串口线 V.24/v.25。
- 无线电波:2.4G Hz,5G Hz
- 同轴电缆(电视机)