社区
C语言
帖子详情
有关tcp和udp端口号的疑惑
qiuhui00
2011-10-05 03:24:49
最近在看计算机网络socket编程方面的书,有几个问题想不明白,所以来请教一下。就我目前的理解,端口号是用来代表某种服务的。一台计算机的端口号可以从0-65535,tcp和udp协议拥有各自的端口号。问题如下:
1. 一台计算机上的端口号是不是唯一的?为什么?
2. 一个端口号可以同时被两个使用udp或tcp的进程同时绑定吗?请说明原因
3. 一个端口号可以被使用tcp和udp的两个进程同时绑定吗?请说明原因
...全文
1843
21
打赏
收藏
有关tcp和udp端口号的疑惑
最近在看计算机网络socket编程方面的书,有几个问题想不明白,所以来请教一下。就我目前的理解,端口号是用来代表某种服务的。一台计算机的端口号可以从0-65535,tcp和udp协议拥有各自的端口号。问题如下: 1. 一台计算机上的端口号是不是唯一的?为什么? 2. 一个端口号可以同时被两个使用udp或tcp的进程同时绑定吗?请说明原因 3. 一个端口号可以被使用tcp和udp的两个进程同时绑定吗?请说明原因
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
错_对
2011-10-07
打赏
举报
回复
错_对
2011-10-07
打赏
举报
回复
服务器端口是用来标注特性服务性质的,服务器与客户机建立连接后,传输数据实际上是用其他闲置端口进行的。
比如bootp服务器端口67, bootp客户机端口68.端口缓存是有限的,UDP下当多个客户机同时与服务器通信会产生大
量的排队延迟甚至丢包,所以在建立连接后,服务器会申请单独的端口与客户机进行通信。我是依据《TCP/IP详
解》的分析。说的不对请拍砖。不过在TCP通信下会有拥塞控制,流量控制,不至于服务器端口缓存排队队列大量
等候,这时候可能是直接用well_know端口与客户机通信,具体还得看系统实现。
qq120848369
2011-10-05
打赏
举报
回复
1,TCP有1-65535,UDP也有1-65535,完全是两个协议,端口又不是什么物理概念,不过就是一个short而已,所以TCP用了1号端口,UDP也用1号端口没有任何影响。
2,楼主可能没搞明白网络编程这些概念,一个套接字分两个地址,一个是src host and src port,一个是dst host and dst port,也就是这个SOCKET本地关联哪个地址与端口,远端关联哪个地址与端口。
不管你自己做的QQ是什么样的,腾讯的QQ是不会主动绑定本地端口的,它用一个UDP SOCKET直接发包给QQ服务器的IP和Port,由内核帮你绑定一个本地的IP和PORT,QQ服务器收到你的包的同时也会recvfrom获得你的这个本地IP和PORT,于是可以回包给你,你用这个UDP SOCKET自然会读到回包,因为服务器是发给你这个本地IP和PORT。
黑娃
2011-10-05
打赏
举报
回复
端口是系统资源,对计算机来说是唯一的,但tcp和udp对同一个端口号系统会看成是不同的资源。如果端口号范围是1-65535,则可理解为系统的端口资源有2套,一套为tcp准备,一套为udp准备
sww01236987
2011-10-05
打赏
举报
回复
[Quote=引用 11 楼 qiuhui00 的回复:]
引用 10 楼 sww01236987 的回复:
1.毫无疑问,不是唯一的。一台电脑可以有0-65535个端口,0-1024是系统预留的端口。每一个程序的端口号通常是唯一的,不排除有些程序会开启多个端口。当一个数据包发送到我的电脑的ip时,由哪个应用程序软件来接受这个数据包,就是由端口号决定的。因为端口号的作用就是为了可以把一个电脑ip收到的多个数据区分开是发个哪个应用程序的。好比信邮件到你……
[/Quote]
回答第三问:原理我也不太清楚,但是我确实测试过,例如我做个类此QQ的程序,占用tcp1234端口,我同时开启多个我的qq,也是可以的。但是我再做一个程序QQ2,当我启动QQ了再启动QQ2程序的时候,就提示套接字绑定失败,端口被占用。
serven_zhang
2011-10-05
打赏
举报
回复
[Quote=引用 5 楼 lida2003 的回复:]
引用 4 楼 qiuhui00 的回复:
可是我搜了一下,有人说tcp和udp的端口号是独立的,这是不是说一个端口号可以同时被使用udp和tcp的两个进程同时绑定?如果是的话,那怎么会说一台计算机的端口号是唯一的呢?
udp和tcp是不同的传输层协议。一般说的是同时两个相同服务绑定同一个端口。
[/Quote]这哥们说的对啊!
qiuhui00
2011-10-05
打赏
举报
回复
对于udp和tcp的端口号是独立的怎么理解呢?
qiuhui00
2011-10-05
打赏
举报
回复
[Quote=引用 10 楼 sww01236987 的回复:]
1.毫无疑问,不是唯一的。一台电脑可以有0-65535个端口,0-1024是系统预留的端口。每一个程序的端口号通常是唯一的,不排除有些程序会开启多个端口。当一个数据包发送到我的电脑的ip时,由哪个应用程序软件来接受这个数据包,就是由端口号决定的。因为端口号的作用就是为了可以把一个电脑ip收到的多个数据区分开是发个哪个应用程序的。好比信邮件到你家,是给你的还是给你哥哥的。家庭地址相当于ip,端口号……
[/Quote]
可能是我的问题提的不够清楚。其实我的意思是,如果一个端口号已经被某个使用udp的进程绑定了,那这个端口号还能不能被另外一个使用udp的进程绑定?又或者是另外一个使用tcp的进程呢?为什么?
sww01236987
2011-10-05
打赏
举报
回复
1.毫无疑问,不是唯一的。一台电脑可以有0-65535个端口,0-1024是系统预留的端口。每一个程序的端口号通常是唯一的,不排除有些程序会开启多个端口。当一个数据包发送到我的电脑的ip时,由哪个应用程序软件来接受这个数据包,就是由端口号决定的。因为端口号的作用就是为了可以把一个电脑ip收到的多个数据区分开是发个哪个应用程序的。好比信邮件到你家,是给你的还是给你哥哥的。家庭地址相当于ip,端口号相当于你们家的成员。
2.可以。ip数据包,首先是由操作系统来接受的,然后根据数据包协议类型,分陪给程序。
3.这个问题我没看出来第二个问题有什么差别。
lida2003
2011-10-05
打赏
举报
回复
[Quote=引用 7 楼 qiuhui00 的回复:]
网络编程当中所说的绑定,是个怎样的过程?
[/Quote]
不好意思,刚才上面的图,文本好像不是很好,大致意思你照着理解吧。绑定bind主要用于服务,而客户端一般采用连接connect。 其过程就像启动一个服务,然后绑定到一个特定端口,对该端口所有进来的tcp/udp请求进行响应。
具体socket内部实现细节,请参加tcp/ip协议栈实现。这里我也说不全,理解下,希望能有所帮助。
lida2003
2011-10-05
打赏
举报
回复
[Quote=引用 6 楼 qiuhui00 的回复:]
请问端口号到底是个什么概念啊?能给个详细点的解释吗?
[/Quote]
+---------+--------------+--------------+-----------------------------------+
|MAC | IP | TCP/UDP | Data |
+---------+--------------+--------------+-----------------------------------+
基本情况就是上述帧格式:五元组分别位于MAC, IP, TCP/UDP里面:
MAC里面的type决定了是否是IP帧,IP里面给出了SrcIp和DestIp,TCP、UDP头给出了到底是那种传输层协议。
详见TCP/IP 卷一。
qiuhui00
2011-10-05
打赏
举报
回复
网络编程当中所说的绑定,是个怎样的过程?
qiuhui00
2011-10-05
打赏
举报
回复
[Quote=引用 5 楼 lida2003 的回复:]
引用 4 楼 qiuhui00 的回复:
可是我搜了一下,有人说tcp和udp的端口号是独立的,这是不是说一个端口号可以同时被使用udp和tcp的两个进程同时绑定?如果是的话,那怎么会说一台计算机的端口号是唯一的呢?
udp和tcp是不同的传输层协议。一般说的是同时两个相同服务绑定同一个端口。
[/Quote]
请问端口号到底是个什么概念啊?能给个详细点的解释吗?
lida2003
2011-10-05
打赏
举报
回复
[Quote=引用 4 楼 qiuhui00 的回复:]
可是我搜了一下,有人说tcp和udp的端口号是独立的,这是不是说一个端口号可以同时被使用udp和tcp的两个进程同时绑定?如果是的话,那怎么会说一台计算机的端口号是唯一的呢?
[/Quote]
udp和tcp是不同的传输层协议。一般说的是同时两个相同服务绑定同一个端口。
qiuhui00
2011-10-05
打赏
举报
回复
可是我搜了一下,有人说tcp和udp的端口号是独立的,这是不是说一个端口号可以同时被使用udp和tcp的两个进程同时绑定?如果是的话,那怎么会说一台计算机的端口号是唯一的呢?
lida2003
2011-10-05
打赏
举报
回复
tcp/udp一般采用五元组来定位一个连接:
src_ip, src_port, dest_ip, dest_port, protocol_type
[Quote=引用楼主 qiuhui00 的回复:]
最近在看计算机网络socket编程方面的书,有几个问题想不明白,所以来请教一下。就我目前的理解,端口号是用来代表某种服务的。一台计算机的端口号可以从0-65535,tcp和udp协议拥有各自的端口号。问题如下:
1. 一台计算机上的端口号是不是唯一的?为什么?
==> 不理解你的问题,可能你的意思是一个服务的端口是否唯一?一般来说某个写一下服务默认情况下是一个端口号。但是也可能多个端口提供相同服务,这个和程序设计实现相关。
2. 一个端口号可以同时被两个使用udp或tcp的进程同时绑定吗?请说明原因
==>可以,protocol_type不一样,不是两个相同链接。
3. 一个端口号可以被使用tcp和udp的两个进程同时……
==> 可以,同上。
[/Quote]
hengshan
2011-10-05
打赏
举报
回复
1、是的。因为端口号就是代表一台机器上的一个进程。
2、不可以,因为端口号代表一个通信进程,在同一个ip上,是唯一的。
3、同2
qiuhui00
2011-10-05
打赏
举报
回复
怎么没有人回答啊?自己顶
TCP
/
UDP
端口号
大家好呀,我是请假君,今天又来和大家一起学习数通了,今天要分享的知识是
TCP
/
UDP
端口号
。 在IP网络中,一个IP地址可以唯一地标识一个主机。但一个主机上却可能同时有多个程序访问网络,要标识这些程序,只用IP地址就不够了.因此
TCP
/
UDP
采用
端口号
(port number>来标识这些上层的应用程序,从而使这些程序可以复用网络通道。而为了区分
TCP
和
UDP
协议,IP用协议号6标识
TCP
,用协议号17标识
UDP
。 在实际的端到端通信中,通信的...
值得收藏的
TCP
和
UDP
端口号
分类
TCP
和
UDP
端口号
分类
TCP
和
UDP
的报头如下 可以看到无论是源端口还是目的端口都是16位的,2^16=65536,所以
TCP
和
UDP
的端口范围都是0-65535 下面是端口的分类 知名端口0-1023(well known ports) 被分配给最重要最常用的服务,由IANA进行分配,常用的知名端口如FTP:21 TELNET:23 STMP:25 DNS:53 http:80 注册端...
最全
TCP
/
UDP
端口号
整理
文章目录一、
TCP
/
UDP
端口号
常见端口参考全部端口数据二、常见常用
端口号
个人常用端口特殊使用端口 一、
TCP
/
UDP
端口号
常见端口参考 参见OSCHINA的
TCP
/
UDP
常见端口对照表 全部端口数据 详见Service Name and Transport Protocol Port Number Registry协议注册表 二、常见常用
端口号
个人常用端口
端口号
(Port Number) 服务名(Service Name) 端口作用(Port Description) 20
tcp
和
udp
端口号
是否可以相同
tcp
和
udp
可以使用相同的port号 且
tcp
和
udp
可以同时使用相同的port号 但一台设备里,
tcp
协议里port号必须有唯一性。 同样,
udp
协议里port号必须有唯一性。 OS接收到报文后,根据IP字段里面的内容可以区分出是什么协议报文。然后根据不同协议,就如不同的协议栈处理,同一个协议栈里port号,必须是唯一的。 系统有能力根据接受的报文的IP字段里面的协议部分判断这个报文是什...
服务器修改
tcp
和
udp
端口号
,
TCP
/
UDP
工作原理及常用
端口号
1、
TCP
的报文格式及工作原理(1)
TCP
协议:
TCP
位于
TCP
/IP模型的传输层,它是一种面向连接的端到端协议。
TCP
作为传输控制协议,可以为主机提供可靠的数据传输。两台主机在通信之前,需要
TCP
在它们之间建立可靠的传输通道。(2)
TCP
端口号
:
TCP
允许一个主机同时运行多个应用进程。每台主机可以拥有多个应用端口,每对
端口号
、源和目标IP地址的组合唯一地标识了一个会话。端口分为知名端口和动态端口...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章