ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [열혈 TCP/IP 소켓 프로그래밍] Chapter3. 내용 확인문제
    Study/Network 2022. 9. 22. 17:58

    01. IP주소체계 IPv4와 IPv6의 차이, IPv6의 등장배경

    • IPv4는 4Byte로 표현하는 주소체계, IPv6는 16Byte로 표현하는 주소체계이다.
    • IPv6는 IPv4 주소의 고갈을 염려하여 만들어졌다.

    02. 로컬 네트워크까지 데이터가 전달되는 과정

    • IPv4의 Network ID를 통해 라우터까지 데이터가 전송
    • 라우터는 Host ID를 확인해 연결된 컴퓨터에 데이터 전송

    03. 소켓의 주소가 IP와 PORT번호 두 개로 구성되는 이유

    • IP는 네트워크 상에서 연결되어 있는 컴퓨터를 식별하기 위한 주소이고, PORT는 OS에서 소켓을 식별하기 위한 주소이다.
    • IP를 통해 컴퓨터에 데이터가 도착하면, PORT를 통해 알맞은 소켓에 OS가 데이터를 보내주게 된다.

    04. IP주소 클래스별 차이

    • 클래스는 4Byte중 몇 Byte가 Network ID로 할당되어있는지를 기준으로 나누어진다.
    • 어떤 클래스에 속하는지는 첫 바이트의 값에 따라 경계를 나누어놨으므로 판별 가능
    • 클래스 A의 경우 1Byte가 Network ID이고, 첫 바이트가 0~127이하이다.
    • B의 경우 2Byte할당, 첫 바이트는 129~191
    • C의 경우 3Byte할당, 첫 바이트는 192~223

    05. 라우터와 스위치의 역할

    • 네트워크를 통해 전송되는 데이터들의 중계지 역할을 한다.
    • 들어온 데이터의 Host ID를 판별해, 어떤 컴퓨터로 데이터가 전송되어야 하는지 구분하고 전송하는 역할

    06. Well-Known PORT란? 또한 이 값의 범위

    • Well-Known PORT란 특정 프로그램을 위해 할당하기로 예약된 PORT번호이다.
    • 0~1023까지의 값이 Well-Known PORT로 할당되어 있다.
    •  http는 80, https는 443, FTP는 21번에 할당되어 있다.

    07. 소켓에 주소를 할당하는 bind 함수에서 sockaddr_in을 쓰는 이유

    • sockaddr은 IPv4만을 위한 구조체가 아니다.
    • sockaddr_in을 사용함으로써, 멤버 변수에 IPv4를 위한 데이터를 쉽게 할당할 수 있고, sockaddr이 요구하는 바이트 패턴을 만족시킬 수 있기 때문에 사용한다.

    08. 빅 엔디안과 리틀 엔디안, 네트워크 바이트 순서가 무엇이고, 필요한 이유

    • 빅 엔디안과 리틀 엔디안은 메모리에 값을 저장하는 체계이다.
    • Big Endian의 경우 상위 바이트의 값을 메모리의 낮은 주소에 저장하고, Little Endian은 상위 바이트의 값을 메모리의 높은 주소에 저장한다.
    • 네트워크 바이트 순서(Network Byte Order)는 네트워크에서 데이터를 전송할 떄 쓰는 바이트 순서에 대한 약속이다.
    • 아키텍쳐마다 Big Endian을 쓸 수도 있고, Little Endian을 쓸 수도 있으므로, 이를 고려하지 않고 송신자 자신의 Byte Order로 데이터를 전송하면 받는 쪽에서 데이터가 왜곡될 수 있다. 따라서 Big Endian으로 네트워크 바이트 순서를 정하고 네트워크 통신 시 이 순서를 지켜 전송한다.

    09. 빅 엔디안을 사용하는 컴퓨터에서 4Byte 12라는 값을 리틀 엔디안 기반 컴퓨터에 전송할 때의 과정

    1. Big-Endian이므로 0x0000000C 로 12가 메모리에 저장
    2. Network Byte Order는 Big-Endian이므로 그대로 전송
    3. Little Endian 컴퓨터에서는 Network Byte Order로 전송된 데이터를 ntohs함수를 통해 0x0C000000로 변환

    10. 루프백 주소가 무엇이고, 어떻게 표현되는가?

    • 루프백 주소는 시스템 자신의 IP주소를 의미하며, 127.0.0.1이다.
    • 루프백 주소로 데이터를 전송하면, 다른 컴퓨터에서 전송된 것과 같은 방식으로 작동하지만, 결과적으로 자신이 데이터를 받게 된다.

    댓글

GameDev.