01. IP주소 체계인 IPv4와 IPv6의 차이점은 무엇인가? 그리고 IPv6의 등장 배경은?
-> IPv4는 4바이트 주소체계, IPv6는 16바이트 주소체계이다. 현재 범용적으로 사용되고있는 주소체계는 IPv4로, IPv6는 IPv4기반의 IP주소가 모두 고갈될 것을 염려하여 만들어진 표준인데, 아직 범용화되지않았다.
02. 회사의 로컬 네트워크에 연결되어 있는 개인 컴퓨터에 데이터가 전송되는 과정을, IPv4의 네트워크 ID와 호스트ID, 그리고 라우터의 관계를 기준으로 설명하라.
-> 네트워크 ID를 이용해 해당 네트워크(라우터 or 스위치)로 데이터가 전송되고 호스트 ID를 이용해 호스트에게 데이터를 전송한다.
03. 소켓의 주소는 IP와 PORT번호 두 가지로 구성된다. 그렇다면 IP가 필요한 이유는 무엇이고 PORT번호가 필요한 이유는 또 무엇인가?
즉, IP를 통해서 구분되는 대상은 무엇이고 PORT번호를 통해 구분되는 대상은 무엇인가?
-> IP를 이용해 호스트로 데이터가 전송되고 호스트 내의 어떤 소켓에 전송할 지 는 포트번호를 이용해 운영체제가 데이터를 적절히 분배한다.
즉, IP는 호스트를 구분하고 포트번호는 호스트 내의 소켓을 구분하는데 사용된다.
04. IP주소의 클래스를 결정하는 방법을 설명하고 이를 근거로 다음IP주소들이 속하는 클래스를 판단해보자.
-> 네트워크ID(네트워크의 구분을 위한 IP주소의 일부)와 호스트ID의 형태에 따라 분류된다. IP주소의 첫 번 째 바이트만 확인하여 네트워크 주소가 몇바이트인지 판단 가능하다.
클래스 A의 첫 번째 바이트 범위: 0~127
클래스 B의 첫 번째 바이트 범위: 128~191
클래스 C의 첫 번째 바이트 범위: 192~223
a. 214.121.212.101
-> 클래스C
b. 120.101.122.89
-> 클래스 A
c. 129.78.102.211
-> 클래스 B
05. 컴퓨터는 라우터 또는 스위치라 불리는 물리적인 장치를 통해 인터넷과 연결된다. 그렇다면 라우터 또는 스위치의 역할은 무엇인가?
-> 목적지로 데이터를 전달하는데 중간 매개체 역할을 한다. ( 데이터 전송 -> 라우터 -> 호스트)
06. Well-known PORT는 무엇이며 그 값의 범위는 어떻게 되는가?
-> 포트 번호는 2바이트로 표현되기 때문에 0~65535까지 사용할 수 있다. 그런데 well-known PORT는 0부터 1023까지의 특정 프로그램에 할당하기로 예약되어있는 포트번호다. 따라서 이 범위의 값을 제외한 다른 값을 할당해야한다.
07. 소켓에 주소를 할당하는 bind함수의 두번 째 인자는 sockaddr*형 변수인데 실제로 함수를 호출할 때는 sockaddr_in의 변수를 사용한다.(sockaddr*형으로 형 변환해 사용) 그 이유는 무엇인가?
-> sockaddr 구조체는 IP번호와 PORT번호를 할당하기 쉽지 않은 구조다. 그렇기 때문에 IP주소와 PORT번호 할당이 용이한 sockaddr_in 구조체가 사용된다. 형변환해서 사용하는 이유는 sockaddr_in구조체를 이용하여 IP주소와 PORT번호를 할당하면 이 구조체 변수의 바이트 열은 sockaddr과 동일하므로
주소 정보를 할당하기 편한 sockaddr_in을 이용한다. bind 함수의 동작은 sockaddr형 구조체를 이용하므로 sockaddr_in구조체를 이용하여 주소정보를 할당 한 후 sockaddr형으로 형변환하여 사용한다.
'열혈 TCP IP 소켓 프로그래밍' 카테고리의 다른 글
Chapter04 내용 확인문제 (0) | 2020.06.20 |
---|---|
Chapter02 내용 확인문제 (0) | 2020.06.19 |
Chapter01 내용 확인문제 (0) | 2020.06.19 |