阿里云双十一优惠活动,点击链接进行购买: 一年仅需89元即可以购买服务器~。我个人服务器为2核4G配置,也更加推荐购买 2核4G三年799元 配置的服务器。
你可以跟着我的笔记 当我有一台服务器时,我做了什么 来开始维护服务器并搭建应用,将引导你使用 docker 和 k8s 搭建一个自己的服务器开发集群。

# 建立一个 TCP 连接

我们已经通过 DNS 解析到了 IP 地址

  • shanyue.tech: 178.128.123.58
  • shici.xiange.tech: 59.110.216.155,我在阿里云的服务器

在本地(客户端)查看建立好的连接:

# 打印头部信息
$ netstat -tan | sed -n 2p
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)

$ netstat -tan | grep 59.110
tcp4       0      0  172.16.12.207.49239    59.110.216.155.443     ESTABLISHED

在云主机上(服务端)查看建立好的连接:

$ netstat -tan | grep 124.200
  • 建立连接的过程是什么
  • 如何监控连接的状态变化

# 报文

TCP 报文字段

  • TCP 关注于端口,而 IP 寻址由 IP 层完成
  • 报文长度是 20 Byte+

# socket

当解析到 IP 地址后,客户端与服务器端建立一个 TCP 连接。TCP Client 与 TCP Server 建立连接的过程如下

TCP 连接过程

# 三次握手与四次挥手

当我们访问 shici.xiange.tech 时,服务器已经处于 accept 状态等待,而客户端一般会以三次握手主动开始进行连接,四次挥手主动关闭连接。

TCP 三次握手与四次挥手

# TCP 连接状态装换图

TCP 连接状态

当然最常见的状态还是以下几种

  • LISTEN
  • ESTABLISEHED

# 更多问题

  • TCP 为什么是可靠的连接
  • 为什么刚好是三次握手
  • TCP 如何进行拥塞控制
  • 一个主机中 TCP 连接的上限是多少
  • 如何查看某个服务的TCP连接数
  • 如何查看 mysql/postgres 的TCP连接数
  • 如何判断某个端口号是TCP连接还是UDP连接
  • 我们如何找到某个端口号上跑的进程
Last Updated: 11/15/2019, 11:42:20 AM