[nmap]-解决TCP协议
2025/12/28大约 2 分钟
[nmap]-解决TCP协议
内核态层
nmap工具
优势:可以深入理解tcp、udp
安装nmap
brew install nmap此外,使用nmap还能进行端口扫描
面试-TCP3次握手和4次挥手
- 面试的时候希望用专业术语说!虽然打比方能够讲清楚
1、连接时候为什么需要三次握手?
(1)通俗解释1
三次握手,就是说三次收发消息的过程。
一个完整的TCP连接,他有一个标准就是说:通讯的双方,都能确认双方是能够正常收发的!(注意,收和发)
C客户端→S服务器
S收到后,可以确认:
S就知道
C客户端←S服务器
S就知道
C客户端→S服务器
简单说法:三次握手目的是保证双方都有发送和接收的能力
2、为什么TCP握手不能是2次
3、为什么断开的时候需要四次挥手?
牛客:因为tcp是全双工模式,接收到FIN时意味将没有数据再发来,但是还是可以继续发送数据,所以断开连接时必须是四次握手
讲得很好:
这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的
附录1.[研发问题] TCP协议真的有所谓的“粘包问题”吗?
《Linux多线程服务器编程》的说明:《Effective TCP/IP Programming》这本书属于专家经验总结类,初看时觉得收获很大,工作一段时间再看也能有新的发现。
比如第6条“TCP是一个字节流协议”,看过这一条就不会去研究所谓的“TCP粘包问题”。