방프리

20.02.24 TCP/IP 연습문제 Chapter 04 본문

Server&Network/TCP&IP

20.02.24 TCP/IP 연습문제 Chapter 04

방프리 2020. 2. 24. 12:19

01. TCP/IP 프로토콜 스택을 4개의 계층으로 구분해보자. 그리고 TCP 소켓이 거치는 계층구조와 UDP 소켓이 거치는 계층구조의 차이점을 설명해보자.

  • 프로토콜 스택은 Application 계층, TCP/UDP 계층, IP 계층, 그리고 LINK 계층으로 나뉜다. TCP 소켓과 UDP 소켓이 거치는 계층구조는 같으니 단지 TCP 계층인지 UDP 계층으로 가는지만 다를 뿐이다.

 

02. TCP/IP 프로토콜 스택 중에서 LINK 계층과 IP 계층이 담당하는 역할이 무엇인지 설명해보자. 그리고 이 둘의 관계도 함께 설명해보자.

  • LINK는 물리적인 영역이다. 예를 들어 LAN, WAN, MAN과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역이고, IP 계층은 목적지로 데이터를 전송하기 위한 중간 경로 역할을 한다.

 

03. TCP/IP 프로토콜 스택을 4개의 계층(또는 7개의 계층)으로 나누는 이유는 무엇인가? 이를 개방형 시스템에 대한 설명과 함께 답해보자.

  • 영역을 나누어 세분화를 시켜 표준화를 시키기 위함이다. 그러면 어떠한 문제가 발생했을 때 어느 시점에서 문제가 일어났는지 바로 찾고 대응할 수 있고, 모든 사람들이 시스템을 설계할 때에도 표준을 따르기 때문에 새로운 것을 도입하거나 장비를 교체할 때에도 문제없이 진행할 수 있다.

 

04. 클라이언트는 connect 함수호출을 통해서 서버로의 연결을 요청한다. 그렇다면 클라이언트는 서버가 어떠한 함수를 호출한 이후부터 connect 함수를 호출할 수 있는가?

  • listen 함수

 

05. 연결요청 대기 큐라는 것이 생성되는 순간은 언제이며, 이것이 어떠한 역할을 하는지 설명해보자. 그리고 accept 함수와의 관계도 함께 설명해보자.

  • 연결 요청 대기 큐는 listen 함수가 호출되면 생성이 되고, 이 대기 큐는 클라이언트에서 보낸 연결요청을 받아 큐에 삽입시킨 후 수행할 때까지 대기시킨다. 이후 대기 큐에 있는 클라이언트의 요청은 accept 함수를 통해 수락이 진행되며 호출 성공시 클라이언트와 연결이 이루어진다.

 

06. 클라이언트 프로그램에서 소켓에 주소정보를 할당하는 bind 함수호출이 불필요한 이유는 무엇인가? 그리고 bind 함수를 호출하지 않았을 경우, 언제 어떠한 방식으로 IP주소와 PORT번호가 할당되는가?

  • connect 함수 호출 시 자동으로 소켓에 클라이언트의 IP 및 PORT가 할당된다. 그러므로 명시적으로 bind 함수를 호출 할 필요는 없다.

 

07. Chapter 01에서 구현한 예제 hello_server.c와 hello_server_win.c를 Iterative 모델로 변경하고, 제대로 변경이 되었는지 클라이언트와 함께 테스트해보자.

윈도우 서버 

윈도우 클라이언트

 

Comments