端口号和协议号有什么区别?

26

端口号和协议号之间有什么区别?

10个回答

70

您可以将端口视为电话分机,计算机的IP地址就像是电话号码。您可以拨打该号码(IP地址)与计算机通话,然后拨打分机号(端口)与特定应用程序通话。应用程序需要在端口上侦听以进行通信。

协议只是两个通讯双方约定使用的语言。如果您的应用程序向我的应用程序发送字节流,则我的应用程序需要知道如何解释这些字节。


2
我喜欢电话分机的比喻,我敢打赌这是很常见的,但我之前从未听说过。 - MahlerFive
1
我在大学时读过这个,所以它可能相当普遍。如果我能记得是哪本书的话,我会给出适当的引用。 - Bill the Lizard
4
你可以在协议中继续使用电话的类比。协议是用于通信的惯例,例如以“你好,我是蜥蜴比尔”开始交谈。 - Christoffer
电话分机是什么?我来自另一代人,家里从来没有用过很多电话。 - Santropedro
1
@Santropedro 是的,指的是“在商业电话中……”部分。曾经有一段时间,您只需拨打一个号码即可联系到公司,然后自动语音录音会告诉您拨打您要联系的人的分机号码(如果您知道的话)。如果您不知道,会有人接听电话并与您交谈。 - Bill the Lizard

33

协议 = 如何通信,端口 = 在哪里通信


1
在TCP/IP中,“Where”是一个任意数字。大多数使用TCP/IP的常见应用程序(如Web、电子邮件、FTP)使用“众所周知”的端口(分别为80、25、21)。 - Dave Swersky

20

协议是一种关于如何解释数据和如何响应消息的约定。它们通常规定消息格式和合法消息。协议的例子包括:

端口是TCP和UDP中套接字终点的一部分。它们允许操作系统区分主机上应该接收传入消息的哪个TCP或UDP服务。

混淆通常是因为一些端口已经被保留(例如端口80),并且通常会被期望接收特定协议(在端口80的情况下是HTTP)的服务器监听。虽然发送到端口80的消息通常预期是HTTP消息,但没有任何阻止非HTTP服务器在端口80上监听,或者HTTP服务器在备用端口(例如8080或8088)上监听。


8

端口 = 船只进出的地方
协议 = 货物如何装载到船上


当有人感到困惑时,不清楚的类比并不能提供帮助。 - Rob
实际上,这取决于他们感到困惑的原因。如果他们只是因为需要了解物品在其中扮演的角色以便获得一些上下文而感到困惑,那么类比可以帮助他们很多。 - Beska

2

2

端口 = 耳朵、嘴巴、眼球、触摸
协议 = 英语、西班牙语、手语、盲文


(注:此处的“端口”和“协议”均为计算机网络中的术语,分别指用于传输数据的物理接口和通信规则)

1

在编程中,“端口”指的是你要与谁进行通信,而“协议”则指如何进行通信或通信方式。


1

在IP术语中,协议号是分配给IP内部层4协议的值,例如TCP的6,UDP的17,通常在大多数UNIX系统的/etc/protocols文件中找到。

端口号在UDP和TCP头中用于表示这些协议中所承载的不同高级协议,例如SMTP的25,HTTP的80等,在/etc/services中定义。


1
协议是规定两个设备如何以彼此都能理解的方式交换数据的规范。端口是一种编号的“标签”,它帮助计算机决定谁应该接收传入的数据。
许多协议默认运行在一个端口上,这使得发现它们或配置使用它们的应用程序更容易。但这不是硬性规定;只要任何联系它们的人知道更改,它们就可以始终侦听不同的端口。

0
端口只是一种你选择用于通信的通道,协议决定了通信的方式。某些协议通常使用特定的端口,比如HTTP使用80端口,FTP使用21端口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接