TCP/IP
IP地址
IPv4
- 帧格式
IPv6
- 帧格式
- 下一个头部
单播
组播
CIDR聚合
攻击
arp
帧格式
arp过程
arp代理
- 优点(no routing)
- 缺点(代理arp可能出现环路问题)
免费arp
- 避免ip地址重叠
- 冷备:刷新arp
- arp攻击:毒化arp
不同的vlan收不到arp包
ICMP
帧格式
- 类型8,代码8,校验和16,内容部分
代码值
- 8*:请求;3*:目的不可达;
5*:重定向
内容部分
- 包换IP的头部
接着的8个字节送回去
不产生ICMP
- 不是第一个分片;
广播;
ICMP本身
源站抑制
- UDP基本上不使用
- TCP可能使用
IP选项
IP记录路由
- 记录路径上的出口地址
ping命令加上-R
traceroute
- windows:ICMP
- linux:UDP+端口不可达
源站路由
- 填充路径上的节点IP
UDP
帧格式
- 8字节:源/目的端口+长度+校验
UDP伪头部
- 在传输层再次确定是发给自己的
校验和
- 检验头部和数据
IP
帧格式
- 20字节+选项部分(最大40字节)
总长度最大60字节
校验和
- 校验头部
分片
- MTU
IP层min46,max1500 - 发送方或者是中间都有可能分片
- 组装只发生在目的
- 16位标识
3位标识
13位片偏移 - 如果是上层带有重传的时候
需要整个重传 - IP头部重复,后面的按照8字节的整数倍分片
IPv4和IPv6转换
广播和组播
UDP支持
TCP 只能单播
TCP
可靠保证
- 分块传输
- 超时重传
- 延迟确认
- 校验和
- 顺序
- 流量控制
字节流
帧格式
- 不包括首部的话20字节
- 6个标识位
现在好像不是这个了 - ACK不占Seq,Fin占用Seq
拥塞控制
连接建立
- 三次握手
- 三次握手的原因
- 超时指数退避
- 同时建立连接
连接断开
-
四次挥手
-
半连接
-
四次挥手的原因
-
FIN,ACK标识;
Seq,Ack num; -
2MSL
-
RST位被置为1的情况
- TCP指定的端口未开启
- 异常终止一个连接
- 关闭半打开连接
选项
-
MSS协商
- 本地:MTU减四十
- 不是本地:536
数据交互
-
延迟确认
-
Nagle算法
-
发端只有在收到上次的确认才发送接下来的数据
所以数据在发端积累 -
窗口大小
- 窗口大小的更新
-
滑动窗口
- 窗口变大/变小
- 慢启动
-
cwnd和win(拥塞窗口和接收方的win size)
- cwnd是发送方的流量控制
win是接收方的流量控制
- cwnd是发送方的流量控制
-
超时重传
-
指数退避
-
RTO时间计算
- 各种计算方式
-
子主题 3
-
-
流控
-
慢启动
- 指数增加
-
拥塞避免
- 超过ssthresh
- 线性增加
-
发生拥塞
-
超时
- ssthresh变成当前cwnd的1/2
- cwnd变成1
-
ICMP源站抑制
-
cwnd变为1
- ssthresh不变
-
丢失/收到重复的ACK
- 快速恢复
-
-
糊涂窗口综合征
-
现象:小窗口不断交互
- 接收方不告知小窗口
- 发送方可以发送一定长度的数据才开始发送
-
-
定时器
-
坚持定时器
-
保活定时器
- 定时两个小时
- 第一次两个小时,如果没有收到
则间隔75s,重复10次
长肥网络(LFS)
- 序号回绕
- 窗口扩大选项
- 时间戳选项
ftp
端口号
- 20数据
- 21控制
模式
- 主动模式
- 被动模式
telnet
端口号
- 23
交互式数据流
http
URL
- protocol://host/URI
GET
瞬时协议
cookie
- 看起来让http像是持续性连接一样
多连接
SSL
secure socket layer
握手过程
- →client Hello(包含协议版本、可以支持的算法、客户端随机数)
←server hello(选择的算法)
←Certificate (服务器的证书)
←Server Key Exchange(服务器的公钥和签名+可选的请求客户端公钥+服务器的随机数)
←Server Hello Done(表明服务器Hello结束)
→Client Key Exchange(客户端的公钥+一个新的客户端随机数+使用服务器公钥加密)
至此有了一个对方的公钥和三个随机数
↔加密数据交互
CIDR 分层路由 路由聚合
特殊的IP地址
- 内网地址
- 组播地址
- 环回地址
DHCP
帧格式
握手过程
- 发现
- 服务器回应(可以提供的地址)
- 决定选用哪个服务器 哪个地址(同时用于通知其他的服务器)
- 服务器响应DHCPACK/'DHCPNACK
使用UDP协议
防火墙
起码大概知道是干什么的
ACL
NAT/NAPT
弊端
- 需要修改多个层的信息
- 例如FTP协议数据端口的问题
NAT
- 重写IP
NAPT
- 重写IP+port
对于TCP连接需要判断是否关闭连接了,用于判断是否释放NAT映射表
NAPT遇到的各种麻烦
- 各种需要转换的地方
- 比如UDP的时候,返回来的数据包,还能找到内网内的目的主机吗?
NAT后面的服务器连接到互联网中的问题
- 应该是固定的端口转发
DNS
分层结构
- 根
- 顶级
查询方式
-
递归
-
当前服务器无法解析域名时:自动的查询当前DNS给出的其他DNS服务器
-
迭代
-
当前服务器无法解析域名时:主机根据DNS给出的可能的其他DNS服务器,主机决定向哪个DNS服务器重新请求
帧格式
- 12个字节的头部
封装
-
UDP
-
53号端口
-
TCP
-
53号端口
区域传输
-
从DNS服务器和主DNS服务器备份
-
NOTIFY消息
-
用于主从同步的
攻击相关
链路层攻击
-
有线网络攻击
- 接入网桥,使用STP协议,恶意生成最小COST节点,使流量导向该恶意节点
-
无线网络攻击
-
通过嗅探,捕捉网络中的信息,进一步分析密码等敏感信息
arp相关的攻击
- 假装代理arp
- 还有一个相关的攻击没看懂
ICMP攻击
-
Ddos攻击
- 发送广播形式的ICMP,源地址填充成受害主机
DNS攻击
- Dos攻击,使得DNS服务器无法响应请求
校验和计算
在网卡上完成校验和计算
IANA负责地址分配
XMind - Trial Version