웹서버 80포트에 대한질문입니다.
글쓴이: kim1158 / 작성시간: 목, 2004/04/08 - 12:50오후
80포트는 웹서버가 클라이언트의 리퀘스트를 받기위해
열어두는 포트잖아요.
그럼 그 요청에 따라 패킷(html코드 내용이겠지요)들을 전송할때
서버에서 나가는 포트와 클라이언트의 수신하는 포트는
몇번이 되는건가요??
그것역시 둘다 80인가요..?
일반적인 서버/클라이언트 소켓프로그램에서는 둘이 같은 포트번호에
바인딩해서 그 포트번호로 read,write하는걸 생각하면 같을것 같긴한데요.
답변 부탁드립니다~^^
Forums:
보통...
서버에서는 80 in 으로 80 out 으로 돌리고 (telnet 처럼) 클라이언트는 임의포트로 열고 같은 임의포트로 받습니다. 말이 좀 요상하긴 하네...
from bzImage
It's blue paper
네 그렇군요. 답변 감사드립니다.그런데 또 궁금한게 생겼네요.한포
네 그렇군요. 답변 감사드립니다.
그런데 또 궁금한게 생겼네요.
한포트에 여러개의 서버가 바인딩할수는 없잖아요.
그런데 아파치를 실행하면 기본적으로
5~10개의 httpd가 실행되는데요.(ps로 보면)
ps에 여러개가 보이니 쓰레드는 아닐거고요.
실제 httpd가 여러개 뜬거일텐데요.
이 경우는 어떻게 가능한걸까요.?
각각 httpd가 다른 포트를 사용하고있거나.. 이럴거 같지는 않고요.
아니면 다른 어떤방법일까요..?
확인안해봤지만 지금 드는 생각이 일단 httpd는 처음에 하나가뜨고 리퀘스트가 들어왔을때 내부에서 fork로
여러개를 띄우는식일까 싶긴합니다만.. 이래도 결국
동일한 포트에 여러개의 서버가 뜨는건 같은것 같은데..
질문이 좀 두서가없습니다.. 답변부탁드리겠습니다`^^
모든 디지털의 목표는 아날로그.
socket 개념에서 보자면, 서버측에서는socket()->
socket 개념에서 보자면, 서버측에서는
socket()->bind()->listen()->accept()->read()/write()->close()
위와 같이 진행이 됩니다. 여기서 client 의 connect()를 받아들이는 부분은 accept() 이므로(주로 accept이후에 fork로 child process 생성을 합니다.) port 하나에 하나의 서버가 binding 될 수 있는 것과 client 여러 개의 요청을 처리하는 것은 관계가 없을 것 같습니다.
동일포트에 바인딩 불가능한것은 분명합니다
질문을 잘못이해하신듯합니다.
제 질문은 동일 포트에 여러개의 서버가 바인딩불가능한데.
(이건 분명하고요)
어떻게 80포트를 사용하는 http데몬들이 복수개 떠있을수있는가
에 대한것이었습니다..^^;
모든 디지털의 목표는 아날로그.
[quote="kim1158"]네트워크 개념을 잘못이해하신듯합니다..
Re: 동일포트에 바인딩 불가능한것은 분명합니다
당연히 fork 로 child process 를 생성시키는 방법을 쓰는 것 아닐까요?
Re: 동일포트에 바인딩 불가능한것은 분명합니다
글쎄요... 생각해 보니 그렇군요. 자세히 생각해 본 적이 없어서리... :o
아마, 내부적으로 서로 통신하면서 작동하지 않을까요? 그냥 추측이였습니다...
----
블로그 / 위키 / 리눅스 스크린샷 갤러리
[quote="kim1158"]각각 httpd가 다른 포트를 사용하
혹시 Network Program 코드를 살펴보신 적이 없으신가요? 제가 말씀드린대로 보통 Socket 통신에서 connect() 요청을 처리하는 서버는 accept() 후에 fork()로 child process 를 생성하여 service를 처리합니다. 아래 설명이 도움이 될지도 모르겠네요.
http://www.iee.et.tu-dresden.de/manual/m
http://www.iee.et.tu-dresden.de/manual/misc/perf-tuning.html
에서 ctrl+f 로 select 를 찾아보시면, 개념적 코드가 나옵니다.
해당 코드의 이해에 대해선 스티븐스 아자씨의 책을 참고를....
----
LUX ET VERITAS | Just for Fun!
음. 넵. 힌트주신것들을 종합해서 이해했습니다. ps상에 보이는 여러
음. 넵. 힌트주신것들을 종합해서 이해했습니다.
ps상에 보이는 여러개의 http데몬들은
예상했듯이 리퀘스트요청에 의해 fork로 생성된 것이고
해당 포트에 바인드되어있는 http데몬은 하나인거죠.
다른 데몬들은 서비스를 처리용으로 생각할수있겠고요.
답변들 주셔서 모두 감사합니다- (_ _)
모든 디지털의 목표는 아날로그.
httpd가 모두 80번 포트를 사용하고 있는 것은 맞습니다. 80번 포
httpd가 모두 80번 포트를 사용하고 있는 것은 맞습니다. 80번 포트에서 accept하고 있는 프로세스는 하나일 뿐이겠지만요.
Heejoon Lee
댓글 달기