inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Java TPC 실전프로젝트 (Java API 활용)

Socket(소켓)이 만들어 지는 과정(TCP 3-way Handshake)

TCP 3-way Handshake 에서 2번째 단계인 서버측에서 바인딩시 왜 새로운 포트를 만들어서 통신 할려고 할까요?

208

리나

작성한 질문수 77

0

TCP 3-way Handshake 에서 2번째 단계인 서버측에서 바인딩시 왜 새로운 포트를 만들어서 통신 할려고 할까요?
 
영상에서 보면 9000번 서버측 고정 포트로 새로운 포트 안열고 이 9000번 포트로 통신 하면 되는게 아닌가요? 왜 임의의 포트 번호인 9001번 포트를 열어줘서 통신 하게 만드는지....
 
첫번째 단계인 client도 그렇지만
 
왜 새로운 포트를 만들어서 구지? 통신 할려고 하는지 이해가 안갑니다.
 
어떻게 보면 100명 client 가 동시에 server측에 통신 한다고 하면
 
즉 100개의 새로운 포트를 server 측에 2단계에서 만들어지는 건데요.
 
어떻게 보면 자원 소모가 되는게 아닌가요?

java oop

답변 1

0

박매일

1:1통신이라면 서버에서 하나의 소켓만으로도 통신이 가능하지만 여러명하고 통신을 할려면서버에서 1개의 소켓으로 통신을 한다면 대기시간이 엄청 길어질 수 있거나 불가능 합니다.

만약 나 혼자 여러 명하고 일처리를 한다고 하면 한사람의 요청을 받아서 처리하고 있을때 다른 사람들은 기다리고 있다고 생각하시면 되겠죠. 이걸 개선 한다면 나는 요청을 받기만하고(서버소켓을 만들어서:요청을 받는 소켓) 다른 사람에게 (소켓을 만들어서:통신용소켓)처리를 맡기는 것이 훨씬 더 일처리가 쉬워지는 원리라고 생각하시면 될듯합니다.

여기서 일을 처리하는 사람들을 스레드(경량프로세서)라고 부릅니다. 다시말하면 아르바이트 생들 이라고 이해하셔도 좋을듯합니다. 아르바이트생을(스레드를) 사용하면 대기 시간이 없이 바로 요청에 대해 응답을 해줄 수가 있습니다. 서버는 접속용 소켓 한개, 통신용 소켓 여러개를 만들어서 각 소켓마다 스레드가 요청처리를 하고 소켓을 닫아주면 자원 소모도 그렇게 많지 않습니다. 물론 수 많은 클라이언트가 몰린다면 요청을 분산해서 처리는 해야겠죠?

이해가 되셨을까요?

cmd창.. 인텔리제이 소켓만들기 (실습)

0

184

2

Gson

0

160

1

JSON API 활용하기(JSON-Java)

0

340

2

질문있습니다

0

270

1

질문있습니다.

0

219

1

강의 들으면서 잘 안되는 부분이 있어서요~

0

355

1

지도가 나오지 않아요

0

367

1

Gson 라이브러리 추가시 오류

0

1821

1

아래 소스의 차이가 뭘까요?

0

318

1

선생님 javaTPC API편 PDF파일이 안보여서요~

0

346

1

cmd에서 프로그램 실행 실패

0

524

1

TPC강의 모두 수강 후 현재 실전프로젝트 강의중 질문입니다.

0

276

1

BookDTO 생성자 질문

0

364

1

A instance of B의 작동원리가 궁금합니다!

0

293

1

채팅관련 질문입니다

1

421

0

cmd창 경로

0

337

1

connect 할 때 post 방식

0

281

0

JSONTokener 에러

0

352

1

Project03_A > rows.next 질문드립니다.

0

223

0

InputStream is = Project01_C.class.getResourceAsStream(src) 경로에 대해서

0

341

1

JSONObjct를 쓰는 이유 ??

1

295

1

지도 api 프로젝트 코드 문의

0

386

3

오류: 기본 클래스 Project06A_Server.class을(를) 찾거나 로드할 수 없습니다.

0

556

1

new 객체생성 자동완성 로딩 오류

0

526

1