一、孤儿连接
(1)处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,
才能转移至TIME_WAIT状态,否则它将一直停留在这个状态;
(2)如果不是为了在半关闭状态下继续接收数据,连接长时间地停留在FIN_WAIT_2状态并无益处;
(3)连接停留在FIN_WAIT_2状态的情况可能发生在:
客户端执行半关闭后,未等服务器关闭连接就强行退出了;
此时客户端连接由内核来接管,可称之为孤儿连接(和孤儿进程类似);
孤儿连接——占用内存;
Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数:
/proc/sys/net/ipv4/tcp_max_orphans 指定内核能接管的孤儿连接数目
/proc/sys/net/ipv4/tcp_fin_timeout 指定孤儿连接在内核中生存的时间
Paste_Image.png
二、TCP超时重传
TCP超时重传:对方未收到“发送的包”;需要重新传送;
与TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1 指定在底层IP接管之前TCP最少执行的重传次数,默认值是3;
/proc/sys/net/ipv4/tcp_retries2 指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min);
Paste_Image.png
1.固定窗口
Window Size的值固定;
Window Size=3:发送和接收的包的数量均为3;
Paste_Image.png
2.滑动窗口
Window Size的值不固定;
Sender:Window Size=3:发送的包的数量为3;
Receiver:Window Size=2:接收的包的数量为2;
Paste_Image.png
三、拥塞控制
拥塞控制:TCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性;
TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:
慢启动(slow start)
拥塞避免(congestion avoidance)
快速重传(fast retransmit)
快速恢复(fast recovery)
拥塞控制算法
reno算法、vegas算法和cubic算法;它们或者部分或者全部实现了上述四个部分;
当前所使用的拥塞控制算法
/proc/sys/net/ipv4/tcp_congestion_control
Paste_Image.png
四、SP和DP
帧
TCP和IP
五、UDP
传输层、传输性能高;无数据恢复特性
Paste_Image.png
六、Internet层
Paste_Image.png
1.ICMP
TYPE:8——发送包(请求包)
TYPE:0——返回包(回复包)
ping 192.168.8.128 -s 1000
-s #:指定帧的大小,#越大(最大为65507),测试网络稳定性;
-f:flood泛洪(linux有,windows无);
ping 192.168.8.128 -s 65507 -f 攻击服务器,拖垮服务器;
帧的数据最大1500;
帧+DP+SP+protocol=1514;
Paste_Image.png
2.ARP
默认网关:Default Gateway (1、2、3、4)
Paste_Image.png
(1)A→C过程(A→1→2→C)
|SP|SMAC|DP|DMAC|PATH|
|:---:|:---:|:---:|:---:|
|ipA|MAC-A|ipC|MAC-1|A→1|
|ipA|MAC-2|ipC|MAC-C|2→C|
(2)无回应机制——可能造成ARP欺骗
ARP欺骗:抓包/获取对方数据;
Paste_Image.png
七、主机到主机的包传递
ARP过程→3次握手→4次挥手
ARP过程:找MAC地址:(1)(2)
1.(1)本机的MAC表里是否有目标IP对应的主机ID;
(2)有,按照此主机ID发送请求包;
(3)无,广播寻找;
2.(1)其他主机也可收到请求包,但不是给自己的,不关心;
(2)服务器(目标主机)收到,是给我的,接收并在ARP表中记录对方的ID和IP,回复给客户机;
Paste_Image.png
3.(1)源主机(客户机)收到回复后,在ARP表中记录目标主机的ID和IP;
(2)发送访问请求;3次握手,建立连接(ESTAB-LISHED);
(3)TCP/SYN(源主机,发送)——SYN/ACK(目标主机,回复)——TCP/ACK(源主机,发送);
Paste_Image.png
4.源主机:封装(TCP,SEQ=3/DP/SP/SMAC/DMAC);发送数据;
5.目标主机:解封装,回复(ACK=4,SEQ=3/DP/SP/SMAC/DMAC)
6.客户机发送完数据后要求断开,4次分手;(详图参考网络管理1)
客户机(ESTAB-LISHED))→服务器(ESTAB-LISHED):FIN=1,seq=u
服务器(CLOSE-WAIT)→客户机(FIN-WAIT-1):ACK=1,seq=v,ack=u+1
服务器(LAST-WAIT)→客户机(FIN-WAIT-2):FIN=1,ACK=1,seq=w,ack=u+1
客户机(TIME-WAIT)→服务器(CLOSED):ACK=1,seq=u+1,ack=w+1
client |
|
sever |
CLOSED |
|
CLOSED |
SYN-SENT |
|
LISTEN |
SYN-SENT |
|
SYN-RCVD |
ESTAB-LISHED |
|
ESTAB-LISHED |
上面:3次握手 |
|
下面4次挥手 |
ESTAB-LISHED |
|
ESTAB-LISHED |
FIN-WAIT-1 |
|
CLOSE-WAIT |
FIN-WAIT-2 |
|
LAST-WAIT |
TIME-WAIT |
|
CLOSED |
CLOSED |
|
CLOSED |
CLOSING |
二者同时要求关闭 |
CLOSING |
八、反向ARP(根据MAC找IP)
Paste_Image.png
(1)主机无硬盘;数据不在硬盘里,而在内存里;
(2)数据在网络(内存)中——云/网格/
(3)开机→从服务器中获取IP(DHCP)→下载必要文件(如:启动系统文件)到内存中→利用软件连接网络;
这样,系统就会在内存中运行;
(4)DHCP表:对应:主机ID~服务器所给IP;(每次获取的IP固定——根据MAC找IP)
九、Internet协议特征
运行于OSI网络层
面向无连接的协议
独立处理数据包
分层编址
尽力而为传输
无数据恢复功能
十、IP
header |
|
|
|
|
ethernet header |
IP header |
TCP header |
http header |
data |
1.IP的PDU报头(ipv4)
Paste_Image.png
(1)版本:ipv4/6
(2)总长度:header+data;data不固定,总长度不固定;
(3)标识:大包分为多个片段,这些片段属于哪个大包——标识;
(4)片偏移:片段是所属大包的第几个小段;(占12位,8个字节——偏移单位);
(5)标志:有3位,仅2位有效;
DF=0(分片段); DF=1(不分片段);
MF=0(还有片段); MF=1(最后一个片段);
(6)生存时间(TTL):经过路由器的数量:Linux(64)、Windows(128);
Paste_Image.png
ipv4与ipv6报头不同
数量
ipv4地址:2^32
ipv6地址:2^48
Paste_Image.png
协议域
Paste_Image.png
2.公共IP地址(分配、花钱、企业)
任何人、任何地方、都能访问;
类 |
公共IP地址范围 |
A |
1.0.0.0—9.255.255.255 |
A |
11.0.0.0—126..255.255.255 |
B |
128.0.0.0—172.15.255.255 |
B |
172.32.0.0—191.255.255.255 |
C |
192.0.0.0—192.167.255.255 |
C |
192.169.0.0—223.255.255.255 |
3.私有IP地址(不会分配)
局域网中使用;不同的局域网,IP可以相同;
类 |
私有IP地址范围 |
A |
10.0.0.0—10.255.255.255 |
B |
172.16.0.0—172.31.255.255 |
C |
192.168.0.0—192.168.255.255 |
4.特殊地址
0.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络;
255.255.255.255限制广播地址,对本机来说,这个地址指本网段内(同一广播域)的所有主机;
127.0.0.1~127.255.255.254
本机回环地址,主要用于测试;在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包;
224.0.0.0到239.255.255.255 组播地址
224.0.0.1特指所有主机;224.0.0.2特指所有路由器;
224.0.0.5指OSPF路由器,地址多用于一些特定的程序以及多媒体程序;
169.254.x.x
如果Windows主机使用了DHCP自动分配IP地址,
而又无法从DHCP服务器获取地址,系统会为主机分配这样地址;
5.保留地址(损耗地址)
Paste_Image.png
网友评论