网络通信过程中,建立连接的本质是什么

网络通信建立连接的本质:告知彼此的第一个发送字节的初始序列号,建立连接后对每一个发送的字节都需要以初始序列号原点进行编号,需要对方来确认每一个字节编号都已经成功接收,此乃建立连接的本质。

以大家都耳熟能详的TCP来举例,但是先强调一点,TCP 有两个状态位比较特殊,一个是SYN,一个是FIN,他们各占一个字节

A(初始序列号为0)--------TCP 连接--------(初始序列号为0)B

双方初始序列号是由OS动态生成的,随机的值一般每个TCP session都会有不一样的初始序列号,占四个字节,为了便于描述,假定通信双方的初始序列号都为0,A先发1000字节的数据给B,发送成功之后释放连接。

Step 1: A 发送TCP SYN 给B

Step 2: B 发送TCP SYN + ACK给A

Step 3: A发送ACK给B

完成建立连接,由于SYN占用一个字节,而ACK不占用字节,其实三次握手的本质是对SYN这个编号为0,占用一个字节的数据的双向确认,此过程完成,彼此的真正数据的交换的编号为1,1。

Step 4: A 发送1000字节给B,第一个字节的编号为1,最后一个字节编号为1000

Step 5: B发送一个包含ACK的确认号1001,意思是1001这个编号前的数据已经成功接收,如果还有数据要发送,请使用编号1001。

A主动发起释放连接

Step 6: A发送包含FIN的单向释放连接,编号1001

Step 7: B确认此释放连接请求,ACK 1002

B发起单向释放连接

Step 8: B发送包含FIN的单向释放连接,编号1

Step 9: A确认此释放连接请求,ACK 2,意思是FIN已经成功接收,连接可以释放。

另外,TCP建立连接还会有MSS,Window Size,Scaling window ,SACK,SNACK,Security Authentication option等参数的协商,但是这些参数只是为了提高传输效率、增加TCP连接的安全性,避免没有安全保护的TCP遭到第三方的伪造TCP Reset 攻击。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值