OSI
OSI -- 开放式系统互联参考模型(7层参考模型)
应用层
抽象语言 -》编码
表示层
编码-》二进制
会话层
提供应用程序的会话地址
传输层
分段
数据包容量不易过大,否则影响传输效率及共享宽带;分段大小由MTU决定;(MTU:最大传输单元,默认1500)
端口号
0-65535,其中1-1023注明端口,用于默认标记固定服务;1024-65535动态端口(高端口),用于随机对应终端的各种进程。
UDP
用户数据报文协议 --- 非面向连接的不可靠传输协议;传输层的基本协议,仅完成传输层的基本工作(分段、端口号)
TCP
传输控制协议 --- 面向连接的可靠传输协议;除了完成传输层的基本工作外,还需要保障传输的可靠性;
面向连接 --- 通过TCP的三次握手建立端到端的虚链路
可靠传输 --- 四种机制(确认、重传、排序、流控(滑动窗口))
TCP的三次握手
最开始的时候客户端和服务器都是处于CLOSED关闭状态。主动打开连接的为客户端,被动打开连接的是服务器。 TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了 LISTEN 监听状态 第一次握手 TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT 同步已发送状态 第二次握手 TCP服务器收到请求报文后,如果同意连接,则会向客户端发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了 SYN-RCVD 同步收到状态 第三次握手 TCP客户端收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED已建立连接状态 触发三次握手
有人可能会很疑惑为什么要进行第三次握手?
主要原因:防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误 第一次握手: 客户端向服务器端发送报文 证明客户端的发送能力正常 第二次握手:服务器端接收到报文并向客户端发送报文 证明服务器端的接收能力、发送能力正常 第三次握手:客户端向服务器发送报文 证明客户端的接收能力正常
TCP的四次挥手
数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。 第一次挥手 客户端发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态 第二次挥手 服务器端接收到连接释放报文后,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT 关闭等待状态 第三次挥手 客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。 第四次挥手 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命),当客户端撤销相应的TCB后,客户端才会进入CLOSED关闭状态,服务器端接收到确认报文后,会立即进入CLOSED关闭状态,到这里TCP连接就断开了,四次挥手完成
为什么客户端要等待2MSL?
主要原因是为了保证客户端发送那个的第一个ACK报文能到到服务器,因为这个ACK报文可能丢失,并且2MSL是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃,这样新的连接中不会出现旧连接的请求报文。
网络层
Internet协议
IP地址逻辑(临时)寻址
IPV4报头
标准长度20字节 -- 可扩展到60字节
第一行
version:版本(4比特),IPV4 为0100,IPV6为0110 IHL:ip头部长度(4比特),带参数(0101=5 ,单位是32比特,最大头部就是15*32/8,范围是20字节-60字节,只能以4字节为基础增加。 Service Type:服务质量(8比特)对数据标识时使用 QOS --- 服务质量 TOS(type of service) :标记1,ip优先级:3+5(000 001 010 011 100 101 110 111)0-7(用前三个比特标记)2,DSCP区分服务代码点:6+2,0-63+ECN(显示拥塞通告,顺畅为00拥堵为11)3,PHB:逐跳行为(每一跳行为)兼容模式,共有21个分类(IP优先级全部有,DSCP部分有(匹配多少用多少)Packet Length:ip数据包总长度(16比特)
第二行
Identification:标识符(16比特) Flags:标记位(3比特) R(保留位) DF(不分片(0或1)) MF(最后一个片段=0(0或1) Fragment Offset:分片偏移(13比特)
第三行
TIme to Live:生存时间(8比特) 路由次数(255-1) Protocol:上层使用协议(8比特) 范围1-255 Header Checksum:表头检查码(16比特)
第四行
Source Address:源地址(32比特)
第五行
Destination Address:目标地址(32比特)
第六行
Option:可选项(定义数据传输时进行标识)(默认为0,如果有内容则Option与padding之和必须是32或者32的倍数)1,严格选路2,松散选路3,记录路由4,时间戳 Padding:填充项(垫片)
数据链路层
以太网/PPP/HDLC/FR/ATM.....
以太网
在二层主要负责两个功能
1,控制物理层(该层的基本功能)
2,提供MAC地址进行物理寻址(以太网的额外功能)
物理层
总结
上三层为应用程序对数据流量进行加工以及处理的阶段,下四层负责数据的传输
名词解释
1、MTU 最大传输单元 传输层对数据分段的大小 2、封装 数据从高层向低层的加工过程,过程中数据封装每层的头部,不断变大 3、解封装 数据从低层向高层的识别过程,过程中需要读取,删除部分头部,不断变小 4、PDU -- 协议数据单元 各层数据在封装完成后,对数据的单位称呼 应用层---报头 传输层--段 网络层--包 数据链路层--帧 物理层-- 比特 5、ARP --地址解析协议 通过对端的一种地址来获取对端另一种地址 AARP 正向ARP -- 已知同一网段的ip地址,通过广播来获取该ip对应的MAC地址 反向ARP --- 已知对端的MAC地址,获取本地的ip地址; FARP -- 无故ARP 使用AARP,来查询本地的ip地址; --- 用于ip地址的冲突检测 6、DNS-- 域名解析服务 通过域名地址,查询对应的ip地址;主要用于http、https等服务 7、TCP/IP与OSI的区别 1)层数不同 2)OSI模型的网络层支持所有的网络层协议,TCP/IP的网络层实际被成为internet层,仅支持IP协议; 3)TCP/IP协议栈道支持跨层封装 跨层封装--- 应用层数据直接封装于3层报头或者2层报头; 封装3层报头:同一广播域内的服务型协议--ARP/OSPF..... 使用的设备均为3层设备 封装2层报头:同一交换网络内的二层设备服务型协议---STP 正常应用程序封装的数据流量不做跨层处理 因此跨层封装的意义在于更快的完成服务型协议间的沟通计算 跨层封装时,部分层面的功能,必须由其他层面来辅助完成; --- 4层的分段、端口号(区分进程) 跨层封装到3层报头时,IPV4报头可以对数据进行分片,之后每片内容填充于报头中,携带到目的地; 3层报头中还存在协议号,用于对标后方所封装的协议0-255,6代表TCP/17代表UDP; 其余数字每一个皆对应一个固定的跨层封装协议 2层报头中也有类似的功能来实现分段、进程区分; 主讲以太网:在非跨层封装到2层时,以太网使用第二代数据帧,该帧不具备分片功能,仅存在类型号,可用于区分进程; 故一旦数据被跨层封装到二层时,将启用第一代以太网封装; 第一代封装将数据链路层分为了两层 --->LLC逻辑链路控制子层+MAC介质访问控制子层 LLC层负责分片和提供类型号来区分进程,MAC层用于提供MAC,以及控制物理层; LLC层 --802.2标准 MAC层-802.3标准
数据包转发过程(重点)
源终端设备需要进行数据封装,从高层封装到物理层;过程中基于应用层流量,选择传输层的协议和端口号;基于目标ip地址、目标mac来封装三层和二层头部; 1,本地已知 2,访问网页基于域名,通过dns服务器进行解析 3,终端客户软件提前存储服务器ip地址,直接访问服务器,基于服务器中转来与实际目标通讯 获取目标mac地址方式:使用arp请求通过广播的形式来获取统一广播设备的mac地址 交换机的工作原理:当数据帧进入交换机后,先查看数据中的源mac地址,然后将其与对应的入口记录;之后基于目标mac地址,查询本地的mac地址表,若表中存在记录,按照记录对应接口单播转出;若没有记录,需要洪泛流量(除了流量进入的接口外,其他所有接口复制转出) 终端访问另一设备时,在过去目标ip地址后,关注目标ip地址是否和本地处于同一网段;若在同一网段,使用arp获取对端mac地址后,单播通讯;当目标ip地址与源头不在同一网段,将封装目标mac地址为本地的网关位置,之后数据进入路由器,由路由器将数据基于路由表路由转发到目标地点; 数据在跨网段传输过程中,源、目ip地址正常不变化,单源。目mac地址在每一个广播域中重新编写,用于该广播域内的物理寻址; mac地址:由48位二进制构成,使用16进制标识;全球唯一,出厂时烧录到芯片中;
IPV4地址
由32位二进制构成,点分十进制标识 分类:ABCDE五类 其中ABC为单播地址 --- 唯一计科作为目标ip地址,也可作为源ip地址; --- 只有单播地址可以配置为各个节点的ip; D类为组播地址,只能作为目标ip地址;
基于ip地址的第一段即可分类:
A 1-126
B 128-191
C 192-223
D 224-239
E 240-255
特殊地址
1,在ABC地址中存在私有ip地址与公有ip地址的区分 公有地址:具有全球唯一性,可以在互联网中通讯,且需要付费使用 私有地址:仅具有本地唯一性,不能在互联网中通讯,无需付费使用 所以,通过私有构建的企业或局域网,访问全部为公有地址的互联网时,必须转换为合法且唯一的互联网公有ip地址; 私有地址: 10.0.0.0/8 172.16.0.0/16-172.31.0.0/16 192.168.0.0/24-192.168.255.0/24 2,127 环回地址,用于测试TCP/IP协议栈道在设备上是否正常 3,全0 0.0.0.0 1)在dhcp请求ip地址作为源ip,代表所有地址2)在路由表作为缺省路由,代表所有目标 4,全1 255.255.255.255 受限广播地址,在不明确目标ip地址时,发送广播时成为目标ip地址,受到路由器的限制,不能转出单个广播域 5,主机位全0 不是一个具体的ip地址,网络号---代表一个网段 6,主机位全1 不是一个具体的ip地址,该网段的直接广播地址 7,169.254.0.0/16 自动私有地址,本地链路地址;终端在通过dhcp行为多次获取ip地址失败后,本地自动生成的一个ip地址,网络号固定,主机位随机
VLSM
可变长子网掩码 --- 通过延长子网掩码的长度,起到将一个网络号码划分为多个可用网段;--- 子网划分
CIDR
无类域间路由 --- 取相同位,去不同位 将多个网络号合成一个网段号码; CIDR=子网汇总+超网 子网汇总 --- 汇总后,汇总网段地址的掩码长于或等于主类 超网 --- 汇总后,汇总网段的掩码长度短于主类
静态路由
在默认情况下,路由器仅存在直接网段的路由; 直连路由产生的条件: 1,路由器的接口配置了合法的ip地址 2,同时该接口已经开启,且可以通信 所有非直连网段为该路由器的未知网段,获取未知网段方法: 1,静态路由 --- 管理员手写路由表 2,动态路由 --- 所有路由器运行相同的动态路由协议后,路由器之间沟通、协商、计算自动生成路由表 [Huawei]ip route-static 10.1.1.0 24 192.168.1.2目标网络号 下一跳 下一跳:流量从本地发出后,下一个进入的路由器接口 -- 下一个入口地址(路由器) [Huawei]ip route-static 10.1.1.0 24 GigabitEthernet 0/0/1目标网络号 出接口 出接口:流量从本地路由器发出的接口号; 在MA网络中建议使用下一跳写法,在点到点网络中建议使用出接口写法;
网络类型
点到点 --- 在一个网段中,只能存在两个节点 MA -- 多路访问 ---在一个网段中,存在节点数量不限制; 若在MA网络中使用出接口写法,编辑静态路由;为获取精确的下一跳MAC地址,路由器将使用代理ARP和ICMP重定向; 代理ARP:若一台路由器收到了非本接口直连网段地址的ARP请求,将查询本地路由表,若表中存在到达被请求ip地址的网段的路由,将代理该被请求ip,使用本地的MAC地址进行ARP应答; ICMP重定向:当路由器发现一个数据包从本地的A口进入后,查询完路由表依然从A口再发出,将告知上一跳设备,本地的下一跳地址来优化转发路径; 基于以上的规则总结:在MA网络中使用出接口写法,数据转发过程繁琐浪费资源,故建议下一跳写法; 在点到点网络中若使用下一跳写法: 由于路由器是递归查询路由表的,故下一跳写法生成的路由条目每次查询时,均需要递归到直连路由上,但出接口写法可以不用递归;因此在点到点网络中,由于其不存在代理ARP/ICMP重定向之类规则,故建议出接口写法;
静态的扩展配置
1)手工汇总当路由器访问多个连续子网(可以汇总成一个网段)时,且全部基于相同的下一跳路径;可以将这些目标网络进行汇总计算后,仅编写到达汇总网段的一条路由即可;--优化路由表,减少路由条目数量,加快查表速度,降低网络延时; 2)路由黑洞 --- 汇总的路由网段中包含了网络内实际不存在的网段时,流量将有去无回;造成资源浪费; 主动黑洞--地址设计不合理 被动黑洞--设备关机断电导致 3)缺省路由 --一条不限定目标,在路由表中0.0.0.0标识的路由,代表所有网段;路由器查表时,在查询完本地所有的直连、静态、动态路由后若依然没有可达路径,才使用该条目; [Huawei]ip route-static 0.0.0.0 0 12.1.1.2 4)空接口防环路由--当黑洞路由与缺省路由相遇时,将必然出现环路; 通过在黑洞路由器上,编写到达汇总网段的空接口路由,可以防止环路的产生; [Huawei]ip route-static 1.1.1.0 24 NULL 0 5)浮动静态路由 --默认手写的静态路由优先级为60;直连路由为0;优先级取值范围0-255;越小越优秀;通过在编写静态路由时,修改优先级,可以实现静态路由备份的效果; [Huawei]ip route-static 1.1.1.0 24 12.1.1.2 preference 61 6)负载均衡--当访问同一网段时,若存在多条开销相似路径时,可以让设备将流量拆分后延多条路径同时传输,实现带宽叠加的效果;