首页 > 试题广场 >

(简答题)请描述 TCP 三次握手的全过程。

[问答题]
(简答题)请描述 TCP 三次握手的全过程。
  1. 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
  2. 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
  3. 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
发表于 2018-04-13 21:32:13 回复(0)

TCP建立连接的过程叫做三次握手,握手需要在客户和服务器之间交换三个TCP报文段。

假设A运行的是TCP客户程序,B运行的是TCP服务器程序。

①A先创建传输控制模块(TCB),然后发送请求报文段,此时首部中的同部位SYN=1,同时选择一个随机序号seq=x。TCP规定,SYN=1的报文段不能携带数据,但是要消耗掉一个序号。

②B收到连接请求后,如同意连接,就向A发送确认。在确认中应把SYN和ACK都置1,确认号为ack=x+1,序号seq=y。这个报文也不能携带数据,同样消耗序号

③TCP客户A在收到B的确认之后,还要向B给出确认。确认报文ACK置1,确认号ack=y+1,而自己的确认号seq=x+1.

经过上述三次握手之后,TCP连接已经建立。

发表于 2018-04-11 13:14:05 回复(0)
第一次握手:客户端发送 syn 包 (syn=x) 到服务器,并进入 SYN_SEND 状态,等待服务器确认; 第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=x+1),同时自己也发送一个 SYN 包(syn=y),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态; 第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=y+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP 连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去
发表于 2020-07-08 08:26:03 回复(0)
首先服务器B先创建传输控制块TCB,然后进入LISTEN状态,等待客户进程的连接请求。客户进程A创建传输控制块TCB,然后向服务器发送请求连接报文,SYN=1,seq=x,为A进程的序号,然后A进入SYN-SEND状态。B同意后向A发送同意报文,SYN=1,ACK=1,ack=x+1,seq=y,然后B进入SYN-REVD状态。A向B发送确认ACK=1,ack=y+1,seq=x+1,A进入ESTABLISHED状态。B收到确认后也进入ESTABLISHED状态。
发表于 2018-04-11 15:34:59 回复(0)
- 第一次,客户端向服务端发送TCP连接请求报文,不包含应用层数据。SYN=1 ,seq=x
- 第二次,服务器收到报文后,如果同意连接,就向客户机发回确认,并为TCP分配缓存和变量  SYN=1 ACK=1 seq=y  ack=x+1
- 第三次,客户端向服务器发出确认,并且也要给该连接分配缓存和变量,该报文可以携带应用层数据。ACK=1 seq=x+1 ack=y+1
发表于 2018-04-11 11:41:43 回复(0)
1.首先客户端向服务端发送一个TCP SYN报文,该报文中不含有应用层数据。在该报文的首部的一个标志位SYN被置为1,另外客户端会随机选择一个初始序号client_isn放到序号字段中,然后把该报文封装在ip数据包中,发送给服务器。
2.服务器会从ip数据包中取出TCP SYN报文段,为该tcp分配tcp缓存和变量,同时向客户端发送一个SYN ACK报文段,首部的标志位SYN被置为1,确认字段ACK=client_isn+1,并且随机选择一个初始序号server_isn放到tcp报文的序号字段中
3.客户端在收到SYN ACK报文段后,也要为本次tcp连接分配缓存和变量,最后发送一个报文对于服务器的允许连接报文进行确认,SYN=0,序号为client_isn+1,ACK=server_isn+1.另外第三次发送的报文可以携带应用层数据
发表于 2018-04-11 10:52:54 回复(0)