본문 바로가기
728x90

IT/데이터베이스_네트워크30

윤성우의 열혈 tcp/ip 소켓 프로그래밍 14장 연습문제 솔루션 답 안 1. TTL이란 Time to Live의 약자로써 '패킷을 얼마나 멀리 전달할 것인가'를 결정하는 주 요소가 된다. TTL은 정수로 표현되며, 이 값은 라우터를 하나 거칠 때마다 1씩 감소한다. 그리고 이 값이 0이 되면 패킷은 더 이상 전달되지 못하고 소멸된다. 따라서 TTL을 크게 설정하면 네트워크 트래픽에 좋지 못한 영향을 줄 수 있으며, 너무 적게 설정하면 목적지에 도달하지 않는 문제가 발생할 수 있다. 답 안 2 멀티캐스트와 브로드캐스트의 공통점은 둘 다 방송의 형태로 데이터를 전송한다는 것이다. 즉, 한번의 데이터 전송으로 둘 이상의 호스트에 데이터를 전송할 수 있다. 그러나 전송의 범위를 구성하는 방법에는 차이가 있다. 브로드캐스트는 네트워크 중심의 방송이다. 그러나 멀티캐스트는 그룹.. 2021. 5. 23.
윤성우의 열혈 tcp/ip 소켓 프로그래밍 13장 연습문제 솔루션 답 안. 문 제 1. b, c 문 제 2. readv & writev 함수는 둘 이상의 공간에 나뉘어서 저장되어 있는 데이터를 모아서 한번에 전송하거나 수신할 때 사용하는 함수이다. 이 둘을 이용하면 입출력 버퍼로의 데이터 송수신을 한번에 진행할 수 있기 때문에 보다 효율적인 데이터의 송수신이 가능하다. 그리고 입출력 함수의 호출횟수도 그만큼 줄기 때문에 그로 인한 이점도 더불어 생긴다. 문 제 3. MSG_PEEK옵션과 MSG_DONTWAIT옵션을 조합해야 한다. MSG_PEEK 옵션이 지정되면 입력버퍼에 존재하는 데이터를 읽어 들이되, 읽어 들인 데이터를 입력버퍼에서 지우지 않으며, MSG_DONTWAIT 옵션은 입력버퍼에 데이터가 존재하지 않아도 바로 반환하는 기능의 옵션이다. 문 제 4. MSB_.. 2021. 5. 23.
윤성우의 열혈 tcp/ip 소켓 프로그래밍 11장 연습문제 솔루션 답 안. 문 제 1. 멀티플렉싱이란 최소한의 물리적인 요소만 사용해서 최대한의 데이터를 전송하는 기술이다. 마찬가지로 IO 멀티플렉싱이란 IO를 필요로 하는 소켓을 한데 묶어서 최소한의 리소스 및 프로세스를 이용해서 데이터를 송수신하는 기술을 의미한다. 문 제 2. 멀티프로세스 기반의 동시접속 서버는 클라이언트가 연결요청을 해 올 때마다 추가로 프로세스를 생성해서 서비스를 하는 방식이다. 그런데 프로세스의 생성은 매우 부담이 되는 작업이기 때문에 많은 수의 클라이언트에게 서비스를 제공하는 데는 한계가 있다. 반면 멀티플렉싱 서버는 소켓의 파일 디스크립터를 하나로 묶어서 관리하는 방식으로, 하나의 프로세스가 이를 모두 처리하기 때문에 프로세스의 생성에 대한 리소스 소모가 없다. 문 제 3 b, c 문 제 .. 2021. 5. 23.
윤성우의 열혈 tcp/ip 소켓 프로그래밍 10장 연습문제 솔루션 답 안. 문 제 1. 개념적으로 프로세스간 통신은 두 프로세스 사이에서 데이터를 주고 받는 것을 의미한다. 그러나 메모리의 관점에서 보면 이는 두 프로세스가 메모리를 공유하는 것으로 이해할 수 있다. 공유하는 메모리 영역이 존재함으로 인해서 프로세스 상호간에 데이터를 전달할 수 있기 때문이다. 문 제 2. IPC를 위해서는 공유되는 메모리가 필요한데, 프로세스간에는 메모리 공간을 공유하지 않기 때문에 운영체제의 도움이 필요하다. 즉, 두 프로세스가 동시에 접근 가능한 메모리 영역을 운영체제가 제공해야 하는 것이다. 문 제 3 a. 파이프는 pipe 함수의 호출에 의해서 생성되는데, 이를 실제로 생성하는 주체는 운영체제이다. b. pipe 함수호출에 의해서 파이프가 생성되면, 파이프에 데이터를 입출력 하기.. 2021. 5. 23.
윤성우의 열혈 tcp/ip 소켓 프로그래밍 10장 연습문제 솔루션 문 제 1. c, d 문 제 2. a, c, d 문 제 4 좀비가 되는 프로세스는 자식 프로세스이다. 자식 프로세스 종료 시 인자로 전달 및 반환하는 값은 운영체제로 넘어가는데, 이 값이 자식 프로세스의 부모 프로세스에게 전달될 때까지 해당 자식 프로세스는 좀비가 된다. 따라서 이를 막기 위해서는 부모 프로세스가 자식 프로세스의 종료 값을 명시적으로 요청해야 하며, 이 값이 부모 프로세스에게 전달되고 나면 자식 프로세스는 소멸이 되어서 좀비로 남아있지 않게 된다. 2021. 5. 23.
윤성우의 열혈 tcp/ip 소켓 프로그래밍 9장 연습문제 솔루션 문 제 1. a, c, d 문 제 2 전송하는 데이터의 특성에 따라서 Nagle 알고리즘의 적용 여부에 따른 트래픽의 차이가 크지 않으면서도 Nagle 알고리즘을 적용하는 것보다 데이터의 전송이 빠른 경우가 Nagle 알고리즘의 해제를 고민할 만한 상황이다. 그리고 이러한 상황은 한 세션 내에서(한 번 연결될 때마다), 전송해야 할 데이터의 양이 많은 경우에 발생한다. 출력버퍼로 전달되는 데이터의 양이 많으면, Nagle 알고리즘의 적용 여부에 상관없이 충분히 버퍼링 되어서 데이터가 전달되기 때문이다. 2021. 5. 23.
윤성우의 열혈 tcp/ip 소켓 프로그래밍 8장 연습문제 솔루션 답안 1. b, d, 답안 2. 네트워크상에서의 특별한 제한이 없다면, 로컬 네트워크로 연결된 DNS 서버를 반드시 디폴트 DNS 서버로 지정해야 하는 것은 아니다. 따라서 동수가 제안한 방법은 해결책이 될 수 있다. 즉, 정수는 PC방으로 달려가지 않아도 된다. 답안 3. 1. 호스트의 컴퓨터는 디폴트 DNS 서버에게 IP주소를 물음 2. 디폴트 DNS 서버는 IP주소 정보를 가지고 있지 않으므로, 상위 DNS 서버에게 질의 전달! 3. 디폴트 DNS 서버는 IP주소 정보를 상위 DNS 서버로부터 수신 4. 디폴트 DNS 서버는 IP주소 정보를 호스트에게 전달 5. 웹 브라우저는 전달받은 IP주소를 참조하여 서버에 접속 2021. 5. 23.
윤성우의 열혈 tcp/ip 소켓 프로그래밍 7장 연습문제 솔루션 답안 1. TCP에서의 스트림 형성은 두 소켓이 서로 연결되어서 데이터를 송수신할 수 있게 된 상태를 의미한다. 그리고 UDP의 경우는 스트림의 형성과정이 존재하지 않는다. 두 소켓이 서로 연결된 상태에 놓이지 않기 때문이다. 답안 2. 일방적인 종료는 소켓을 완전히 종료시켜서 데이터의 송수신이 모두 불가능한 상태로 만드는 것을 의미한다. 보통 자신이 전송할 데이터를 전부 전송한 다음에 일방적인 종료를 하게 되는데, 만약에 상대방이 전송할 데이터가 남아 있는 경우에는 문제가 될 수 있다. 답안 3. Half-close란 입력 스트림과 출력 스트림 둘 중 하나만 종료하는 것을 의미한다. 그리고 출력 스트림에 대해서 Half-close를 진행하면, 상대 호스트로는 EOF가 전송되고, Half-close를 진.. 2021. 5. 23.
윤성우의 열혈 tcp/ip 소켓 프로그래밍 6장 연습문제 솔루션 답안 1. UDP는 TCP와 달리 흐름제어를 진행하지 않는다. 이 흐름제어는 소켓의 연결과 종료, 그리고 데이터 송수신 전반에 걸쳐서 진행되기 때문에 TCP의 데이터 전송은 언제나 신뢰할 수 있다. 반면 UDP는 이러한 흐름제어를 진행하지 않으니, 데이터의 전송을 신뢰할 수 없다. 하지만 UDP는 흐름제어를 진행하지 않기 때문에 TCP보다 빠른 데이터의 송수신이 가능하다는 이점이 있다. 답안 2 b, c, e 답안 3 IP는 목적지 호스트로의 데이터 전달을 담당한다. 반면 UDP는 목적지 호스트에 전달된 데이터의 PORT번호를 확인해서 최종 목적지인 소켓으로의 데이터 전달을 담당한다. 답안 4 UDP는 TCP와 달리 두 소켓간의 연결 및 연결해제의 과정을 거치지 않는다. 때문에 매우 빈번한 연결 및 연결.. 2021. 5. 23.
728x90