TCP/IP三次握手具体过程是什么?

如题所述

端口扫描,这种入侵检测方法大家想必都经常用到,但是你对这些方法的基本原理又了解多少呢?
首先,你可以选择都种工具,本人喜欢nmap for linux,但不是常在linux下混,毕竟还是windows方便点,呵呵,高手别笑我哦!
下面谈下端口扫描方式!大体可以分为两种,TCP扫描和秘密扫描
TCP扫描最常见的有两种
全扫描、半扫描
说到TCP,就一定要谈3次握手
客户端——SYN——>服务器
客户端<——SYN+ACK——服务器
客户端——ACK——〉服务器
这就是3次握手,也就是全扫描的全过程,但是,由于这种方式要与目标建立连接,所以一定会被记录下来,所以,这种扫描方式是不隐密的,容易暴露身份。
所以,就有了半扫描这种扫描方式,会发送一个SYN包给目标服务器,然后如果对方在特定端口监听,就会回复一个ACK+SYN,如果主机在活动,但没有监听特定端口,就会回一个RST包。这种方法并没有完成3次握手,所以一般不会被主机记录。
下面,我们就抛开TCP协议,看看有没有办法通过其他方式扫描!
说到文件传送,大家最先想到的就应该是FTP协议了,那么,能不能通过FTP扫描呢?
答案是可以,出于设计上的需要,当FTP客户端要以主动模式请求传送数据时,服务器必须要建立一个返回到客户机端口上的连接客户端发出PORT命令,以IP和端口作为参数,如果参数中有另一台主机的IP数据,服务器将与这台主机相连。
我们就利用FTP的这种特点来执行代理端口扫描。
还有FIN,ident,XMAS扫描等等,由于时间关系和其他种种原因,我现在就不讲了,lz有兴趣,可以加我大家一起探讨~
温馨提示:内容为网友见解,仅供参考
第1个回答  2021-03-30

TCP需要三次握手才能建立连接,那么为什么需要三次握手呢?

第2个回答  2024-10-14
一、TCP三次握手的过程
TCP三次握手过程涉及客户端和服务器之间的三次报文交换。以下是具体的步骤:
第一次握手:
客户端向服务器发送一个SYN报文段,并将SYN标志位设置为1。同时,客户端会随机生成一个初始序列号,并将其放在TCP首部的序列号字段中。此时,客户端的TCP连接状态变为SYN_SENT。
报文示例:客户端 -> 服务器 [SYN, seq=x]
第二次握手:
服务器收到客户端的SYN报文段后,会对其进行确认。确认的方式是在响应的报文段中设置ACK标志位为1,并将确认号字段设置为收到的序列号加1。同时,服务器也会随机生成一个自己的初始序列号,并将其放在响应报文段的序列号字段中,并发送一个SYN报文段,即SYN+ACK报文段。此时,服务器的TCP连接状态变为SYN_RCVD。
报文示例:服务器 -> 客户端 [SYN, ACK, seq=y, ack=x+1]
第三次握手:
客户端收到服务器的SYN+ACK报文段后,会对其进行确认。确认的方式是发送一个ACK报文段,将ACK标志位设置为1,并将确认号字段设置为收到的服务器序列号加1。此时,客户端的TCP连接状态变为ESTABLISHED,表示连接已经成功建立。
报文示例:客户端 -> 服务器 [ACK, seq=x+1, ack=y+1]
服务器收到客户端的ACK报文段后,其TCP连接状态也变为ESTABLISHED,此时双方可以开始传输数据。
二、TCP三次握手的原理
TCP三次握手的原理主要基于以下几个关键点:
同步序列号:通过SYN报文段,客户端和服务器能够协商并确定各自的初始序列号,这是为了确保数据传输的有序性和可靠性。
确认机制:通过ACK报文段,双方能够确认对方已经准备好接收数据,并且已经成功接收到了对方的序列号。这种确认机制是TCP可靠性保障的重要组成部分。
防止已失效的连接请求报文段突然又传送到了服务端:由于网络的不稳定性,已经失效的连接请求报文段可能会在网络中滞留并突然传送至服务端。三次握手机制能够确保服务端不会错误地接受这些失效的请求,从而避免了不必要的资源消耗和潜在的安全风险。
相似回答