【计算机网络】-TCP的连接建立

TCP的连接建立又称为三次握手,谢希仁版教材中成为三报文握手,即客户端进程与服务器端进程通过三次报文的传输建立了TCP连接。

首先TCP首部为:

连接流程:

注意:

序号:自己发送的报文段的数据的第一个位置序号。

确认号:期望收到对方下一个报文段的第一个数据字节的序号。

确认ACK:仅当ACK=1的时候确认号字段才有效,规定建立连接后所有的报文段的ACK=1。

同步SYN: 在建立连接时用来同步信号,若SYN=1,ACK=0,表示这是一个连接请求报文段;若SYN=1,ACK=1,表示这是一个同意连接报文段。

1

首先,客户端A进程与服务器端B进程都处于关闭(CLOSED)状态。然后A主动打开连接,B被动打开连接。

2

一开始,B进程创建传输控制块TCB,并进入LISTEN收听状态,等待客户端的连接请求。

3

与此同时,客户端A进程也创建进程控制块TCB。当想和B建立TCP连接时,向B发送连接请求报文段,此报文段首部中的同步位SYN=1,并且设置一个初始序号seq=x,并且此报文段不携带数据,并且消耗一个序号,即这个序号代表连接请求,并不代表数据的位置。此时客户端A进程进入同步已发送状态(SYN-SENT),即此时A还不能确定此时自己发送能力是否完善,一点也不确定自己收听能力是否完善。

4

B收到A的连接请求报文段时,如果同意连接,则向A发送一个同意连接报文段,此报文段中SYN和ACK位置1,并且确认号ack=x+1,并且初始化自己的初始序号为y。并且此报文段不携带数据,并且消耗一个序号,即这个序号代表同意连接,并不代表数据的位置。此时服务器端B进程进入同步收到(SYN-RECV)状态。即此时A不能确定此时自己和B的发送能力是否完善,也不确定自己和B收听能力是否完善,但是B知道A的发送能力和自己的接受能力没问题,但是不能确定A的接收能力和自己的发送能力怎么样。

5

当客户端A进程收到B的同意连接报文段后,此时A已经知道自己的发送和接受能力都没问题了,也知道B的发送和接收能力也都没问题了,但是B还不知道这个情况,所以还要向B发送一个确认报文段。此报文段中ACK置1,确认号ack=y+1,同时自己的序号seq=x+1(确认报文段可以带数据,也可以不带数据,如果不带数据,则下次发送的数据报文段的序号也为x+1)。发送后便将自己变成ESTABLISHED(建立连接)状态。

6

当B收到A的确认报文段后,知道双方的发送和接收能力都没问题了,所以可以愉快的发送消息了,便将自己也置为ESTABLISHED(建立连接)状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值