일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- BOJ
- N-Queen
- 그리디 알고리즘
- 손실함수
- REST API
- 파이싼
- 기계학습
- pyenv
- Retrieval
- 백준
- end to end
- 신경망 학습
- 15649
- Python
- 백트래킹
- 경사하강법
- n과 m
- 오블완
- 밑바닥부터 시작하는 딥러닝
- 가상환경
- 재귀
- 티스토리챌린지
- 4948
- video retireval
- 9020
- 1101
- streamlit
- 개발환경
- 1002
- 파이썬
- Today
- Total
파이톨치
[IoT] 연습 문제 본문
1. 질문에 답하시오.
(1) IoT란?
Internet of Things, 물건들이 인터넷에 연결되어서 정보 생성, 수집, 공유, 활용함.
(2) 어떤 subnet의 IPv4 주소 대역을 203.253.1.0/24로 표기할 때 24의 의미는?
?
(3) TCP demultiplexing과 UDP의 demultiplexing의 차이점은?
(도착한 패킷을 수신 host내 어느 소켓으로 보낼 지를 결정하는데 사용되는 주소 set이 다르다 - 출발지 IP#, 출발지 Port#, 도착지 IP#, 도착지 Port#. 구체적으로 설명) 멀티 플렉싱은 트랜스포트 레이어에서 여러 소켓의 데이터들을 처리하는 과정 (트랜스포트 헤더에 추가)
TCP는 연결 지향이다.
(4) 패킷 캡슐화는?
3계층에서 아래 계층으로 내려갈 때, 헤더들이 패킷에 추가되는 것을 말한다.
(5) shutdown() 함수의 역할은?
우아한 종료라고 부르며, 소켓을 종료할 때 입력 또는 출력 스트림 하나만을 종료한다.
(6) socket option중 reuseaddr가 필요한 이유 ? 만일 그 옵션=0 (사용안함)으로 할 경우 어떤 문제가 발생하는가 ?
time wait 때문에 소켓이 남아 있을 수 있기 때문에 필요하다. 옵션=0으로 할 경우, 소켓 프로그램 종료 후에 다시 실행하는 경우 바인드 에러 생긴다.
(7) linux 소켓 프로그램과 윈도우 소켓 프로그램 차이점 4가지 ?
이걸 알아야 해? 함수 관점이다.
(8) in_addr_t inet_addr(const char * string) 함수의 역할은 ? 입력 argument와 return 값이 무엇인지 각각 설명하세요
string 형태의 주소를 네트워크 바이트 순서로 변환
2. 예제 해석
(1) 그림 1에서 26번줄 socket 함수, 35번줄 bind 함수, 38번 listen 함수, 45번줄 accept 함수, 57번줄 close 함수의 기능을 각각 1-2줄로 설명하시오. 그림 2에서 32번줄 connect 함수 기능을 1-2줄로 설명하세요.
(2) 그림 1 38번 listen 함수, 45번줄 accept 함수, 그림 2 connect 함수들사이 종속관계를 설명하시오. (예를 들어, connect 함수 수행전 listen 함수, accept 함수 둘 다 반드시 수행되어야 하나 ?)
listen은 먼저 수행되어야 한다. 그 뒤로 connect나 accept가 수행되어야 한다.
(3) 그림 1의 32번줄, 33번줄 htonl, htons 함수의 기능은 무엇인가 ?
htonl은 long형 호스트 바이트 순서를 네트워크 바이트 순서로 변환해주고, htons는 short형 호스트 바이트 주소를 네트워크 바이트 주소로 바꾸어 준다.
(4) 그림 1의 32번줄 argument인 INADDR_ANY의 의미는 ? (host IP를 argument로 입력한 것과 차이점을 설명)
어떤 host의 IP가 들어와도 모두 수용하겠다는 의미다. argumnet로 입력을 해주면 특정 IP로 오는 경우만 수신한다.
(5) 그림 1에서 보면 두 종류의 소켓이 사용된다. 각각 언제 생성되는지, 각 소켓의 용도를 설명하시오.
클라이언트 소켓과 서버 소켓이 있는데. 소켓 함수 호출 후에 서버 소켓이 생성되며, connection 요청을 관리하는 용도로 사용한다. accept 함수 호출 후 클라이언트 소켓이 생성된다. 해당 클라이언트와 송수신 담당한다.
(6) 그림 1과 2를 수행하면 TCP 3way handsaking 과정이 일어난다. 코드상에서 보면 어느 부분에서 시작되는지, 수행되는 3단계 handsaking 과정을 설명하시오.
먼저, 클라이언트 코드에서 connect 함수를 실행하면 SYN을 보내고, 서버가 accept 함수를 실행하면 SYN+ACK를 보내고 마지막으로 클라이언트가 ACK를 보내면서 connection이 맺어짐.
(7) 그림 1의 TCP 기반 서버 프로그램을 UDP기반 서버 프로그램으로 바꾸려고 한다. 소켓 함수들 관점에서 바뀌는 내용을 설명하시오.
SOCK_DGRAM으로 변경하고, recv_from, send_to 함수로 변경하고, listen accept 없앤다.
3. 서버에 있는 파일을 클라이언트에 전송하는 서버 및 클라이언트 소켓 프로그램 작성하기.
그림 1과 2 코드 사용할 수 있다고 하자. 코드 추가/수정하기(예: 답안지에 “그림 1의 1번줄 ~ 33번줄 코드 사용” 표기, 그 밑에 본인의 코드 추가) - 서버와 클라이언트 간의 1:1 통신으로 가정 - 클라이언트는 사용자로부터 전송받을 파일의 이름을 입력받는다 - 클라이언트는 서버에게 해당 파일 이름을 전송한다 (파일전송 요청) - 서버내 그 파일이 존재할 경우 서버는 파일을 전송하고, 파일이 존재하지 않을 경우 연결을 종료한다. - 파일크기는 버퍼의 크기(예:1024)를 초과하지 않는다고 가정 - 아래 C언어 표준 파일 입출력함수를 사용 (check empty file 및 flush for stdout buffer 동작 필요없다고 가정, fseek, fflush 불필요)
FILE *fopen(const char *path, const char *mode);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
int fclose(FILE *fp);
4. 웹서버와 웹브라우저간의 인터넷 동작에 대한 질문이다. (이거 배웠나?)
그림 3을 보면, 어떤 학교망에서 노트북으로 네트워크로 무선 접속한 뒤, 웹브라우저를 통해 구글 웹서버에 접속하여 웹서비스를 받으려고 한다. 노트북를 위한 동적 IP 할당부터, 웹 서비스 요청에서 웹서버 응답을 받을 때까지 진행되는 과정을 링크 계층부터 응용계층까지 포함하여 단계별로 설명하시오. 각 과정에서 프로토콜 동작과정을 구체적으로 설명하시오(ARP, DHCP, DNS, HTTP, TCP).
5. IoT를 위한 프로토콜에 대한 질문이다.
(1) MQTT 프로토콜 구조 및 동작방법을 설명하시오 (메시지 송신/중계/수신하는 구조, 메시지 구분 하는 주소 사용 방법)
(2) MQTT에서는 client와 서버사이 메시지 전송함에 있어서 기본적인 QoS 기능을 지원한다. QoS 3 종류(0, 1, 2)를 설명하시오.
(3) 그림 4 프로토콜 스택을 보면 6LoWPAN 프로토콜이 adaption layer 역할을 담당한다. 왜 그 역할이 필요한지를(배경) 설명하세요.
(4) 6LowPAN 프로토콜의 주요 기능 3가지를 나열하시오.
(5) Bluetooth와 Bluetooth smart 차이점을 설명하시오 (에너지 절약관점, 연결유형관점, 응용관점)