专栏首页howtouselinuxtcp是如何建立连接的

tcp是如何建立连接的

This post describes how to see TCP connection establishment and termination as packets using tcpdump on linux.

Preparing

Install following commands on your linux.

  • tcpdump
  • nc
  • telnet
  • netstat

See TCP connection establishment

1. start TCP server

Start TCP server using nc command with l,k option.

$ nc -lk 12345

Open a Listening port on Linux

Open another terminal and verify 12345 port is listening using netstat command.

$ netstat -anp | grep 12345

tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN <PID>/nc

2. start TCP client and establish connection

Start TCP client using telnet to establish TCP connection with TCP server of step 1.

$ telnet 127.0.0.1 12345

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

Open another terminal and verify nc process and telnet are establishing connection using netstat command.

5 ways to Check a remote port is open in Linux

$ netstat -anp | grep 12345

tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN <PID>/nc

tcp 0 0 127.0.0.1:<port> 127.0.0.1:12345 ESTABLISHED <PID>/telnet

tcp 0 0 127.0.0.1:12345 127.0.0.1:<port> ESTABLISHED <PID>/nc

Terminate TCP client with type "Ctrl+[" and "quit" on telnet. Then Connection is close.

$ telnet 127.0.0.1 12345

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

^]

telnet> quit

Connection closed.

$

It's ready to see TCP connection establishment with tcpdump.

3. See TCP 3-Way Handshake as TCP connection establishment

Verify TCP server that start at step 1 listen 12345 port.

$ netstat -anp | grep 12345

tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN <PID>/nc

Perform tcpdump with specify local interface and port 12345 as follows.

$ sudo tcpdump -i lo -nnn port 12345

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes

Start TCP client using telnet to establish TCP connection with TCP server of step 1.

$ telnet 127.0.0.1 12345

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

Tcpdump: Filter Packets By Port

Verify tcpdump output as follows.

HH:mm:ss.SSSSSS IP 127.0.0.1.<port> > 127.0.0.1.12345: Flags S, seq ...

HH:mm:ss.SSSSSS IP 127.0.0.1.12345 > 127.0.0.1.<port>: Flags S., seq ...

HH:mm:ss.SSSSSS IP 127.0.0.1.<port> > 127.0.0.1.12345: Flags ., ack ...

The format is as follows

timestamp IP source IP.port destination > IP.port: flags

First line means a SYN packet as "S" flag that telnet sent to TCP server.

Second line means SYN + ACK packet as "S." flag that TCP server sent to telnet.

Third line means ACK packet as "." flag that TCP server sent to telnet.

Exploring Tcpdump Filters with Examples

Understanding TCP Socket With Examples

See TCP connection termination

Open another terminal and verify nc process and telnet are establishing connection using netstat command.

$ netstat -anp | grep 12345

tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN <PID>/nc

tcp 0 0 127.0.0.1:<port> 127.0.0.1:12345 ESTABLISHED <PID>/telnet

tcp 0 0 127.0.0.1:12345 127.0.0.1:<port> ESTABLISHED <PID>/nc

3. See terminate TCP connection establishment

Keep tcpdump, and terminate TCP client with type "Ctrl+[" and "quit" on telnet. Then Connection is close.

$ telnet 127.0.0.1 12345

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

^]

telnet> quit

Connection closed.

$

Verify tcpdump output as follows.

Understanding TCP Flags SYN ACK RST FIN URG PSH

HH:mm:ss.SSSSSS IP 127.0.0.1.<port> > 127.0.0.1.12345: Flags F., seq 1,

HH:mm:ss.SSSSSS IP 127.0.0.1.12345 > 127.0.0.1.<port>: Flags F., seq 1,

HH:mm:ss.SSSSSS IP 127.0.0.1.<port> > 127.0.0.1.12345: Flags ., ack 2,

First line means a FIN packet as "F" flag that telnet sent to TCP server.

Second line means FIN + ACK packet as "F." flag that TCP server sent to telnet.

Third line means ACK packet as "." flag that TCP server sent to telnet.

Tcpdump: Filter Packets with Tcp Flags

Understanding TCP Connection with Examples

Understanding TCP Sequence Number with Examples

原文链接:https://www.howtouselinux.com/post/tcp-connection

相关文章

  • TCP连接是如何建立和终止的?

    服务器在客户端建立连接时刚好断电。可以看出客户端进行了重试,但是重试之间的时间间隔第一次是5.81秒,而第二次间隔是24.00秒。

    爬蜥
  • nodejs TCP server和TCP client如何建立连接

    首先客户端和服务器端通信得需要一个消息结构,我用如下的构造函数创建一个消息结构,包含消息正文和消息类型(method):

    Jerry Wang
  • HTTP和HTTPS连接是如何建立的?

    HTTPS指的是超文本传输安全协议。HTTPS是在HTTP的基础上和ssl/tls证书结合起来的一种协议,保证了传输过程中的安全性,减少了被恶意劫持的可能.很好...

    IT大咖说
  • Tcp连接建立与连接释放

    1)客户端给服务器发送了一条将其SYN标志位置1的请求连接建立报文,然后其状态由closed转变为SYN-SENT(同步已发送)。

    你的益达
  • TCP连接建立和释放

    TCP 是面向连接的,保证高可靠连性(数据无丢失,数据不错位,数据不乱序,数据无重复)的传输协议。

    王小明_HIT
  • nodejs是如何处理tcp连接的

    前几天和一个小伙伴交流了一下nodejs中epoll和处理请求的一些知识,今天简单来聊一下nodejs处理请求的逻辑。我们从listen函数开始。

    theanarkh
  • WebRTC是如何建立链接的

    A和B进行通信,要是双方都在同一个网段内,那么最高效的通信方式就是双方通过内网进行连接,要想让双方进行内网链接,首先需要解决的就是如何让A和B知道对方是在同一个...

    码农帮派
  • 精品:TCP连接的建立和终止

    TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。

    看、未来
  • 网络协议&建立TCP连接 原

    OSI/RM模型(Open System Interconnection/Reference Model)将计算机网络体系结构的通信协议划分为七层,自下而上依次...

    阿dai学长
  • TCP建立连接之三次握手

    ISN:初始序号,随时间变化,每一个连接具有不同的ISN,防止在网络延迟中分组被重新发送。

    WindWant
  • TCP连接建立、断开过程详解

    TCP连接建立过程需要经过三次握,断开过程需要经过四次挥手,为什么? 有没有其他的连接建立、断开方式?

    coderhuo
  • 如何与宜家IKEA建立EDI连接?

    宜家IKEA是来自瑞典的全球知名家具和家居零售商,在全球拥有223个商场,其中有36家商场位于中国大陆。如今宜家在全球53个国家有大约1300个供应商,在16个...

    知行软件EDI
  • 【网络协议】TCP连接的建立和释放

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/29382883

    bear_fish
  • 网络编程-从TCP连接的建立说起

    网络编程几乎是每一门编程语言都会涉及的内容,虽然各种语言调用的方式可能不一样,但它们背后的原理支持都是一样的。因此本文将从TCP的连接的建立说起。在此之前,假设...

    编程珠玑
  • 为什么 TCP 建立连接是三次握手,关闭连接确是四次挥手呢?

    我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据...

    Criss@陈磊
  • 为什么 TCP 建立连接是三次握手,关闭连接确是四次挥手呢?

    我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据...

    Java技术栈
  • 为什么 TCP 建立连接是三次握手,关闭连接确是四次挥手呢?

    https://blog.csdn.net/qzcsu/article/details/72861891

    一个优秀的废人
  • 浅谈TCP协议(建立与断开连接)

    TCP是面向连接的,可靠的进程到进程通信的协议。 TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存,用来临时存储数据。 TCP将若干个...

    小手冰凉
  • tcp如何维护长连接

    上次提到tcp数据流无边界特点 还有一个特点那就是 TCP有长连接和短连接之分 目录结构: ? tcp连接的终止 — 01 — socke正常关闭 流程:...

    程序员小王

扫码关注云+社区

领取腾讯云代金券