网络通讯笔记之两台设备通过tcp通讯,都需要知道对方的ip和端口号吗?

网络通讯笔记之两台设备通过tcp通讯,都需要知道对方的ip和端口号吗?

code review!

不需要 。在标准的 TCP 通讯中,只有一方(主动发起连接的一方)需要预先知道另一方(被动等待连接的一方)的 IP 地址和端口号

TCP 通讯通常采用客户端/服务端(Client/Server)模型,这两者的角色和对地址信息的需求是完全不同的。

  1. 客户端(Client - 主动方)
  • 必须预先知道对方信息:客户端需要主动向服务端发送建立连接的请求(TCP 三次握手)。如果没有服务端的明确 IP 和端口,请求就无处投递。
  • 自己的信息:客户端通常不需要手动指定自己的端口号。在发起连接时,客户端的操作系统会自动在后台分配一个空闲的、随机的端口(称为"临时端口"或 Ephemeral Port)。
  1. 服务端(Server - 被动方)
  • 必须公开自己的信息:服务端需要在本地绑定(Bind)一个固定的端口,并在该端口上持续监听(Listen),让别人能够找到它。
  • 不需要预先知道客户端的信息 :当客户端的数据包(SYN 包)到达服务端时,TCP 网络协议的"数据包头部"会自动携带客户端的源 IP 地址源端口号。服务端收到数据包后,直接像看"来电显示"一样提取出这些信息,然后利用它们将响应数据准确地发回给客户端。
  1. 生活中的比喻:
    这就好比(客户端)打电话给一家披萨店(服务端)订餐:
  • 必须预先知道披萨店的电话号码(服务端的 IP 和端口),否则无法拨号。
  • 披萨店不需要提前知道电话号码。当电话打通时,披萨店的座机上会显示来电号码(数据包中自带的源 IP 和源端口)。即使中途挂断,披萨店也能根据这个来电号码把电话回拨给。
  1. 总结来说
    服务端只负责"开门迎客"(暴露 IP:端口并监听),客户端负责"敲门"(主动连接) 。这就是 TCP 最经典、最简单、最常用的方式。

    两台设备进行 TCP 通讯前,必须先确定好谁做服务端(负责监听),谁做客户端(负责连接)。只有客户端需要提前知道服务端的 IP 和端口。

    在标准的 TCP 客户端-服务器模型下,只需服务端暴露自己的 IP 和端口,客户端主动来连接就可以了。服务端不需要事先知道任何客户端的 IP 或端口。

  2. 实际中需要注意的几点:

  • 公网环境:如果服务端在公网,客户端能直接连;如果服务端在内网(家里/公司),需要端口映射(路由器 NAT)或使用公网穿透工具(如 frp、ngrok、ZeroTier)。
  • 防火墙:服务端必须把该端口放行(Windows 防火墙、Linux ufw/firewalld、云服务器安全组)。
  • IP 变化:动态 IP 的话,建议用域名(DDNS)而不是裸 IP。
  • 安全:生产环境推荐加 TLS(wss)、认证、限 IP 等,不要直接裸 TCP 暴露。
相关推荐
2401_8734794037 分钟前
爬虫IP怎么防?IP离线库四层识别+日志留存,反爬留证两不误
爬虫·网络协议·tcp/ip·ip
乐橙开放平台1 小时前
明厨亮灶笔记:乐橙轻应用 H5 + 小程序插件,一套 BFF 出两张播放凭证
人工智能·笔记·物联网·小程序·音视频·notepad++
超级赛博搬砖工2 小时前
什么是移动代理IP?与住宅IP有何区别?
网络·网络协议·tcp/ip
左左右右左右摇晃2 小时前
手写Tomcat原理整理
java·开发语言·笔记·tomcat
Tizzgod2 小时前
W55MH32 开箱分享 — 一块板子同时连俩TCP服务器
服务器·网络协议·tcp/ip
.Hypocritical.2 小时前
Maven笔记——2
java·笔记·maven
乐橙开放平台3 小时前
养殖 SaaS 笔记:乐橙 IoT 物模型管环境,视频 OpenAPI 管回看
数据库·笔记·物联网·mysql·音视频
love530love11 小时前
【笔记】AutoClaw NSIS 安装器卡死、进程杀不掉、目录删不了?我是这么解决的
人工智能·windows·笔记·agent
谙弆悕博士14 小时前
系统集成项目管理工程师教程(第3版)笔记——第2章:信息技术发展
笔记·计算机网络·信息安全·学习方法·业界资讯·软考·系统分析师