欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

tcp协议

程序员文章站 2022-07-01 17:19:16
...

发起连接标识 像SYN FIN 表示连接的初始化 

应答标识 ACK 表示收到上一个请求的应答

seq和ack每次请求都要带上

seq 请求***

ack 应答*** 对应的请求***+1

 

三次握手

tcp协议

syn表示建立连接

每次发送端都发送seq=X 接收端都要响应ack=X+1

状态值

客户端 

SYN-SENT syn已经发送

ESTAB-LISHED 建立连接

服务端

SYN-RCVD syn已经接收

ESTAB-LISHED 建立连接

 

四次挥手

tcp协议

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]}'"