본문 바로가기
IT/데이터베이스_네트워크

윤성우의 열혈 tcp/ip 소켓 프로그래밍 3장 연습문제 솔루션

by nutrient 2021. 5. 23.
728x90
728x170

 

 

 

답안 1.
IPv4는 4바이트 주소체계인 반면, IPv6는 16바이트 주소체계이다. 이렇듯 IPv6는 IPv4 기반의 IP주소 고갈을 염려하여 정의된 주소체계이다. 


답안 2.
데이터 전송과정의 첫 번째는 목적지가 속한 네트워크로의 데이터 전송이다. 그리고 이 때 사용되는 것이 IP주소 중에서 네트워크 ID라 불리는 부분이다. 이는 네트워크를 구분할 수 있는 주소정보로써 이를 통해서 해당 네트워크로 데이터가 전송된다. 그리고 이렇게 전송된 데이터는 네트워크를 관장하는 라우터에게 전달되며, 데이터를 수신한 라우터는 IP주소 중에서 네트워크 ID를 제외한 나머지인 호스트 ID를 참조하여 최종 목적지인 호스트로 데이터를 전송한다.


답안 3.
IP주소는 인터넷상에서의 호스트를 구분하기 위한 것이다. 때문에 IP주소 정보만 있으면 목적지인 호스트로의 전송은 완료가 된다. 하지만 호스트 안에는 둘 이상의 소켓이 존재하기 때문에, IP주소만 가지고는 실질적인 최종 목적지에 해당하는 소켓에 데이터를 전송할 수가 없다. 그래서 소켓의 구분을 위해 존재하는 것이 PORT번호이다. 정리하면 IP는 호스트의 구분을 목적으로, PORT번호는 소켓의 구분을 목적으로 존재한다.


답안 4.
클래스의 구분기준은 다음과 같다.
    클래스 A의 첫 번째 바이트 범위 0이상 127이하
    클래스 B의 첫 번째 바이트 범위 128이상 191이하
    클래스 C의 첫 번째 바이트 범위 192이상 223이하

따라서 IP주소의 클래스는 다음과 같다. 
     214.121.212.102 (클래스 C)
     120.101.122.89 (클래스 A)
     129.78.102.211 (클래스 B)


답안 5.
라우터는 데이터의 목적지 전송을 돕는 중간 매개체 역할을 한다. 뿐만 아니라 로컬 네트워크에 연결된 컴퓨터들과 인터넷의 연결을 돕는 역할도 한다. 때문에 라우터는 스위치라고도 불린다.


답안 6.
'잘 알려진 PORT(Well-known PORT)'는 특정 프로그램에 할당하기로 예약되어있는 영역의 PORT번호를 의미한다. 그 값의 범위는 0부터 1023번까지이며, 대표적인 잘 알려진 PORT로 HTTP의 80PORT와 FTP의 20(데이터 전송 PORT), 21(컨트롤 PORT) PORT가 있다.



답안 7.
bind 함수의 매개변수에서 선언된 구조체 sockaddr는 주소정보에 해당하는 IP주소와 PORT번호를 할당하기가 쉽지 않은 구조이다. 그래서 IP주소와 PORT번호의 할당이 용이한 구조체 sockaddr_in이 정의되었다. 구조체 sockaddr_in의 멤버에 IP주소와 PORT번호를 할당하면, 이 구조체 변수의 바이트 열은 구조체 sockaddr과 동일한 형태의 바이트 열이 구성된다. 때문에 구조체 sockaddr를 대신해서 구조체 sockaddr_in을 사용할 수 있는 것이다. 


답안 8.
시스템에 따라서 값을 표현(저장)하는 방법이 빅 엔디안 방식과 리틀 엔디안 방식으로 나뉜다. 빅 엔디안은 상위 바이트의 값을 작은 번지수에 저장하는 방식이고, 리틀 엔디안은 하위 바이트의 값을 작은 번지수에 저장하는 방식이다. 이렇듯 값의 표현방식이 다르기 때문에 네트워크를 통한 데이터의 송수신에 기준이 마련되었으며, 이를 가리켜 '네트워크 바이트 순서'라 한다. 그리고 네트워크 바이트 순서에서는 데이터 송수신의 기준을 빅 엔디안 방식으로 고정하고 있다. 

 

 


답안 9.
네트워크 바이트 순서의 기준이 '빅 엔디안'이므로, 빅 엔디안을 사용하는 컴퓨터는 메모리 공간에 저장되어 있는 순서 그대로 4바이트 정수 12를 네트워크를 통해서 전송한다. 그러나 데이터를 수신하는 컴퓨터는 리틀 엔디안을 사용하므로 전송된 데이터를 리틀 엔디안의 형태로 변환한 다음에 메모리 공간에 저장한다.

 


답안 10.
루프백 주소는 컴퓨터 자신을 의미하는 주소로 그 값은 127.0.0.1로 약속되어 있다. 때문에 루프백 주소인 127.0.0.1로 데이터를 전송하면, 전송된 데이터는 데이터를 전송한 컴퓨터로 수신이 된다. 


728x90
그리드형

댓글