总记
SEC开头的这几个干嘛用的?记得学
网络协议栈
- OSI七层
- 以下三层合并成(应用层)
application
则为五层版- 应用层: 通过进程间交互完成特定网络应用,定义是进程间通信和交互的规则。
http/DNS
- 表示层:
- 会话层:
- 应用层: 通过进程间交互完成特定网络应用,定义是进程间通信和交互的规则。
- 传输层
transprot
:负责向两台主机进程之间的通信提供通用的数据传输服务。TCP/UDP
- 网络层
network
:负责为分组交换网上的不同主机提供服务。IP
- 链路层
link
:负责将数据报文分解成数据帧或组装数据帧。 - 物理层
physical
:负责实现相邻计算机节点之间比特流的透明传送。
- 以下三层合并成(应用层)
电路/分组交换
circuit switching and packet switching
- 电路交换:电路交换在通信之前要在双方间建立一条双方独占的物理通道。
- 优点:
1.通信线路双方独占,数据直达,所以延迟很小
2.不必包含地址域,所以虚电信号较小
3.适合长时间的大批量数据,例如流式传输 - 缺点:
1.一个节点故障整条通道都要重连
2.数据按序传输,但是信道的使用效率较低
- 优点:
- 分组交换:采用存储转发传输,将报文分割为若干个较短的分组,然后将这些分组逐个发送(携带源,目的地址和编号信息)。
- 优点:
1.传输前不必建立端到端连接
2.只要有任意节点空闲就能传输
3.信道使用效率高 - 缺点:
1.数据需要包含额外的地址域和编号
2.采用存储转发,延迟不可估计
3.数据分组传输无序,需要接收重组
- 优点:
- 总结:传输量大且需要长事件传输适合使用电路传输。端到端通路中间节点较多时适合使用分组传输,利于提高信道利用率。
有链接/无连接
connection-oriented and connectionless
- 有链接,主要指TCP协议
- 面向连接,采用三次握手方法建立可靠连接
- 单传播传输,TCP连接只允许有两个端点,不支持多播广播
- 面向字节流,UDP为一个报文为单位的传输,TCP为不保留报文边界下以字节流的方式传输
- 可靠传输,对于每个发送接收端发送对应的ACK报文保证数据被成功接收,发生丢包会重传
- 提供拥塞控制,滑动窗口机制以及快重传快恢复
- 双工通信,双端任意时刻都可以主动发送信息
- 无连接,主要指UDP协议
- 无连接,有通信需求发送方直接发出报文
- 不可靠,只负责发送,补确保接收端成功接收
- 面向报文,以报文为单位发送数据
- 无拥塞控制,网络拥塞也不会使发送端降低发送速率
- 支持多对多或一对多的通信
- 协议头开销小,UDP8字节,TCP20字节
- 总结:主要不同方面有
是否有链接
是否可靠
是否一对一
头部开销
传输单位面向
UDP适用于流式传输
基于TCP/IP协议栈的传输流程
describe how data travels from source to destination through each network layer
一个应用程序的消息如HTTP应用协议需要发起发送,将传输报文加上应用协议头;
传输层接收消息,附加传输层协议头,如域名端口号等保证可以发送到目的主机上对应的应用程序;
信息被网络层接收,添加网络层协议报头,如源地址与目的地址IP头;
信息被链路层接收,添加MAC物理地址头,并创建一个链路层二进制数据帧;
物理层将链路层的数据帧用明暗表示二进制01,间隔表示帧块,转为电信号传输。
接收方将比特流组合成字节,再组合成数据帧,根据MAC地址确定是否接收。
进一步解包根据IP或ARP确定传输给网际层的哪个部分,网际层继续解包根据IP确定是否接收。
进一步解包通过传输层协议头进行协议交互,通过端口号发给应用。
应用根据应用层协议解析内容展示使用内容。
协议特点
HTTP协议特点
- 请求响应式或一收一发式
- 无连接
- 无状态,需要开发者自己维护状态
- 灵活,文件支持广
stop-wait
- A每发完一帧都等待B应答,从而重发或者发送下一步
- 信道利用率不高
- 数据帧单工但是信道双工
- 发送方缓冲区保留副本以备重发
GBN/SR
- GBN
GO-BACK-N
- 一次发送若干个数据帧,接收方对每一个数据帧返回应答
- 任意数据帧超时未应答,则从此开始的所有后续都重发
- SR
selective repeat
- 相对于GBN协议仅重传没能成功的数据帧分组,滑动窗口控制未确认的分组数量
- 接收方需要额外的缓存来记录不连续的帧,如2未接收则需要缓存接收到的3.4帧
TCP
- 端到端的,一对一的
- 面向连接,通过三次握手建立连接和四次挥手断开连接
- 面向数据流,将包划分为字节流
- 缓冲传输,发送方会积攒一定量的数据在发送,同时提供了push接口来快速发送。
- 可靠传输,每个包都需要确认收到
- 全双工连接
- 提供拥塞控制,快重传快恢复等
- 发生丢包则重复确认上一个连续的ACK号来告知接收顺序中某一帧没有收到
- 发送方接收到三个重复ACK则快速确认到ACK+1号数据帧丢失
三次握手与四次挥手
- 初始双方都为
close
态 - 客户端:SYN-1,seq=x;客户端进入
SYN-send
态(发送态),服务端进入listen
监听态。 - 服务端:SYN=1,seq=y;ACK=1,ack=x+1;服务器进入
SYN-recvd
(回复态) - 客户端:seq=x+1;ACK=1,ack=y+1;客户端进入
Estab-lished
(稳定态); - 客户端:第三次握手可以同时SYN=1发送新的数据包或者另起发送,使得服务器也进入稳定态。
seq:序号,随机/ ack:确认号,seq+1/ ACK:标志位,1表示确认报文/ SYN:标志位,1表示发起新连接
- 客户端:FIN=1,seq=a;进入
FNI-WAIT1
;(终止等待1) - 服务端:ACK=1,ack=a+1;
CLOSE-WAIT
; - 服务端:FIN=1,seq=b;
LAST-ACK
; - 客户端:ACK=1,ack=b+1;
TIME-WAIT
;- 客户端进入TIME-WAIT一般等待二倍的单向传输时间,保证ACK达到服务器,如果这段时间服务器没有超时重发FNI报文说明服务器收到了本次ACK报文,则关闭TCP连接。
- 服务器:
close
路由算法
LS and DV
分类:
- 静态路由:由人工管理员设置每个路由的转发表,其中有一种叫缺省路由,在转发表比对失败时发给缺省路由器。
- 动态路由:每个路由的转发表由路由器自己计算得出,如RIP,OSPF。
- 全局路由算法:通常指LS算法代表为RIP协议使用,每个路由都由完整的网络拓扑。
- 分散路由算法:通常指DV算法代表为OSRF协议使用,每个路由仅记录相邻路由的转发信息。
LS
一种动态路由选择法也称SPF
算法,用来取代动态路由i算法。
通过主动测试邻接节点的状态,定期的将相邻节点的状态信息传递给所有节点,使得所有节点都有完整的网络拓扑信息,然后再发送信息时可以直接计算出最佳路径。 DV
每个节点定期将自己的路由表传送给所有相邻节点,包括每条路径的目的地址和距离,每个节点通过接收到的路由表来更新自己的路由表。 比较
- 工作原理:LS网络拓扑和链路费用已知;DV算法每个节点智能和相邻节点交流。
- 算法结构:LS全局信息算法。DV迭代,异步,分布式算法。
- 时间复杂性:LS最差复杂度为O(n2);DV对好消息反应迅速但坏消息迟钝,且对其存在计数无穷大问题。
- 报文复杂性:LS知道每个链路的费用,发送的报文比DV迭代查询消耗大。
- 收敛速度:(拓扑改变时,所有节点对改变做出反应的时间)DV遇到环路产生计数无穷。
- 健壮性:LS节点间信息比较孤立,DV一个节点的错误会影响整个网络。
ARP
网络层通过全球唯一的IP逻辑地址识别主机或路由。
在物理层,主机和路由之间通过本地范围内唯一的MAC地址来识别。
将一个分组交到主机或路由需要逻辑地址(IP)+物理地址(MAC)。
静态映射
每一台主机中都储存一张具有所有主机的逻辑地址和物理地址的映射表。
动态映射
地址解析协议(ARP),协议接收IP协议的逻辑地址,将其映射为相应的物理地址,然后将这个物理地址较给链路层。
ARP是解决同一个局域网上的主机和路由器的IP地址和硬件地址的映射问题。<
1.当需要找出目的主机的物理地址时,可以发送一个ARP查询分组,包含发送方的IP+MAC+接收方IP,MAC地址全0表示广播地址。
2.这个分组会在接收方的局域网内进行广播。目的网络上每一台主机或路由器都会接收这个分组,但只有期待接收的主机才能认出时自己需要的发送方IP。
3.返回一个ARP相应分组,包含自己的MAC。
交换机自学习
self-learning and frame forwarding
主机A向主机B发送数据帧,通过ARP协议获得了主机B的MAC地址。
中途交换机节点收到该帧后,标记源MAC与IP,然后在交换表查找目的MAC地址。
如果在交换表中找到了目标MAC的记录则向对应接口发出明确转发帧
。
如果比对失败则广播转发,目的主机接收到数据帧后会回复一个报文盲目转发帧
。
两个交换机相邻广播,会收到下一节的重复广播,发现重复则丢弃此帧。明确丢弃帧
。
同时交换机记录该MAC地址对应此主机存在他的交换表中。
网络互联设备特点
传统以太网
- 总线只有一个,采用CSMA/CD+二进制指数退避
- 共享式以太网,总是广播,所有主机构成一个广播域
- 总线上所有主机共同构成了一个冲突域 CSMA/CD工作流程
- 准备:适配器从网络层获得一个分组,加上以太网头尾组成以太网帧,放入网卡缓存中,但发送之前需要检查信道。
- 检测信道:不断检测信道,直到信道96比特时间内保持空闲状态(保证帧间停顿不会被误认),发送此帧
- 发送时仍然不断检测信道(适配器边发送边监听)
- 发送成功:争用期内没有检测到碰撞
- 发送失败:争用期内被碰撞,立即停止本次发送,执行指数退避算法,等待r背5的512bit后返回检测信道步骤
- 发送失败16次,不再尝试并报错。 以太网发送完每一帧都会保留一下,如果争用期内碰撞则推迟一段时间后重传。
中继器
- 扩展网络距离,将衰减的信号加强再生
- 实现粗细两种同轴电缆以太网共连
- 中继器的两个网段仍然是同一个冲突域和广播域
集线器
相当于多端口中继器,仍然是单个冲突域和广播域
网桥
又称桥接器。又两个接口来连接两个网段。
具有一定智能性,可以学习网络上主机的地址,可以做信号的过滤。
如网段A内的通信会被网桥拦截而不会发送到网段B。
通过网桥连接的两个网段仍然是单个广播域但是不为单个冲突域。
交换机
又称交换式集线器,替代了同轴电缆的连接,以单个主机为单位做连接。
为连接在一个交换机上的两个需要通信的主机建立专用信道,相当于多端口网桥。
交换机的每个接口都是自己的一个冲突域。
没有广播信号过滤功能,收到广播信号后会向所有端口转发此包,因此这些主机是同一个广播域。
路由器###
路由器工作在网络层,可以识别IP地址,可以过滤第三层的广播信息。
路由器的每个端口都是独立的冲突域与广播域。
网关
工作在OSI的高三层(TCP/IP的应用层),不适用冲突域广播域概念。主要做高层协议之间的转换。
这个网关和PC主机和路由器上配置的默认网关没有关系