美文网首页linux网络already
Linux_196_TCP三次握手

Linux_196_TCP三次握手

作者: 为宇绸缪 | 来源:发表于2022-07-08 21:48 被阅读0次

    TCP协议

    TCP协议位于传输层,提供可靠的字节流服务(Byte Stream Service),指的是以字节流的形式传递给接收者,没有固定的报文边界限制,只能知道总共发送的数据,但是不知道一次能读取到多少数据,为了更容易传输大数据将数据切割了。

    三次握手

    为了数据传输的准确性,服务端和客户端之间需要三次的交互(三次握手)

    • 第一次,client发送syn(syn=j)给server,进入SYN_SEND状态,等待服务器确认
    • 第二次,server收到syn包,确认client发来的syn(ack=j+1),同时自己发送一个SYN包(syn=k),也就是SYN+ACK包,此时server进入SYN_RECV状态
    • 第三次,客户端接收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此时包发送完毕了,客户端和服务器进入ESTABLISHED状态,完成三次握手。

    sync表示建立连接的信号,ack表示确认消息
    第一次握手:客户端发送了SYN=1,seq=x,这个x是一个随机数,服务端接收到了客户端发来的数据包,知道自己要和客户端建立连接了
    第二次握手:服务器给客户端发送一个SYN=1,seq=y随机数,ACK=x+1,服务端发送前两个数据都是为了证明自己的发消息的能力,服务端在客户端发出的seq随机数上+1是表示明确客户端身份,他俩是同一个连接
    第三次握手:客户端再次向服务器发送一个ACK=y+1,明确告诉服务器,可以和客户端进行通信了

    TCP三次握手.png

    相关文章

      网友评论

        本文标题:Linux_196_TCP三次握手

        本文链接:https://www.haomeiwen.com/subject/eqavbrtx.html