基础
中继器只能加压,治不了失真
封装与解封装
交换机基本原理
交换机=网桥
集线器,中继器是一层设备,交换机是二层设备
交换机解决三个问题:
- 无限传输距离
交换机是二层设备,所以接收时会把电信号变成二进制,转发时再转化为电信号,这就是一个重写的过程(“笔迹不会”)
- 完全没有冲突
冲突:电流的冲突
在交换机中是二进制,是数据,所以不会冲突
- 一对一的单播
交换机有mac地址表
端口号
这是去的时候的端口:源端口号是随机的2024-65535
回的时候原,目的端口互换
ARP协议
ARP协议广播不会越过路由器
1.1发给1.2要经过路由器,刚开始目标mac是网关,后面要重新进行封装与解封装
不知道对方的mac地址,那么数据包中Dmac是全F
ping的第一步为什么超时:因为他发了一个ARP协议
TCP协议
TCP分段完IP不分片
- 无法确定对方是否在
- 数据缺失
- 乱序
- 发送完数据另一方无法确定是否发送完毕
—>面向连接(解决上述问题)—>三次握手
- seq:设置序号去排序(序号刚开始时随机生成,之后在逐渐增加,例:随机->500,后面的序号就是501,502……)
- Ack(ack):确认号:(确认和重传),对方收到后,对方会回一个ack确认号(seq+1),如果对方未回,则等待一段时间后,再给对方发一次
- 首部长度:TCP报文长度
- 6个标志位:0或1
- URG: 置为1,紧急,发送时先发送16位紧急指针
- ACK:置为1,代表是一个回复消息(所以三次握手中第一次没有ACK及ack确认号,后面的两次回复消息才有Ack),只是个标志,和Ack没关系,ACK标志位为1,ack才有意义
- PSH:推送
- RST:意外断开就置为1
- SYN:1:连接请求
- FIN:置为1,代表数据发完了
排序:seq,确认:ack,重传:ack,
分段:把大数据分成若干个小数据
流控: TCP每次发送完消息都必须要收到对方的回复消息,否则就要重传(所以效率很低)->滑动窗口
滑动窗口机制--win,Win=几就连续发几个包,win值不断增加,直到对方接受不了,win的值是一直变化的,根据网络情况来定
例1:发送消息seq=10,win=3,连续发三个,回复消息:ack=13,win=3
例2:发送消息seq=13,win=5,连续发5个,回复消息:ack=17,win=4(不能一次性接受5个,所以回复win=4)
TCP头部最小是20字节(不算数据和选项 (字节 4*5))
下图,每一行代表32位(bit)
先填保留字段,再填选项
选项:32位用于以后再添加功能
IP协议
每一行都是32位(bit),如果上层是TCP协议,IP不分片
- 版本:IPV4/IPV6
- 他的数据部分是数据+TCP头部或UDP头部
- 首部长度:IP头部长度
- 生存时间:TTL(time to life):最多能经过几个节点设备(路由器)转发,每经过一个就减一
- 协议:标记上层使用的是什么协议(TCP/UDP),协议号7代表TCP ,16代表 UDP,(7和16是十进制)
- 标识:分片后有多段数据,如何分辨他们是否是同一个数据包里的东西,一样的标识符就代表他们是同一个数据
- 标志:fragment:分片,don't fragment:set 这个标志位如果为1 代表他没分片,如果 more fragment 置为1,代表他后面还有分片包,到最后一个数据时,不需要在分片了,more….就置为0
- 片偏移:偏移量:第一个:片偏移0,第二个300,第三个500