-
[열혈 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라는 값을 리틀 엔디안 기반 컴퓨터에 전송할 때의 과정
- Big-Endian이므로 0x0000000C 로 12가 메모리에 저장
- Network Byte Order는 Big-Endian이므로 그대로 전송
- Little Endian 컴퓨터에서는 Network Byte Order로 전송된 데이터를 ntohs함수를 통해 0x0C000000로 변환
10. 루프백 주소가 무엇이고, 어떻게 표현되는가?
- 루프백 주소는 시스템 자신의 IP주소를 의미하며, 127.0.0.1이다.
- 루프백 주소로 데이터를 전송하면, 다른 컴퓨터에서 전송된 것과 같은 방식으로 작동하지만, 결과적으로 자신이 데이터를 받게 된다.
'Study > Network' 카테고리의 다른 글
[열혈 TCP/IP 소켓 프로그래밍] Chapter4. 내용 확인문제 (0) 2022.10.08 [열혈 TCP/IP 소켓 프로그래밍] Chapter2. 내용 확인문제 (0) 2022.09.19 [열혈 TCP/IP 소켓 프로그래밍] Chapter1. 내용 확인문제 (0) 2022.09.15