방프리

20.02.14 TCP/IP 연습문제 Chapter 01 본문

Server&Network/TCP&IP

20.02.14 TCP/IP 연습문제 Chapter 01

방프리 2020. 2. 14. 05:48

1. 네트워크 프로그래밍에서 소켓이 담당하는 역할은 무엇인가? 그리고 소켓이라는 이름이 붙은 이유는 어디에 있는가?

  • 물리적으로 연결된 네트워크상에서의 데이터 송수신에 사용할 수 있는 소프트웨어적인 장치를 의미
  • 연결이라는 의미

 

2. 서버 프로그램에서는 소켓생성 이후에 listen 함수와 accept 함수를 차례대로 호출한다. 그렇다면 이들의 역할은 각각 무엇인지 비교해서 설명해보자.

  • 전화기로 빗대었을 때 사용자가 전화를 걸 대상의 전화번호를 알아내는 것이 listen, 그리고 전화를 받을 대상자가 현재 전화를 받은 상태가 accept이다.

 

3. 리눅스의 경우 파일 입출력 함수를 소켓 기반의 데이터 입출력에 사용할 수 있다. 반면 윈도우에서는 이것이 불가능하다. 그렇다면 리눅스에서는 가능하고, 윈도우에서는 불가능한 이유는 무엇인가?

  • 리눅스에서는 소켓을 파일의 일종으로 구분한다. 하지만 윈도우의 경우엔 파일과 소켓을 구분하기 때문에 사용할 수 없다.

 

4. 소켓을 생성한 다음에는 주소할당의 과정을 거친다. 그렇다면 주소할당이 필요한 이유는 무엇이며, 이를 목적으로 호출하는 함수는 또 무엇인가?

  • 주소를 할당받아야지만 연결하고자 하는 대상에게 데이터를 보낼 장소를 알려줄 수 있다. bind() 함수를 통해 할당받는다.

 

5. 리눅스의 파일 디스크립터와 윈도우의 핸들이 의미하는 바는 사실상 같다. 그렇다면 이들이 의미하는 바가 무엇인지 소켓을 대상으로 설명해보자.

  • 리눅스의 파일 디스크립터는 파일을 구분하고 지칭할 목적으로 파일에 부여된 정수 값이다. 리눅스의 파일 디스크립터와 윈도우의 핸들은 소켓을 구분하고 지정하는 목적으로 소켓에 부여된 정수 값이다.

 

6. 저 수준 파일 입출력 함수와 ANSI 표준에서 정의하는 파일 입출력 함수는 어떠한 차이가 있는가?

  • 저 수준 파일 입출력 함수는 운영체제가 독립적으로 제공하는 함수. 즉, 리눅스에서 제공하는 함수들이다.

7. 본문에서 보인 예제 low_open.c 와 low_read.c를 참조하여 파일 복사 프로그램을 작성하되, 저 수준 파일 입출력 함수를 기반으로, 그리고 ANSI표준 입출력 함수를 기반으로 각각 한번씩 작성해보자. 그리고 복사 프로그램의 사용방법은 여러분이 임의로 결정하기 바란다.

[저 수준 파일 입출력]

[ANSI 표준]

Comments