TCP细节探究:TCP连接建立

 

目前大多数的C/S架构的系统,各组件之间的通信方式都基本采用TCP协议,主要是因为TCP协议是一种稳定,可靠的传输协议,但对于TCP协议细节却并不一定被大多数人所熟知。

故本文介绍在TCP的一些细节,供大家讨论了解

一:TCP连接建立

TCP协议传输可靠性最大的理由就是对每一个传输的字节进行编码,如果接收方收到的字节序号序列中出现了丢失,发送方就会将丢失的字节序号重发,以此来保证传输的可靠。

为支持以上机制,发送双方在建立TCP连接的时候需要通知初始序列号,具体的通知步聚是:

1:客户端发送一个SYN段至服务器端, 该SYN段包含请求端的初始序号

2:服务器端对客户端的SYN段进行确认,同时,为了减少网络流量,在该ACK确认报文段中,附带服务端的初始序号

3:客户端对服务器的SYN段进行确认。

以上就是常说的三次握手协议。

其中值得注意的是TCP报文格式中序号为32位的无符号整型,一般情况下初始序号为0,当其值增长到2^32-1时,又重置为0

并且一个ack确认报不会消耗一个报文序号。

现在来看一下通过抓取工具观察到的三次握手协议,如下图1所示

图1

上图中No. 9284是客户端发往服务器的SYN报文段,可以看到其初始序号为0, 窗口大小为8912, 报文长度为Len=0, MSS最大报文大小为1460.

No.9288是服务器发往客户端的SYN报文段,可以看到其初始序号为0, 窗口大小为8912, 报文长度为Len=0, MSS最大报文大小为1460.

窗口大小报告本端的接收缓存区大小,用于控制本端数据接收大小,另一个是拥塞窗口大小则是表来控制发送方的数据发送速度。

No.9289则为客户端发往服务器端的ack报文。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值