소켓, 포트

Jan 30, 2024
소켓, 포트

소켓이란?

notion image
* 외부 컴퓨터랑 연결하려면 파일이 소켓이 되어야함 K에서 N으로 데이터를 보내려면 소켓을 거쳐서 들어간다. 즉, OS를 중계역할로 씀
IP 주소와 포트 번호를 사용하여 특정한 네트워크 장치(호스트)에 연결되어 데이터를 주고받을 수 있도록 해준다.
💡
* 소켓은 포트 번호! IP 주소! 가지고 있음!! * 브라우저, 카톡 다 > 소켓으로 만듬 * 소켓은 TCP를 위한 구조
💡
* 하나의 포트에 하나의 소켓을 만들어서 결합하는 개념 서버는 특정 포트 번호에 소켓을 생성하고, 클라이언트해당 포트 번호서버의 IP 주소를 사용하여 소켓을 생성. 이렇게 생성된 소켓은 서버의 포트 번호와 결합되어, 해당 포트 번호로 들어오는 데이터를 수신할 수 있게 된다.
 

클라이언트 소켓, 서버 소켓

notion image
제일 처음 서버소켓이 만들어지고, bind가 딱 되어서, listen()을 대기하고 있는 상태가 된다. (이벤트 리스너처럼 인 듯?) 즉, SERVER SOCKET의 1, 2, 3번 과정이 ServerSocket serverSocket = new ServerSocket(20000); 이 코드
CLIENT SOCKET은 소켓을 만들면 커넥트까지 (1번, 2번 과정) 한묶음
원래는 작업이 다 끝나면 소켓을 close로 닫아줘야 함!! 우리 코드에선 메인이 종료되면 끝나니까 close가 필요없는데 스윙 같은걸 써서 돈다면, close를 강제로 해줘야함! 계속 도니까!! 보통 try-catch-final 로 close 구현을 많이 함. final에 close를 쓰는 것
💡
C로 짜면 이 표를 하나하나 다 구현 해야한대 ㅠㅠ
 

포트란?

notion image
컴퓨터와 네트워크 장치가 서로 통신하기 위해 사용하는 번호 하나의 PC에서 프로세스를 여러 개 사용하고 있을 때, 라우터가 나 어디가? 하면서 헷갈릴 수 있다. 무슨 프로세스가 자길 불렀는지 모르니까. 이때, 카톡은 내 프로세스를 사용할 땐 몇 번 포트를 쓸게. 네이버는 내 프로세스 사용할 땐 몇 번 포트 쓸게. 할 수 있음. 즉, 포트는 하나의 컴퓨터에서 여러 프로세스 또는 서비스가 동시에 실행될 때, 각각의 프로세스나 서비스를 식별하기 위해 사용하는 번호인 셈.
notion image
💡
포트번호는 [ 0 ~ 65,535번 ] 까지 자유롭게 고를 수 있음 포트의 범위는 2바이트(16비트) = 2^16 이라 65,536개 * 웹을 제공하는 모든 서버들은 443번 포트 (원래는 80이나 보안에 취약하다고 443) naver.com:443 <이런 구조다. * [ 0 ~ 1023 ] 까지의 번호는 미리 예약되어 있음 (잘 알려진 서비스들이 차지함) 이런걸 웰논포트(Well-known ports) 라고 한다. 따라서, 응용 프로그램에서는 1023 이상의 번호를 사용!
 
 
Share article

codingb