- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在网上研究端口,我发现它有很多不同的描述方式。主要方式是端口就像计算机上的一扇门,由特定进程使用。第二种通常解释的方式是,它只是一个标记,是特定进程在 IP 地址之上的额外标识符。
我难以理解的是,如果端口在某种程度上像门一样实际上是“物理的”。数据是否真的通过端口?如果是这样,那么是否可以通过同一个端口同时发送和接收数据?
如果端口更像是一个标签,那么通过防火墙“打开”端口是什么意思?
最后一个问题,发送进程发送数据需要端口吗?我知道它必须将数据发送到接收端的特定端口,并且必须指定其用于接收回数据的本地端口,但是当它进行实际发送时,是否需要使用端口(并且是它与它已经用于接收的端口相同)?
非常感谢任何帮助!
最佳答案
Researching about ports online, I have found it being described in many different ways. The main way is that a port is a like a door on your computer used by a specific process. A second way it is commonly explained is that it is just a tag, an extra identifier on top of the IP address for a specific process.
“门”的解释只是一个比喻。标签示例更准确。目标端口和源端口只是 TCP 和 UDP header 中的字段,用于区分一个 TCP/UDP 连接(IP 地址和端口的组合)与另一个连接。
What I'm having trouble understanding is that if ports are actually "physical" in some way like a door. Does data actually go through a port? If so, then can data both be sent and received through the same port simultaneously?
端口不是字面意义上的物理端口,但它是一种有助于理解的有用隐喻。
If a port is more like just a tag, then what does it mean to "open" ports through a firewall?
阻止特定端口的防火墙只是检查通过它的所有流量并检查 TCP/UDP 流量的目标和/或源端口。如果有规则阻止端口 80 上的所有传入连接,那么它将丢弃该流量,否则会将其转发到目的地。
Last question is, are ports needed to send data from the sending process? I understand that it has to send data to a specific port on the receiving end, and that it has to specify its local port used to receive data back, but when it does the actual sending, does it need to use a port (and is it the same as the port it already uses to receive)?
仅当您想通过 TCP 或 UDP 发送数据时才需要端口。例如,Web 服务器将套接字绑定(bind)到 IP 地址和端口(对于 HTTP,通常为 80)。它监听目标端口为 80 的传入连接。一旦建立连接(通常通过 TCP 握手),它将打开一个新的连接,监听不同的端口并告诉客户端现在连接到哪个端口。要回答您的问题,发送进程需要端口,以便接收方的内核知道将传入流量发送到哪里。它将(地址,端口)对与进程相关联。
关于sockets - 需要帮助澄清 TCP 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30623910/
在此链接中:http://www.sencha.com/blog/spotlight-ext-js-customers/ 请滚动到部分:为什么我们选择 Ext JS 有这一行: By using Ex
只是想确保我正确理解这一点(我会在 SO Chat 上问,但它已经死在那里了!): 我们有一个顶点数组,我们通过绑定(bind)它使其成为“当前” 然后我们有一个缓冲区,我们将其绑定(bind)到目标
我正在学习与 Java Swing 一起使用的类(class),但我遇到了障碍。在这个项目中,我们正在为不同的组件设置大小,但是,导师特意敲了一行我不太理解的代码,我只是在寻找这行代码概念的解释。 基
所以我尝试创建一个 HttpsRequest,效果非常好。问题是,我做错了什么,我认为这可能是因为我使用 HttpResponse,但我没有找到任何与 Https 类似的东西。有没有一种方法可以像 h
我正在阅读 Martin Fowler 的“UML distilled”,在阅读关联类的过程中,我得到了这句话: What benefit do you gain with the associati
我只是询问此说明: String[][] s = new String[2][2]; 如果我创建这个变量“s”,我会创建一个包含 2 行和 2 列的字符串表吗?或者 2 个表有 2 个元素?感谢您的澄
我目前正在做的事情需要为世界各地的用户提供本地化时间。所有日期时间都存储为 UTC,因此转换它们非常容易,并且我们有一个已知的、安全的引用点等等。 但是,关于如何表达偏移量的一些事情让我摸不着头脑。
我开始学习 spring,我遇到了一个定义,它说“Spring 使开发人员能够在没有应用程序服务器的情况下进行企业开发”。 这到底是什么意思,使用应用服务器进行企业开发有什么危害。 但是开发者在进行企
我是 AngularJS 的新手,对如何设置 angularJS 进行开发感到困惑。 Link1 link1 说我们需要 node.js 和一系列其他工具,这些工具必须在使用 AngularJS 之前
我是 iPhone 和 iPad 应用程序的开发者。 我的一个应用程序是在线个人财务管理工具的配套应用程序,该工具通过网站提供其服务和功能。这些功能的一部分将通过我正在创建的原生 iOS 应用程序提供
我正在研究飞行模拟器。我读过一篇关于四元数的教程(这个:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quater
抱歉,如果这是一个微不足道的问题: 实现 1: class Foo { protected: int bar; public: Foo(int bar) {
作为 C 中实现定义行为的示例。C 标准规定数据类型的大小是实现定义的。因此,假设 sizeof(int) 是实现定义的。 此实现定义的行为是否意味着 size(int) 依赖于平台或由编译器供应商定
从理论上讲,inline 函数在 C 语言中具有内部/静态链接,也就是说,它们仅在单个翻译单元内可见。因此,在两个单独的文件中定义的内联函数应该无法相互看到,并且两者都有自己的地址空间。 我正在尝试使
对于神童来说,这可能是一个非常基本的问题。但我对处理它有疑问。 在转换期间我们使用: int.Parse(someThing) Convert.ToInt32 或 Convert.ToString()
这个问题在这里已经有了答案: Regarding Android Permissions and Signature Protection level (2 个答案) 关闭 8 年前。 由于我是An
我有这个功能: 函数 Foo(){} 根据这张图片: >> Foo.prototype -> Foo {} 所以如果我写: Foo.prototype.constructor 现在 - 它引
我读了this article关于 Task.ConfigureAwait,它有助于防止异步代码中的死锁。 看看这段代码:(我知道我不应该做 .Result ,但这是问题的一部分) private v
我正在学习 C#。我可以将闭包理解为一种可以适应其定义环境中的变化的结构吗。 示例: List gurus = new List() {
这个问题在这里已经有了答案: Difference between volatile and synchronized in Java (4 个回答) 关闭6年前。 我对我读到的关于 volatile
我是一名优秀的程序员,十分优秀!