文章目录
前言
本博客仅做学习笔记,如有侵权,联系后即刻更改
科普:
局域网/广域网
局域网
局域网基本定义
功能
在一个较小的物理范围内为计算机提供高资源共享通信服务
特点
带宽高,传输距离短,连接终端多,所以局域网是多路访问的
对应OSI模型的物理层,数据链路层、网络层
- 物理层:规定了硬件设备、线缆、接口的物理特性
- 数据链路层:二层寻址,以及数据封装,上层协议标识
- 网络层:三层寻址,路径选择
主要技术
- 以太网:
应用最广泛,定义了各种传输介质、传输速率,以及如何进行寻址(数据链路层、网络层)- 令牌环:通过环接口收尾相连形成拓扑
一个节点需要发送数据,必须先获得令牌(一种特殊的MAC控制帧),令牌有一个标志位,代表路径上数据传输的情况(忙/闲),特点是需要维护令牌- FDDI环网技术:
光纤分部接口,一种环网
局域网相关概念
以太网集线器(HUB)
本质上就是总线,工作在物理层,拓展接口,组成星型拓扑
CSMA/CD
载波监听多路访问/冲突避免
- 先听再发,边听边发,冲突延迟再发
MAC地址
物理地址,一台主机对应一个MAC地址,无法改变
- 48位2进制,以12位16进制表示
前24位厂商标识,后24位自定义
单播/广播
单播:1对1
广播:1对所有
- 数据链路层目的MAC全F
以太网流量控制:
半双工/全双工
- 链路是否允许同时双向传输数据
半双工:- 使用CSMA/CD来进行冲突规避
接收反向发送电压型号制造冲突,迫使发送方停止发送
全双工:
接收方提供反向发送PAUSE帧,通知对方停止发送
以太网拓展
冲突域:
- 同一时间只有一台设备能够发送报文
广播域:
- 同一段地址,同一段VLAN就是一个广播域
HUB(集线器):工作在物理层,连接在同一集线器下的设备组成一个冲突域
Switch(交换机):交换机隔离冲突域
A、B、C网络区分
A类
- IP地址就由1个字节的网络地址和3个字节的主机地址组成
网络地址的最高位必须是0
,网络地址有2^7=126个,
每个网络可容纳2^24-2=16581373台主机特殊IP地址
- 10.x.x.x 是私有地址(所谓私有地址就是在互联网上不使用,而被使用在局域网络中的地址),范围(10.0.0.0 ~ 10.255.255.255)
- 127.x.x.x 是保留地址,用作循化测试用的。
B类
- IP地址就由3个字节的网络地址和1个字节的主机地址组成
网络地址的最高位必须是110
,网络地址有2^21=2097152个,
每个网络可容纳2^8-2=254台主机- 因为10000000.0000000.00000000.00000000是网络地址,10111111.11111111.11111111.11111111是广播地址
广域网
广域网基本定义
由于局域网传输距离有限,这个时候就需要广域网,它的传输距离更长,同时成本也更高,需要租用运营商链路
广域网对应OSI模型的物理层、数据链路层、网络层
物理层:
- 定义了各种传输介质的标准、速率
数据链路层:- 数据需要在广域网传输,必须封装广域网能够识别的协议,PPP、HDLC、LAPB、帧中继
网络层:- 主要用于三层寻址,路径选择
连接方式
专线:
- 某个企业独占使用这个链路,针对与数据传输,这个链路是共享型的
电路交换:- 电话线,按需建立,需要运营商建立逻辑链路,不需要拆除
分组交换:- 发送数据时,运营商设备会将数据分组,同一时刻链路只能传递某一个分组的流量
广域网相关概念
常用接口和线缆
链路层协议(了解):PPP、HDLC
分组交换广域网技术(了解):ATM、FR(帧中继)、X.25
IP以及相关协议
协议分类:
IP:
- 标识节点、链路、IP寻址、IP转发、适应各种链路
ARP:
- 地址解析,以IP去请求MAC,将IP与MAC地址形成对应关系
RARP:
- 反向地址解析,以MAC去请求IP
ICMP:
- 网络监测,典型应用 ping、tracertroute
IP协议
IP协议报文关键字段
- 源目IP
- 上层协议:TCP/UDP
ttl:time to live,用于防环,每经过一个三层节点TTL - 1 ,TTL为0则丢弃数据包
IP地址
网络号/主机号
掩码
网关
地址分类(A、B、C)
如何去根据需求切分子网掩码
ARP(地址解析协议)
动态将IP地址解析为MAC地址的协议
由于封装时需要由目的MAC,这个时候需要去查缓存或者去解析
主机通过ARP解析到目的MAC地址后,将在自己的ARP缓存表中增加相应的IP地址到MAC地址的映射表项,用于后续到同一目的地报文的转发。
ARP分为请求和回复两过程:
- ARP请求(广播):
二层封装:源/目MAC,目的MAC全F
send IP
send MAC
target IP
target MAC FFFFFF- ARP回复(单播):
二层封装:源/目MAC
send IP
send MAC
target IP
target MAC
同网段ARP请求
不同网段ARP请求
A和B同网段发送IP包,地址解析详细过程:
- HostA首先查看自己的ARP表
确定其中是否包含有HostB的IP地址对应的ARP表项
如果找到了对应的表项,则HostA直接利用ARP表项中的MAC地址对IP数据包封装成帧,并将帧发送给HostB- 如果HostA在 ARP表中找不到对应的表项
则暂时缓存该数据包,然后以广播方式发送一个ARP请求
ARP请求报文中的发送端IP地址和发送端MAC地址为HostA的IP地址和MAC地址,目标IP地址为HostB的IP地址,目标MAC地址为全0的MAC地址
由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求
- HostB比较自己的IP地址和ARP请求报文中的目标IP地址
由于两者相同,HostB将ARP请求报文中的发送端(即 HostA>IP地址和MAC地址存入自己的ARP表中
并以单播方式向HostA发送ARP响应
,其中包含了自己的MAC地址
。其他主机发现请求的IP地址并非自己,于是都不做应答- HostA 收到ARP响应报文后,将HostB的MAC地址加入到自己的ARP表中,同时将
IР数据包用此 MAC地址为目的地址封装成帧
并发送给HostB
ARP相关协议
RARP
与ARP,以MAC地址去请求IP地址
代理ARP
因为ARP不能跨三层
- 代理即通过三层设备(网关),去代理这个ARP报文,发送到目的端
免费ARP
主动发送ARP的报文,告诉这个网络中本地的IP和MAC,让其他设备刷新MAC表项(或ARP表项)
应用场景
- 设备替换(把老设备换下来,新设备换上去),刷新终端的arp缓存表
- VRRP主从切换,刷新交换机(网络设备)的MAC地址表,ARP表
- 网络中主机IP地址冲突检测
对IP包的处理
对应课件5.4 IP包转发,实际上就是将的源端如何发送数据,如何解析地址,中间设备如何处理,目的端如何解封装
- 源端
- 中间设备
- 目的端
ICMP测试工具
关键字段
Type:错误类型
Code:错误码
操作
ping:提供回显判断是否能通
tracert:
- 可发现所有经过的三层节点,第一个包TTL = 1 ,到达第一个路由器,回目的不可达, 源主机记录
发送第二个包TTL=2,同样的过程,直到到达目的
TCP/UDP
TCP基本定义
TCP特点
面向连接、有序、多路复用、可靠传输、流量控制
TCP报文结构
源/目端口号:每一个端口对应一个上层应用
序列号(seq):
- 每个报文都有一个序列号,不冲突,有序发送,方便重组
确认号(ack):
- 作为回复,三次握手ack为对方发送过来的序列号+1,数据传输阶段代表接收了多少数据
控制位(flag):
- SYN:取值0或1,同步序列号,初始化
- FIN:取值0或1,数据传输完毕
- PUSH:取值0或1,推数据
- RST:取值0或1,重置连接
- ACK:取值0或1,确认标志
窗口值:
- 分为接收窗口和发送窗口,也就是说我一次可以发送多少数据,接收多少数据;单位bytes
连接和断开过程
三次握手:
- 发送方 SYN置位 seq = a
- 接收方回 SYN 置位 seq = b ack = a + 1
- 发送方 ACK置位,seq = a + 1 (第二个发送的包)ack = b + 1 (代表收到了)
四次断开:
- 发送方发送FIN置位,seq = a,代表数据发送完毕
- 接收方回复ACK置位,seq = b,ack = a + 1,代表收到了
- 接收方回复FIN置位置,seq = c,代表数据接收完毕
- 发送方发送ACK置位,seq = a + 1(第二个包)
TCP确认机制
应用背景
- 如果每发送一个报文就要一个确认,浪费大量的带宽
所以在HTTP1.1以后,发送方可以发送多个报文,接收方接收完毕以后统一回复ACK置位代表收到了确认过程
- 发送方发送窗口为4096,然后它发送了4个1024长度的报文
- 接收方回复ACK置位,ack = 4097(收到了4096 + 1),seq = n
重传机制
重传过程
- 发送方发送窗口为4096,发了4个1024长度报文
- 由于中间链路质量问题,其中第二个报文在这个路径上丢了
- 接收方回回复ACK置位,ack = 1025(代表收到了1024字节 + 1),代表第二个报文丢了
- 发送方接收到以后,并不会马上重发,因为他并不能确定这个报文丢了(可能是延迟还未收到)
- 直到RTT超时(往返时间),发送方才会将第二个报文重新发送过去;
- 接收方收到了第二个报文以后,根据序列号排序,返回ACK置位,ack = 4097(4096 + 1 ),代表全部收到
滑动窗口
- 发送方和接收方在三次握手的时候,会协商接收和发送的窗口值;
- 发送方按照约定的窗口值发送数据,比如4096
- 接收方接收次数据以后回复ACK置位,ack = 4097(4096 + 1 ),由于接收方程序繁忙,会将接受窗口值调整为2048,然后发送出去;
- 发送方接收到窗口值为2048,则调整发送窗口值,同时每次只发送2048字节的数据;
TCP三次握手建立连接
A<->B
- A向B发出连接请求
将段的序列号标为a,SYN置1
由于是双方发出的第一个包,ACK无效- B收到请求
读出序列号a,发送序列号为b的包
将ACK置为1,将确认号置为a+1,同时将SYN置1- A收到B的连接确认后,对该确认再次做确认
收到确认号为a+1、序列号为b的包后
发送序列号为a+1、确认号为b+1的段进行确认
B收到确认报文后,连接就建立了
TCP四次握手断开连接
A<->B
- A要求终止连接
发送序列号为p的段,FIN置为有效
同时确认此前刚收到的段- B收到A发送的段后
发送ACK段,确认为p+1,同时关闭连接- B发送序列号为q的段
FIN置为有效,通知连接关闭- A收到B发送的段
发送ACK段,确认号为q+1,同时关闭连接
TCP连接终止
总结
小小励志
有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》