TCP/IP 통신 및 포트에 대한 질문
3 way handshake 과정이 완료되면 서버와 클라이언트가 연결된 상태이므로
데이터(HTTP 메시지)가 담긴 패킷을 주고받게 된다. 이때 TCP 계층에선 데이터가 성공적으로 전송/수신됐는지 등을 검증한다고 배웠는데요. 그럼 3way handshake나 수신받은 패킷의 헤더들을 단계별로 확인한 뒤 실제 데이터를 소켓으로 전달하는 작업은 운영체제 관여 하에 이뤄지나요?
클라이언트 애플리케이션은 남은 포트 중 랜덤으로 할당받고(port=0),
서버는 80 등으로 미리 지정해서 포트를 받는데
그러면 해당 프로세스의 포트가 정해지는 시점은 소켓을 생성할 때인가요?프로세스 한개당 반드시 하나의 포트만 할당되나요? (ex: 포트 두개를 바인딩하고
서버 소켓을 두개 연다, 한 클라이언트 프로세스가 여러 로컬 포트를 할당받을 수 있다 등이 가능한지..)실제 여러 포트를 할당받을 수 있다면 어떻게 활용되는지 궁금합니다.
일반적으로 웹 서비스는 웹 서버(80 포트)와 WAS(8080 포트)로 구성하여
웹 서버가 처리하지 못하는 요청은 WAS로 위임한다고 했는데,
웹 서버와 WAS 간 연결에도 http 통신을 사용한다면 웹 서버 프로세스는 기존 80 포트로 바인딩된 소켓을 생성해서 통신하는 것인가요?
답변 2
1
안녕하세요. CS님, 공식 서포터즈 코즈위버 입니다. AI 답변에 더하여 답변 드립니다.
1. 네 맞습니다. 운영체제는 여러 커널들을 이용하여 하드웨어를 통제하는데요, TCP/IP 통신 규약을 처리하기 위한 커널 프로그램이 있고 이를 운영체제가 이용하여 통신을 시행하므로 운영체제가 통제하고 있다고 해도 맞는 말입니다.
네 맞습니다. 네트워크 통신을 시작할 때 할당 받습니다.
소켓을 여러개 생성하여 여러개의 포트 번호를 이용할 수 있습니다.
WS는 80이 아닌 다른 소켓을 생성, WAS 통신을 시행합니다. 말씀하신것처럼 통신 프로토콜은 HTTP가 일반적입니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요. TCP/IP 통신과 포트에 대한 질문입니다.
3-way handshake 과정이 완료되면 클라이언트와 서버는 연결된 상태가 되고, 이후 데이터가 주고받게 됩니다. TCP 계층에서는 데이터가 성공적으로 전송/수신되었는지 등을 검증합니다. 이때 실제 데이터를 소켓으로 전달하는 작업은 운영체제에 의해 이뤄집니다. 운영체제는 소켓 API를 통해 데이터를 전송하고, TCP/IP 스택을 통해 패킷을 생성하고 처리합니다.
클라이언트 애플리케이션은 남은 포트 중 랜덤으로 할당받고, 서버는 미리 지정된 포트를 사용합니다. 포트는 소켓을 생성할 때 정해집니다. 일반적으로 하나의 프로세스에는 하나의 포트만 할당됩니다. 즉, 한 클라이언트 프로세스가 여러 로컬 포트를 할당받는 것은 불가능합니다.
웹 서비스의 경우, 웹 서버와 WAS가 웹 서버의 포트와 WAS의 포트로 구성됩니다. 웹 서버는 처리하지 못하는 요청을 WAS로 위임하기 위해 내부적으로 http 통신을 사용합니다. 이때 웹 서버 프로세스는 기존 80 포트에 바인딩되어 http 요청을 처리합니다. WAS는 다른 포트(예: 8080)에 바인딩되어 웹 서버로부터 받은 요청을 처리합니다. 이렇게 포트를 구분하여 역할을 분리하는 것이 웹 서비스의 일반적인 구성 방식입니다.
여러 포트를 할당받을 수 있다는 것은 다른 프로세스들이 동시에 해당 포트를 사용하여 통신할 수 있다는 뜻입니다. 각 포트는 서로 다른 프로세스에게 할당되며, 포트를 활용하는 방법은 프로세스의 용도에 따라 다양합니다. 예를 들어, 여러 개의 서버를 동시에 운영하거나, 특정한 서비스를 위한 포트를 지정하여 접속을 제어하는 등의 용도로 활용될 수 있습니다.
더 자세한 내용은 TCP/IP 프로토콜에 대한 이해와 운영체제의 네트워크 스택 동작 방식에 대해 참고할 수 있습니다.
캐시무효화시 그냥 no-store만 넣어되지 않나요?
0
71
2
API의 헤더와 바디에 대한 문의 입니다.
0
70
2
수정폼과 수정
0
69
1
쿠키에 대해 질문드려요!
0
89
2
서버에서 캐시 검증 헤더를 직접 처리해야 하나요?
0
87
1
http api get, post 멱등
0
40
1
컬렉션의 개념
0
49
1
시작라인에 들어가는 요청 대상 경로는 상대 경로 아닌가요?
0
54
1
PATCH 는 PUT처럼 멱등이여야 하지 않나요?
0
81
1
리소스 질문드립니다
0
56
1
IP 패킷 질문입니다.
0
59
1
html from, http api
0
75
2
브라우저 캐시가 60초 유효하다는게 무슨 뜻일까요
0
120
1
stateless 무상태 예제가 생각났는데. 저가 생각 한게 맞는지 궁금합니다.
0
99
1
URI 및 URL 질문, 왜 자바(스프링)에서는 이렇게 나누었는지?
0
141
1
host와 port
0
106
1
tcp/ip는 연결을 유지? 아니면 유지하지 않음?
0
145
1
다음 강의 커리큘럼 질문!!
0
131
2
캐시 개념에 대해서 설명하시지는 않으시는건가요?
0
113
1
클라이언트가 patch, delete 요청 시 알아야 하는 url
0
91
1
html form 형태 전송시 new, edit 등 컨트롤 리소스를 사용하는 이유
0
168
2
비 연결성(connectionless) 강의에서 질문입니다~
0
140
1
PATCH를 사용하지 못할 때 왜 POST?
0
162
2
협상과 우선순위3 질문드립니다.
1
130
1





