首页 > 试题广场 >

请解释tcp连接建立过程,如果可能,请结合相应系统调用函数解

[问答题]
请解释tcp连接建立过程,如果可能,请结合相应系统调用函数解释交互过程。
推荐

第一次握手:建立连接时,客户端调用发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器端收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据;

状态图如下:


相关系统调用:client端调用connect()开始建立连接,连接建立好后退出

服务器端调用完listen()后就可以响应连接请求,连接请求建立好后调用accept()把连接拿出开始通信

注意:accept()server建立连接没有关系,它只是取出建立好连接的socket,不参与连接建立的过程。

编辑于 2015-01-28 16:03:23 回复(3)
更多回答
Tcp连接的三次握手。
1.client发送syn(syn=j)到server,并进入SYN_SEND状态,等待server确认;
2.server收到syn包,确认client的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时server进入SYN_RECV状态。
3.client收到server发送的SYN+ACK包,向server发送确认包ACK(ack=k+1),此包发送完毕,client和server进入ESTABLISHED状态,完成三次握手。
完成三次握手,client和server开始传送数据。

相关系统调用:
client端调用connect()开始建立连接,连接建立后退出;
server端调用listen()后就可以响应连接请求,连接请求建立后调用accept()把连接拿出开始通信。
其中需要注意的是,accept()跟server建立连接没有任何关系,它只是取出建立好连接的socket,不参与连接建立的过程。
发表于 2021-04-16 23:01:41 回复(0)
http://www.cnblogs.com/fengkang1008/p/4794081.html
就是没有函数相关介绍
发表于 2015-09-09 11:22:10 回复(0)
tcp通过三次握手协议来建立连接,首先client端A向服务器端B主动发送连接请求;服务器端B接收到请求后,发送一个确认给A,A接收到B的确认后,还要向B再发送一次确认,这是TCP连接建立,A进入连接准备状态,B接收到A的确认后,也进入连接准备状态。

Hadoop系统在client端向Datanodes发送复制数据时候,建立的tcp连接。
发表于 2015-04-22 20:02:40 回复(0)
Spark通信:
RpcEnv ->  Netty  -> Nio(改进型) ->  tcp
RpcEnv: https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rpc/RpcEnv.scala
Spark Netty:https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/network/netty/NettyBlockRpcServer.scala

发表于 2017-02-26 00:06:00 回复(0)
经过三次握手建立一个连接:

  1. 首先A向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号。这时,A进入SYN-SENT状态。
  2. B收到请求后,向A发送确认。在确认报文段中把SYN和ACK位都置为1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。请注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时B进入SYN-RCVD状态。
  3. A收到B的确认后,还要向B给出确认。确认报文段的ACK置为1,确认号ack=y+1,而自己的序号seq=x+1。这时,TCP连接已经建立,A进入ESTABLISHED状态,当B收到A的确认后,也会进入ESTABLISHED状态。

发表于 2016-05-23 19:00:01 回复(0)
发表于 2014-12-21 14:47:02 回复(0)
三次握手
发表于 2014-12-21 07:13:50 回复(0)
cool
发表于 2014-12-20 23:55:33 回复(0)
首先是三次握手,然后是建立连接,
发表于 2014-12-20 22:38:43 回复(0)
首先是三次握手,然后是建立连接,
发表于 2014-12-20 22:34:01 回复(0)