2019java后台开发面试题1---计算机网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strivenoend/article/details/84786490

 1.TCP三次握手过程、参数;(用到syn ack seqnumber acknumber)

  1. TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

    位码即tcp标志位,有6种标示:

  2. SYN(synchronous建立联机)

  3. ACK(acknowledgement 确认)

  4. PSH(push传送)

  5. FIN(finish结束)

  6. RST(reset重置)

  7. URG(urgent紧急)

  8. Sequence number(顺序号码) Acknowledge number(确认号码)

    第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;(2个信息 syn seq)

    第二次握手:主机B收到请求 后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包(4个信息 ack number ack syn seq)

    第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。(2个信息 ack ack number)

    完成三次握手,主机A与主机B开始传送数据。

  9. 实例:

    IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
    IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
    IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

    第一次握手:192.168.1.116发送位码syn=1,随机产生seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机;

    第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送ack number=3626544837,syn=1,ack=1,随机产生seq=1739326486的包;

    第三次握手:192.168.1.116收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,192.168.1.116会再发送ack number=1739326487,ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则连接建立成功。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

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

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。(忽略位,syn=seq)

2.TCP四次挥手过程、参数;(fin ack seqnumber acknumber)

  1. 位码即tcp标志位,有6种标示:

  2. SYN(synchronous建立联机)

  3. ACK(acknowledgement 确认)

  4. PSH(push传送)

  5. FIN(finish结束)

  6. RST(reset重置)

  7. URG(urgent紧急)

  8. tcp四次挥手,由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。

    由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

    (1)客户端A发送一个FIN,seq用来关闭客户A到服务器B的数据传送(报文段4)。(2个信息 FIN SEQ)

    (2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号seq加1(报文段5)。和SYN一样,一个FIN将占用一个序号。(2个信息 ack acknumber)

    (3)服务器B关闭与客户端A的连接,发送一个FIN,seq,ack acknumber=客户的seq+1给客户端A(报文段6)。(4个信息 fin seq)

    (4)客户端A发回ACK报文确认,并将确认序号设置为收到序号seq加1(报文段7)(两个信息 ack acknumber)

猜你喜欢

转载自blog.csdn.net/strivenoend/article/details/84786490