首页 > 代码库 > wireshark 三次握手

wireshark 三次握手

wireshark 三次握手简介

192.168.18.120 IP地址为我的本机虚拟机IP地址

过滤设置:ip.addr == 192.168.18.120 (ip.addr == 192.168.18.120 显示所有目标或源地址是192.168.18.120的数据包)

技术分享

第一次握手

技术分享

第二次握手 

技术分享

第三次握手 

技术分享

观察其中红色方框内的3条数据包就是一次TCP建立连接的过程

[1]客户端首先向服务器发一个数据包syn位置1,5774->80,嘿,哥们儿,您我想访问你的web资源,能不能把你的80端口打开, 【73--->120】

[2]服务器向客户端返回一个数据包syn位置1,ack位置1,80->5774,可以啊,我已经把80端口打开了,但是为了保证待会儿可靠传输,你也把你的5774端口打开呗,【120--->73】

[3]最后,客户端会再向服务器端发送一个数据包ack位置1,5774->80,没问题我也把的5774端口打开了,好的到此一次TCP连接就此建立,【73--->120】

 

 开始测试,以下为抓取的数据包

技术分享

请求数据分析

技术分享

服务器响应结果分析

技术分享

以上这个什么啥意思?

技术分享

 

 

 

 

 

 

短连接测试代码

    #  test_redis_long
    location /test_redis_short {
        default_type text/html;
        content_by_lua_file "/mnt/hgfs/Linux-Share/Lua/lua_project_v0.01/application/redis/test_short.lua";
    }
test_short.lua
--[[-----------------------------------------------------------------------
* |  Copyright (C) Shaobo Wan (Tinywan)
* |  Github: https://github.com/Tinywan
* |  Author: Tinywan
* |  Date: 2017/5/8 16:25
* |  Mail: Overcome.wan@Gmail.com
* |------------------------------------------------------------------------
* |  version: 1.0
* |  description: redis 短连接测试
* |------------------------------------------------------------------------
--]]
local redis = require "resty.redis"
local red = redis:new()

local ok, err = red:connect("127.0.0.1", 63700)
if not ok then
    ngx.say("failed to connect: ", err)
    return
end

local res, err = red:auth("tinywan123456")
if not res then
    ngx.say("failed to authenticate: ", err)
    return
end

ok, err = red:set("redis_test_short", "redis_test_short"..ngx.time())
if not ok then
    ngx.say("failed to set dog: ", err)
    return
end

ngx.say("Tinywan redis_test_short set result: ", ok)

local res, err = red:get("redis_test_short")
if not res then
    ngx.say("failed to get dog: ", err)
    return
end

if res == ngx.null then
    ngx.say("dog not found.")
    return
end

ngx.say("redis_test_short result: ", res)

 

wireshark 三次握手