TCP篇 001大白话讲三次握手

首先我们要理解数据报文结构

【以太网报文【IP报文【tcp报文【HTTP+报文】】】】

其中以太网报文称为帧:通过网络路径中的最短MTU确定最大传递大小


1 tcp封装了HTTP报文
2 tcp/ip的设计一份完整的数据报可能会被切割成多个tcp数据报
3 tcp数据报组成 报文头+报文体

tcp的三次握手四次挥手离不开tcp的可靠性和双通道的设计思想,而实现其设计思考所依赖的就是tcp协议中tcp的报文头

再来看tcp报文结构以及tcp连接关闭过程


以javasocket为例建立socket时[ISN 初始化序列号与系统时间密切相关]

下图第四行SYN会设置为1 32位序列号会初始化一个值ISN【可以简单理解一个0-2^32-1 次方值,超过最大值会返回到0】

1 SYN为1即告诉服务端我要建立连接 

2 服务端处理后发给客户端SYN建立反向的通道,ACK同意正向通道连接建立【建立通道也就是SYN为1,同意该通道也就是ACK为1 】

3 客户端发出ACK 以及确认序列号确定反向连接建立 

 四次挥手也是tcp可靠性设计以及TCP全双工半关闭的特性【MSS此时不出现,MSS只属于SYN连接报文】

1 一端发起关闭请求 FIN设置为1 
2 另一端发起Ack 此时关闭一个连接
3 另一端发起关闭请求 FIN设置为1 
4 一端发起Ack 此时关闭另一个连接

同时SYN和ACK只是说明怎么要建立双向通道,如何保证可靠性?服务端拿到ISN后,会设置确认序号为ISN+1[为什么是加1,因为SYN标志占了一个;假如传输data占用10比特 ,那么确认序号就是ISN+10(打比方,实际还有其他)] 通过序列号和确认序列号来决定TCP数据的拼接,重发等!

 

 

 

相关含义以及概念:

1 tcp 报头的设计说明一般情况下TCP报头的大小在20个字节

2 URG:Urget pointer is valid (紧急指针字段值有效)【不常用】

 SYN: 表示建立连接 FIN: 表示关闭连接 ACK: 表示响应 PSH: 表示有 DATA数据传输 RST: 表示连接重置。

3 tcp报头首部的窗口大小16位决定了最大只有2^16次方的数据也就是65535个字节可以传递;此外这只是滑动窗口且默认值一般是4096字节,还没有涉及阻塞接口 而MSS只出现在syn报文段 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值