指令模式:
nc -v ip_address port
举例:可以看到我们分别与谷歌的Public DNS服务器(8.8.8.8:53)、百度的HTTP服务器(220.181.38.148:80)和HTTPs服务器(220.181.38.148:443)成功建立了TCP连接。
~$ nc -v 8.8.8.8 53
dns.google [8.8.8.8] 53 (domain) open
~$ ping baidu.com
PING baidu.com (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: icmp_seq=0 ttl=50 time=84.007 ms
~$ nc -v 220.181.38.148 80
220.181.38.148 80 (http) open
~$ nc -v 220.181.38.148 443
220.181.38.148 443 (https) open
安装NetCat命令行工具
安装netcat
brew install netcat
如果没有brew,可以安装brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
建立TCP连接
~$ nc -v 8.8.8.8 53
dns.google [8.8.8.8] 53 (domain) open
$ netcat -v 220.181.38.148 443
220.181.38.148 443 (https) open
↑这里的netcat和nc命令虽然有微妙的不同,但是几乎可以理解为同一程序和其别名。↑
-v我们能够实现端口扫描。进行端口扫描的时候最好加上flag z(zero I/O 模式),就能自动断开与服务器的连接。
nc -vz ip_address port
模拟三次握手四次挥手
以此为例:https://www.csdn.net
打开Wireshark并输入过滤条件“ip.addr == 220.185.184.46”,清空Wireshark的已捕获数据,使用浏览器访问远程地址,即可看到抓包数据
清空浏览器Cookie(或重启浏览器),清空Wireshark的已捕获数据,使用浏览器访问远程地址https://www.csdn.net,即可看到3次握手的完整过程:
使用浏览器访问远程地址,清空Wireshark的已捕获数据,清空浏览器Cookie(或关闭浏览器),即可看到4次挥手的完整过程:
二三次合并了