通过三次握手,观察TCP连接的建立

本文通过实验详细解析TCP连接的三次握手过程,包括如何通过SSH登录服务器、使用tcpdump观察通信、理解SYN、SYN/ACK、ACK分组的交互。同时探讨了报文封装、MSS选项、窗口大小的重要性以及复位分组在连接异常时的作用。
摘要由CSDN通过智能技术生成

TCP 是面向连接的传输协议,因此通信双方必须先建立连接,才能传输数据。

上一小节,我们已经初步学习了 TCP 三次握手建立连接的主要步骤,但有不少细节还来不及展开。现在我们再接再厉,先通过一个实验来观察三次握手的过程,进而深入研究其中的细节。

观察三次握手过程

如下图,局域网中有一台服务器,IP 地址是 10.0.0.2 ,其他主机可以通过 SSH 协议来登录服务器:

图片

SSH 是 secure shell 的缩写,这是一种加密的应用层协议,常用于 远程登录 。

SSH 服务通过 TCP 协议来通信,默认端口为 22 。其他主机想要登录服务器,需要先建立到服务器 22 端口的 TCP 连接。接下来,我们就从 10.0.0.3 上来连接服务器 10.0.0.2 的 22 端口,观察 TCP 连接的建立过程。

执行下面这个命令,即可启动我们的实验环境,进入客户机 10.0.0.3 :

docker run --name switch-lab --rm -it --privileged --cap-add=NET_ADMIN --cap-add=SYS_ADMIN -v /data -v /tmp:/tmp-data -h switch fasionchan/netbox:0.7 bash /script/tcp-lab.sh

为了方便操作,我在客户机中准备了两个窗口,环境启动后就可以看到。

我们先在客户机上执行 tcpdump 命令,嗅探 eth0 网卡上的网络流量,以便观察 TCP 的通信过程,:

root@client [ ~ ]  ➜ tcpdump -ni eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

准备完毕后,我们切到另一个窗口来连接服务器。

如何在不同窗口间进行切换呢? 下面一起来复习 tmux 窗口切换操作:

  1. 按下 tmux 功能键 Ctrl-B ;

  2. 再按下 Q ,这时每个窗口会出现一个数字;

  3. 按下窗口上的数字,即可切到对应的窗口;

我们执行 telnet 命令,连接到服务器 10.0.0.2 的 22 端口:

root@client [ ~ ]  ➜ telnet 10.0.0.2 22
Trying 10.0.0.2...
Connected to 10.0.0.2.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3

SSH 远程登录本来应该执行 ssh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值