리셋 되지 말자

[ch3-1] 주소체계와 데이터 정렬 - 소켓에 할당되는 IP주소와 PORT번호 본문

socket

[ch3-1] 주소체계와 데이터 정렬 - 소켓에 할당되는 IP주소와 PORT번호

kyeongjun-dev 2020. 4. 17. 17:25

Ch3 주소체계와 데이터 정렬

3-1 소켓에 할당되는 IP주소와 PORT번호

  • IP는 Internet Protocol의 약자로 인터넷상에서 '데이터를 송수신할 목적으로 컴퓨터에게부여하는 값'을 의미한다.
  • PORT번호는 컴퓨터에게 부여하는 값이 아닌, '프로그램상에서 생성되는 소켓을 구분하기 위해 소켓에 부여되는 번호'를 뜻한다.

인터넷 주소

인터넷에 컴퓨터를 연결하여 데이터를 주고받기 위해서 IP주소를 부여 받아야 하는데, 두 가지 종류가 있다.

- IPv4(Internet Protocol version 4) : 4바이트 주소체계 (가장 보편적으로 널리 쓰임)

- IPv6(Internet Protocol version 6 : 16바이트 주소체계 (IP주소 고갈을 염려하여 만들었는데, 아직 잘 안쓰임)

IPv4 기준의 4바이트 IP주소는 네트워크 주소와 호스트(컴퓨터를 의미하는 이름) 조소로 나뉘며, 주소의 체계에 형태에 따라 A, B, C, D, E 클래스로 분류가 된다.

출처 : https://linkhub.tistory.com/118

NET ID는 네트워크 ID로, 네트워크의 구분을 위한 것이고 HOST는 실제 호스트(컴퓨터)를 의미한다.

위의 그림과 같이 외부 네트워크로부터, 네트워크 ID로 구분을 하여 데이터를 받고, 하나의 공유기 또는 허브등에 여러대의 컴퓨터가 연결되어 있을 때, 호스트ID로 구분을 하여 데이터를 받을 수 있다.
(네트워크를 구성할 때 외부로부터 수신된 데이터를 호스트에 전달하고, 호스트가 전달하는 데이터를 외부로 송신해주는 물리적 장치가 필요하다. 이를 가리켜 라우터 또는 스위치라 한다. 그런데 이것도 그냥 특별한 목적으로 사용하는 컴퓨터이다. 평범하게 사용하고 있는 개인 PC도 적절한 소프트웨어를 설치하고 구성만 해주면 라우터로 동작시키는게 가능하다.)

클래스 별 네트워크 주소와 호스트 주소의 경계

IP주소의 첫 번째 바이트만 보면, 네트워크 주소가 몇 바이트인지 판단이 가능하다. 아래와 같이 클래스 별 IP주소의 경계가 나뉘어져 있기 때문이다.

  • 클래스 A의 첫 번째 바이트 범위 : 0~127
  • 클래스 B의 첫 번째 바이트 범위 : 128~191
  • 클래스 C의 첫 번째 바이트 버위 : 192~223

소켓의 구분에 활용되는 PORT번호

위에서와 같이, IP는 네트워크에서 컴퓨터를 구분하기 위한 목적으로 사용된다. 그런데 이것만으로는 충분하지 않다. 왜냐하면 모든 응용프로그램마다 할당되는 소켓이 따로 존재하기 때문이다! ex) 인터넷 방송을 보는동시에 웹 서핑을 한다면 스트리밍 데이터를 받을 소켓 하나, 웹서핑에 필요한 데이터들을 받는 소켓이 하나, 총 두 개가 필요하다.

  • 소켓은 어떻게 구분하는가?
    우리가 사용하는 컴퓨터에는 NIC(네트워크 인터페이스 카드)라고 불리는 데ㅣ터 송수신장치가 하나씩 달려있다.
    IP는 데이터를 NIC을 통해 컴퓨터 내부로 전송하는데 사용된다. 그러나 컴퓨터 내부로 전송된 데이터를 소켓에 적절히 분배하는 작업은 운영체제가 담당한다. 이때 운영체제는 구분을 위해 'PORT번호'를 사용한다. 이를 위해서, NIC을 통해서 수신된 데이터 안에는 PORT번호가 새겨져 있다. 운영체제는 이 정보를 참조해서 일치하는 PORT번호의 소켓에 데이터를 전달하는 것이다.
  • 요약 : PORT는 하나의 운영체제 내에서 소켓을 구분하는 목적으로 사용된다.
  • PORT번호는 16비트로 표현되며 0에서 65535까지 사용할 수 있지만, 0에서 1023까지는 Well-known PORT라 해서 이미 예약이 되어 있으므로 이 값들을 제외하고 사용해야 한다.
  • PORT번호는 소켓을 구분하기 위한 고유번호이므로 중복되면 안된다. 단, TCP소켓과 UDP 소켓용도별로는 중복이 가능하다.
  • 요약 : 데이터 전송의 목적지 주소에는 IP주소뿐만 아니라, PORT번호도 포함된다.(응용프로그램에까지 데이터를 전달하기 위해서)
Comments