TCP三次握手简析
来源:互联网 发布:.us域名查询 编辑:程序博客网 时间:2024/06/04 23:31
tcp三次握手简介
tcp握手需要用到标识位里面的两种标识:SYN和ACK,以及报文中的seq序列号和ack确认号;
上面的ack确认号和ACK标识位是不同两种数据,下面小写的ack代表ack确认号,大写的ACK代表ACK标识位;
简单流程如下:
1. client随机产生一个seq数字,发送SYN请求到server;
2. server收到SYN请求,将ack置为收到的seq+1,并且随机产生一个seq,响应SYN+ACK;
3. client收到SYN+ACK请求,验证收到的ack是否为发出去的seq序列号+1,将ack置为收到的seq+1,响应ACK;
握手完成,开始传输数据;
tcpdump报文分析
下面是一段通过tcpdump命令监控到的tcp三次握手的报文;
# tcpdump -i eth1 -XSnnvv host 111.111.111.111 and port 80tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes18:55:12.923498 IP (tos 0x14, ttl 53, id 31105, offset 0, flags [DF], proto TCP (6), length 64) 111.111.111.111.50217 > 222.222.222.222.80: Flags [S], cksum 0x80e2 (correct), seq 277050658, win 65535, options [mss 1440,nop,wscale 5,nop,nop,TS val 784552069 ecr 0,sackOK,eol], length 0 0x0000: 4514 0040 7981 4000 3506 df5b b781 a72c E..@y.@.5..[..., 0x0010: 7929 14f0 c429 0050 1083 7522 0000 0000 y)...).P..u".... 0x0020: b002 ffff 80e2 0000 0204 05a0 0103 0305 ................ 0x0030: 0101 080a 2ec3 5085 0000 0000 0402 0000 ......P.........18:55:12.923538 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60) 222.222.222.222.80 > 111.111.111.111.50217: Flags [S.], cksum 0x2a16 (correct), seq 1517913223, ack 277050659, win 14480, options [mss 1460,sackOK,TS val 1268712571 ecr 784552069,nop,wscale 6], length 0 0x0000: 4500 003c 0000 4000 4006 4df5 7929 14f0 E..<..@.@.M.y).. 0x0010: b781 a72c 0050 c429 5a79 8487 1083 7523 ...,.P.)Zy....u# 0x0020: a012 3890 2a16 0000 0204 05b4 0402 080a ..8.*........... 0x0030: 4b9f 047b 2ec3 5085 0103 0306 K..{..P.....18:55:12.936229 IP (tos 0x14, ttl 53, id 57168, offset 0, flags [DF], proto TCP (6), length 52) 111.111.111.111.50217 > 222.222.222.222.80: Flags [.], cksum 0x815d (correct), seq 277050659, ack 1517913224, win 4105, options [nop,nop,TS val 784552080 ecr 1268712571], length 0 0x0000: 4514 0034 df50 4000 3506 7998 b781 a72c E..4.P@.5.y...., 0x0010: 7929 14f0 c429 0050 1083 7523 5a79 8488 y)...).P..u#Zy.. 0x0020: 8010 1009 815d 0000 0101 080a 2ec3 5090 .....]........P. 0x0030: 4b9f 047b K..{......
SYN:
黄色:数据包来源ip端口和目标ip端口;
红色:标识位 [S] = SYN;
蓝色:seq序列号,以及seq在16进制数据包中的位置;0x 1083 7522 = 277050658;
SYN+ACK:
黄色:数据包来源ip端口和目标ip端口;
红色:标识位 [S.] = SYN+ACK;
蓝色:seq序列号,以及seq在16进制数据包中的位置;随机产生:1517913223;
绿色:ack确认号,以及ack在16进制数据包中的位置;为SYN请求的 seq+1 = 277050658 + 1 = 277050659;
ACK:
黄色:数据包来源ip端口和目标ip端口;
红色:标识位 [.] = ACK;
蓝色:seq序列号,以及seq在16进制数据包中的位置;为SYN+ACK中的 ack = 277050659;
绿色:ack确认号,以及ack在16进制数据包中的位置;为SYN+ACK中的 seq+1 = 1517913223 + 1 = 1517913224;
wireshark的报文更加详细,可以更方便分析检测;
- TCP三次握手简析
- TCP:三次握手/四次握手
- TCP三次握手/四次握手
- TCP三次握手,四次握手
- tcp 三次握手 四次握手
- TCP三次握手,四次握手
- TCP三次握手四次握手
- TCP三次握手
- TCP三次握手协议
- TCP的三次握手
- TCP三次握手
- TCP三次握手
- TCP 三次握手协议
- TCP/IP三次握手
- TCP 三次握手
- TCP三次握手
- tcp连接三次握手
- TCP三次握手
- Eclipse安装svn插件的几种方式
- cf873B-Balanced Substring(前缀和)
- Java中@Override的作用
- 多标签分类及其 caffe 实现总结
- 移动零-LintCode
- TCP三次握手简析
- [2017纪中11-2]字典序 拓扑排序+优先队列
- Paper list of Imbalanced Time-series Classification with Deep Learning
- OpenCv中的cv::Mat::create()函数,cvRound(),cvFloor(),cvCeil()函数的详解l
- getch()和getchar()之再讨论
- Unix/Linux下的open函数(O_CREAT和O_EXCL)
- sql执行顺序
- adb常用命令
- springmvc 中自定义拦截器