tcp协议
发起连接标识 像SYN FIN 表示连接的初始化
应答标识 ACK 表示收到上一个请求的应答
seq和ack每次请求都要带上
seq 请求***
ack 应答*** 对应的请求***+1
三次握手
syn表示建立连接
每次发送端都发送seq=X 接收端都要响应ack=X+1
状态值
客户端
SYN-SENT syn已经发送
ESTAB-LISHED 建立连接
服务端
SYN-RCVD syn已经接收
ESTAB-LISHED 建立连接
四次挥手
FIN 表示建立关闭连接
状态值
主动端
FIN-WAIT-1 等待被动端确认
FIN-WAIT-2 等待被动端发起关闭请求
TIME-WAIT 等待2MSL时间确保被动端收到关闭确认(处于该状态下被占用的端口未释放)
CLOSE 已经关闭
被动端
CLOSE-WAIT 收到主动方关闭请求 等待被动方通知进程关闭
LAST-ACK 被动方等待上次发出关闭请求 主动方发来的关闭确认
CLOSE 已经关闭
TIME-WAIT过多 会造成短时间内同时占用大量端口
查看状态
netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'
vi /etc/sysctl.conf
编辑文件,加入以下内容:net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p
让参数生效。
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间
window
注意find findstr 后面的字符串必须用双引号
netstat
-a 显示所有连接和侦听端口。
-n 以数字形式显示地址和端口号
-o 显示拥有的与每个连接关联的进程 ID。
-p 显示 proto 指定的协议的连接;proto 可以是下列任
何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选
项一起用来显示每个协议的统计,proto 可以是下列任
何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP
或 UDPv6。
-b 显示在创建每个连接或侦听端口时涉及的可执行程序。
-v 与b配合
netstat -ano -p tcp |findstr "3306"
tskill 3500
netstat -ano----可以查看所有网络连接进程
netstat -anobv----可以查看所有网络连接进程 查看进程名称
//以下127.0.0.1 代表本机ip地址
netstat -ano -p tcp |findstr "127.0.0.1:80" ----查看本机80端口tcp协议连接进程
netstat -ano -p tcp |findstr "127.0.0.1:80"|findstr /i "ESTABLISHED"----查看本机80端口tcp协议已完成连接进程
netstat -ano -p tcp |find /c "127.0.0.1:80"----统计连接数
netstat -ano -p tcp |findstr "0.0.0.0:80"---------------查看tcp协议正在监听的进程
netstat -ano -p tcp |findstr "127.0.0.1:80"|findstr "192.168.1.222"---------------查看特定ip连接进程
tasklist|findstr 进程号 ------查看进程名
tskill 3500 --------杀掉进程号3500
linux系统
netstat 参数
参数
-a--all:显示所有连线中的Socket。
-l--listening:显示监控中的服务器的Socket。
-p :列出该网络服务的程序 PID
-n--numeric:直接使用IP地址,而不通过域名服务器。
-t--tcp:显示TCP传输协议的连线状况。
-u--udp:显示UDP传输协议的连线状况。
//以下127.0.0.1 代表本机ip地址 也可以用$ip来替代 $ip表示任何ip
//netstat -antp | grep $ip ':80'
netstat -antp | grep '127.0.0.1:80'----查看本机80端口tcp协议连接进程
netstat -antp | grep '127.0.0.1:80' | wc -l----统计连接数
netstat -antp |grep "127.0.0.1:80"|grep "ESTABLISHED"----查看本机80端口tcp协议已完成连接进程
netstat -antp | grep ':::80'---------------查看tcp协议正在监听的进程
netstat -antp| grep '127.0.0.1:80' | grep '192.168.1.222'---------------查看特定ip连接进程
kill -15 3500 --------正常杀掉进程号3500
查看IP访问次数
netstat -natp|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
查看查看连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
实时查看连接状态
watch "netstat -n | awk '/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'"
上一篇: Python爬虫框架Scrapy学习笔记
下一篇: python二维数组输出为图像
推荐阅读
-
99元!魅族45W超充适配器开售:智能兼容快充协议
-
服务器启用HSTS协议
-
http协议无状态中的 "状态" 指的到底是什么?
-
Socat套接字中的TCP编程模式-与UDP编程模式-
-
Salesforce.com和Oracle就云合作达成长期协议
-
c#基于TCP/IP、CIP协议的欧姆龙PLC通信
-
【5G系列】如何学习测试协议(2)——NAS选网测试协议6.1.1.1
-
Python与ABB机器人TCP通讯(使用Python控制机器人偏移)
-
报错:jdbc.SQLServerException通过端口3306连接主机localhost的TCP/IP协议失败之解决方法
-
PHP在RS232串口通讯协议的应用演示[测试环境WinXP/PHP5.1.4]