博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于tcp/ip三次握手的理解和详细分析
阅读量:7091 次
发布时间:2019-06-28

本文共 1111 字,大约阅读时间需要 3 分钟。

实例,通过http文件下载来分析tcp/ip三次握手的机制

在百度里面搜索QQ,进行下载,然后对数据包流程进行分析

抓包数据如下,

三次握手过程分析

(此处为描述方便,将A=192.168.0.152,B=61.158.251.62)

三次握手流程原理

 
  1. 1. (A) –> [SYN] –> (B) 
  2. 客户机A和服务器B通讯. 当A要和B通信时,A首先向B发一个SYN (Synchronize) 标记的包,告诉B请求建立连接. 
  3. 注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认识到这点很重要,只有当B受到A发来的SYN包,才可建立连接,除此之外别无他法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不能让外部任何主机主动建立连接。 
  4.  
  5. 2. (B) <– [SYN/ACK] <–(A) 
  6. 接着,B收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作. 
  7. 注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包. 
  8.  
  9. 3. (A) –> [ACK] –> (B) 
  10. A收到SYN/ACK 包,A发一个确认包(ACK),通知B连接已建立。至此,三次握手完成,一个TCP连接完成 
  11. Note: ACK包就是仅ACK 标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包都会设置ACK位 

三次握手数据包建立过程

 

 
  1. 1:A向B发起连接请求,以一个随机数初始化A的seq,这里为2439693833,此时ACK=0 
  2. 2:B收到A的连接请求后,也以一个随机数初始化B的seq,这里为1107428100,
  3. 意思是:你的请求我已收到,我这方的数据流就从这个数开始。B的ACK是A的seq加1,
  4. 即2439693833 + 1 = 2439693834 
  5. 3:A收到B的回复后,它的seq是A的上一个seq+1,即 2439693833+1=2439693834,同时也是B的ack序列号,即2439693834
  6. 意思也是:B的回复A收到了,A这方的数据流就从这个数开始。A此时的ACK是B的seq加1,
  7. 即1107428100+1=1107428101 
下面对各数据包进行详细分析

seq为2439693833,此时的ack为0

 ack的标示为1的tcp包

 

 

至此,三次握手建立完毕。

下面开始tcp数据传输了

 http协议中的GET请求

 

 

 

 http协议中的200代码,标示建立成功

tcp数据传输第二阶段

 

 以上为简单的协议分析,如有谬误,请多多指教

感谢杭州 -Daemon

 

已经修改为正确的了,谢谢指正!

转载地址:http://ypyql.baihongyu.com/

你可能感兴趣的文章
天龙光电毛利率异常 数千万元预收不知从何而来
查看>>
双态IT时代,你需要什么样的IT咨询服务?
查看>>
iOS9.3激活失败 疑似激活服务器被挤爆
查看>>
最低调的恶意软件之Dimnie瞄准GitHub开发人员
查看>>
运营商发展大数据的四大误区
查看>>
Facebook新的图搜索?效果不是很理想
查看>>
Google公司致力发展企业云市场
查看>>
日媒称黑客组织瞄上中企:目标企业被迫停牌3年
查看>>
Fortinet实验室提醒用户注意Office高危漏洞
查看>>
10年后全球智慧城市市场规模将达到3.5万亿美元
查看>>
雅虎高管解读财报 将在今年完成阿里资产剥离
查看>>
大数据时代安全难题:个人信息保护立法紧迫
查看>>
国家发改委:资金支持大数据重大建设项目
查看>>
青海省公安厅部署科达至臻高清视频会议系统
查看>>
最新的swoole视频上线
查看>>
说一下你的思考过程 Tell me what you think(编程测试)
查看>>
勒索病毒后的反思:开放的NFV/SDN安全吗?
查看>>
Appium滑动问题研究
查看>>
美国国家情报总监个人邮箱被黑
查看>>
[Maven + Gem]为大型企业打造自动化测试工具
查看>>