问一个关于HTTP和80端口的初级问题 理论上的

Mashpawo7 2009-04-25 11:09:14
1 一个客户程序(浏览器)想要连接服务器 看网页 用的是本地的80端口 还是去连接服务器的80端口 还是2端都要是80端口

2 HTTP1.1协议和HTTP1.0协议的区别是前者可以保持连接 那么如果服务器端用的是80端口和客户连接 那么这个时候服务器的80端口就被占用了 但是既然是服务器 客户肯定不止一个 后面的客户都会连不进来了吧?(是不是在这里我对80端口理解有误?是不是很多客户可以一起连接服务器的80端口 而不存在“霸占”这个词)

3 “端口”是不是仅仅是一个符号 因为主机同一个时刻可能很多进程要通信 那么信道想要“复用” 必须对数据报标识是属于哪个进程的 那么这个标识符就是“端口” 是这个意思吗?如果不是 谁能和我通俗的说说“端口”

4 计算机是如何做到端口和服务绑定的 比如HTTP服务对应的是80端口 这样的绑定是怎么形成的? 能自定义的改吗? 我这个问题可能比较小白 小家见笑
...全文
507 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
biweilun 2009-04-25
  • 打赏
  • 举报
回复
2者的80端口都是需要的,80端口是多对多的关系,可以多个同时连接。在系统中已经设定好了,那么就不能自己修改该协议所用的端口,不同于其他端口,有的不能复用、FTP的端口是可以修改的,但是HTTP服务的端口是不能修改的。
端口其实就是一种对应关系,由该通道连接实现通信。另外你说的端口和进程并没有特别的联系。
某些端口的复用可以通过编程实现
blackcat242 2009-04-25
  • 打赏
  • 举报
回复
服务器的80端口
端口实际上是操作系统将数据与进程的一个关联,数据通过不同端口进来,系统根据端口分发到不同的进程。
端口是可以改变的,只是1024以前的一般都是约定俗成的东西了。固定了

Mashpawo7 2009-04-25
  • 打赏
  • 举报
回复
多谢 我基本可以理解了 那再多问个问题 几个重要的端口 比如80端口 我自己写个程序 作用是用一个套接字去监听这个80端口 但是对于任何连接请求一律无视 这样是不是就恶意霸占了80端口呢

惭愧的说 我已经这么做了 可是似乎我的其他程序一点影响都没有 怎么回事 我该怎么样彻底的霸占80端口 让其他程序都用不了呢

  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jameshooo 的回复:]
1、指服务器的端口是80,客户端可以是随机端口,也可以是固定端口。
2、服务器监听80端口时可以有多个客户端连接进来,每连接一个客户端就产生一个新的套接字,每个套接字代表与一个客户端的连接,它们都是80端口。
3、端口号只是一个ID,当服务器侦听某个端口时,相当于告诉系统这个ID属于我,所有连接到此ID的包都交给我处理。
4、只要侦听端口成功就表示端口绑定服务成功。端口号可以随意指定,但是1024以内的端口号都已经…
[/Quote]
推荐
  • 打赏
  • 举报
回复
1.服务器是80端口,客户端端口随便的。


3 “端口”是不是仅仅是一个符号 因为主机同一个时刻可能很多进程要通信 那么信道想要“复用” 必须对数据报标识是属于哪个进程的 那么这个标识符就是“端口” 是这个意思吗?如果不是 谁能和我通俗的说说“端口”


如果你写过并发服务器的代码,相信就可以理解一个端口怎么实现多个连接的。
jameshooo 2009-04-25
  • 打赏
  • 举报
回复
用于侦听的套接字跟用于通信的套接字是不同的。每个端口在系统范围内只能被侦听一次,其它对相同端口进行侦听就会失败。当端口正在被侦听时,如果接受一个客户连接请求,就产生一个新的用于通信的套接字,以后往这个套接字发消息就表示跟这个客户端发消息,此时侦听套接字继续保持侦听以便接收更多的客户连接请求。
Mashpawo7 2009-04-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jameshooo 的回复:]
1、指服务器的端口是80,客户端可以是随机端口,也可以是固定端口。
2、服务器监听80端口时可以有多个客户端连接进来,每连接一个客户端就产生一个新的套接字,每个套接字代表与一个客户端的连接,它们都是80端口。
3、端口号只是一个ID,当服务器侦听某个端口时,相当于告诉系统这个ID属于我,所有连接到此ID的包都交给我处理。
4、只要侦听端口成功就表示端口绑定服务成功。端口号可以随意指定,但是1024以内的端口号都已经…
[/Quote]

谢谢你的回答 我大概懂了你的意思 但是这里有个问题 套接字只能1对1 那么有多个客户 服务器就有多个套接字 多个套接字同时绑定着80端口可以实现吗? 我自己也编写过简单的套接字程序 做了一个实验 当一个套接字绑定了80端口后 另一个套接字去绑定的时候 结果就是绑定失败 为什么会出现多个套接字绑定着一个80端口呢? 还请指教?
Mashpawo7 2009-04-25
  • 打赏
  • 举报
回复
多谢LS几位朋友的回答

还是有点不明白

1 HTTP1.1 就是保持连接 服务器和客户不断开 那么这个时候服务器的80端口就一直被占用了 这个时候其他的客户怎么办?

2 HTTP协议 通过80端口建立了链接后 是不是应该立刻用一个别的端口和客户通信呢?这样比较合理(服务器监听80端口 一旦发现有客户连接 就建立一个新的线程去负责通信 而UI几乎监听80端口 这个时候80端口理应是空出来的 是不是?)

求求有经验的高手帮帮我 小弟感谢不尽
jameshooo 2009-04-25
  • 打赏
  • 举报
回复
1、指服务器的端口是80,客户端可以是随机端口,也可以是固定端口。
2、服务器监听80端口时可以有多个客户端连接进来,每连接一个客户端就产生一个新的套接字,每个套接字代表与一个客户端的连接,它们都是80端口。
3、端口号只是一个ID,当服务器侦听某个端口时,相当于告诉系统这个ID属于我,所有连接到此ID的包都交给我处理。
4、只要侦听端口成功就表示端口绑定服务成功。端口号可以随意指定,但是1024以内的端口号都已经分配给标准服务了,部分大于1024的端口号也代表标准服务(但没有强制性),例如HTTP的标准端口是80,这是强制的,但是HTTP服务器还可以绑定更多的端口号,比如8000/8080一般也表示HTTP,或者其它任何端口号,但这些没有强制性。
ok1234567 2009-04-25
  • 打赏
  • 举报
回复
服务器监听的端口,比如WEB SERVER 监听80,是一个特殊的端口,通过listen激活,专门负责与客户端建立连接(connect-->accept),如果连接建立,服务器分配一个新的套接字(新的可用端口),与该客户端进行后续通信,监听80端口则尝试下一个accept,如此循环下去...

端口,使得计算机的通信的可以有几万个信道,你的理解是对的

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧