• java网络编程三次握手四次挥手


    第一次握手:client设置syn=1,随机产生一个序列号seq=x,将数据包发送到server。client进入syn_send状态,
    等待server确认。
    第二次握手:server查看client发来的数据包syn=1,得知是client发来的连接请求。server设置syn=1 ACK=1
    ack = x+1 seq = y,并将数据包发送到客户端。server进入syn_rcvd状态。
    第三次握手:client得到server的确认,查看ACK=1 ack=x+1。然后,再给server一个确认,设置ACK=1 ack=y+1.
    server接收client包,查看ACK是否为1,ack是否为y+1,如果正确建立连接。同时进入established.

    第一次挥手:A 设置 FIN=1 seq = x,将数据包发送到B,A进入FIN_WAIT_1状 态。等待B的确认。
    第二次挥手:B 查看FIN,知道A是要释放连接。B设置ACK=1 ack = x+1 ,将确认返回A。B
    进入CLOSE_WAIT。A接收该确认,进入FIN_WAIT_2状态。等待B的连接释放。
    第三次挥手:B 设置 FIN=1 seq = y,将数据包发送到A,B进入LAST_ACK状态。等待A的确认。
    第四次挥手:A 查看FIN,知道B是要释放连接。A设置ACK=1 ack = y+1 ,将确认返回B。A
    进入TIME_WAIT。B接收该确认,进入CLOSED状态。

    三次握手的原因:防止已经失效的报文发送到服务器端。
    握手要3次,挥手要4次原因:连接时,服务器一直处于LISTEN状态,server接收到syn报文后,会将syn和ack同时返回。
    释放连接时,只是一端不在发送报文,但还是可以接收的。另一端可以直接close。也可以等待发送完毕之后,再发送FIN
    报文,所以是将,FIN和ACK发开发送。

  • 相关阅读:
    Drawable和Bitmap的区别
    Android中的Drawable资源
    了解Objective-C中NSAutoreleasePool使用方法
    Object-C 内存管理及对象
    事件类型: 错误 事件来源: Service Control Manager 事件种类: 无 事件 ID: 7000
    HTML xmlns
    asp.net(C#)清除全部Session与单个Session
    Html学习笔记---html5表单元素
    jquery学习笔记---jquery事件($.event.special )
    C#学习笔记---Dispose(),Finalize(),SuppressFinalize
  • 原文地址:https://www.cnblogs.com/JLZT1223/p/7360036.html
走看看 - 开发者的网上家园