首页 > 试题广场 >

请你说说三次握手

[问答题]
4654646
发表于 2021-09-26 22:19:49 回复(0)
当客户端要和服务器建立TCP连接时,客户端先向服务器发送建立连接请求SYN,服务器在收到请求后回复给客户端SYN和一个确认信号ACK,表示我已收到你的请求,客户端收到确认后,也回复个服务器一个ACK信号表示已经收到服务器的确认,由此客户端和服务器之间的TCP连接就建立起来了
发表于 2021-09-26 17:14:42 回复(0)

假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户TCP,它想建立一个与服务器上某个进程之间的连接,客户中TCP会用以下方式(三次握手)与服务器中的TCP建立一条TCP连接:

第一次握手:   

(1) 客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文,该报文中不包含应用层数据。但是在报文的首部中的一个标志位(SYN比特)被置为1,因此,这个特殊报文被 称为 SYN报文。

(2)客户端会随机选择一个初始序号(client_isn),并将此编号放置于该起始的TCP SYN报文段的序号字段中。

(3)该报文段会被封装在一个IP数据报中,并发送给客户端服务器。

第二次握手

(1)当服务器收到包含TCP SYN 报文段的IP数据包时,服务器会从该数据报中提取出TCP SYN报文段,为该TCP连接分配TCP缓存和变量,并向客户端TCP发送允许连接的报文段。

(2)这个允许连接的报文段也不包含应用层数据,但是在报文段的首部包含了3个重要信息,首先SYN比特为置为1,其次该TCP报文段首部的信号(client_isn)被置为(client_isn+1),最后服务器选择自己的初始序号(server_isn),并将其放到TCP报文段首部的序号字段中。允许连接的报文段有时被称为SYNACK

第三次握手

(1)在收到SYNACK后,客户端也要该连接分配缓存和变量,客户主机向服务器发送另外一段报文,对服务器的允许连接的报文段进行确认。

(2)客户端在发送报文时将(server_isn+1)放置到TCP报文段首部的确认字段中完成此项工作,因为已经建立了连接,此时SYN被置为0。

:在完成三次握手的第三次之前分配这些缓存和变量,使得TCP易于收到SYN洪泛的拒绝服务器攻击,详情见:http://www.cnblogs.com/xyzyj/p/7345701.html

 

                                             

发表于 2021-09-26 10:37:53 回复(0)