22FW IOT 중간

강준호·2024년 4월 24일
0

IOT

목록 보기
11/13

IOT?

  • 사물인터넷이란 사물, 컴퓨터, 공간 등이 연결되어 정보를 생성, 수집 공유 활용하는 초연결 인터넷

subnet의 IPv4 주소 대역을 203.253.1.0/24 로 표기할 때 24의 의미는?

  • IP 주소 중 상위 24비트가 network ID 를 의미

shutdown() 함수의 역할

  • 소켓을 종료할 때 상대방을 배려하여 입력 또는 출력 스트림 하나만을 종료, half-close 또는 우아한 종료라 부름

socket option중 reuseaddr가 필요한 이유 ? 만일 그 옵션=0 (사용 안함)으로 할 경우 어떤 문제가 발생하는가 ?

  • reuseaddr 를 사용하면 기존 사용중이던 ip, 포트 주소를 bind 함수에서 바로 재할당해서 사용할 수 있다.
  • 만약 옵션 =0 사용안함으로 할경우 기존 소켓 프로그램 종료 후 바로 그 소켓 프로그램을 다시 실행할때 time wait 때문에 bind 에러가 발생할 수 있다.

linux 소켓 프로그램과 윈도우 소켓 프로그램 차이점 4가지 ?

  • 윈도우에서는 WSAStartup / WSACleanUp 함수가 필요하다.
  • 자료형을 윈도우 스타일로 바꿔야한다.
  • read/write 대신 recv, send 함수 사용해야한다.
  • close 대신 closesocket 함수사용해야한다.
  • header file 수정해야한다.

in_addr_t inet_addr(const char * string) 함수의 역할은 ? 입력 argument와 return 값이 무엇인지 각각 설명하세요

in_addr_t inet_addr(const char * string)

  • 문자열 주소정보를 네트워크 바이트 순서(빅엔디안) 으로 표현한 정수 변환

그림 1에서 26번줄 socket 함수, 35번줄 bind 함수, 38번 listen 함수, 45번줄 accept 함수, 57번줄 close 함수의 기능을 각각 1-2줄로 설명하시오. 그림 2에서 32번줄 connect 함수 기능을 1-2줄로 설명하세요.

socket 함수

  • 프로토콜 관련 정보를 받아 소켓을 생성하고 소켓 fd 를 return 한다.
  • 소켓은 IPv4 프로토콜을 사용하며, SOCK_STREAM 으로 TCP 소켓이다.

bind 함수

  • 생성한 소켓에 주소 정보(serv_adr) IP, 포트번호를 할당한다.

listen 함수

  • 해당 소켓을 연결요청가능한 상태로 변경하며, 연결 요청 대기열 공간을 만들어준다.
  • 숫자 5는 대기열에 넣을 수 있는 연결 수

accept 함수

  • 클라이언트의 연결 요청을 받아들이고, 해당 클라이언트와 데이터 송수신을 담다할 클라이언트용 소켓을 생성

close 함수

  • 통신이 모두 끝나서 소켓이 소멸한다

connect 함수

  • 클라이언트에서 서버에게 연결 요청을 보낸다.

그림 1 38번 listen 함수, 45번줄 accept 함수, 그림 2 connect 함 수들사이 종속관계를 설명하시오. (예를 들어, connect 함수 수행전 listen 함수, accept 함수 둘 다 반드시 수행되어야 하나 ?)

  • connect 함수가 수행되기 전에 listen 함수가 실행되어야한다. listen 함수로 서버가 연결요청 가능한 상태로 바뀌어야 3-way 핸드쉐이크가 이루어질 수 있다. 그 후에 클라이언트는 connect 함수로 연결을 신청하고 연결요청을 accept 함수로 수락한다.
  • accept 함수는 connect 함수 수행 전 or 후 에 해도 되지만, 연결에 성공하려면 connect 함수 다음에 사용해야한다.

그림 1의 32번줄, 33번줄 htonl, htons 함수의 기능은 무엇인가 ?

htonl

  • long 형의 호스트 바이트 순서의 주소를 long 형의 네트워크 바이트 순서로 변환하는 함수

htons

  • short형의 호스트 바이트 순서의 주소를 short 형의 네트워크 바이트 순서로 변환하는 함수

그림 1의 32번줄 argument인 INADDR_ANY의 의미는 ? (host IP를 argument로 입력한 것과 차이점을 설명)

  • INADDR_ANY 는 소켓을 호스트 시스템에서 사용 가능한 모든 IP 주소에 자동으로 바인딩되는 기능이다.
  • host IP 를 argument 로 입력하면 특정 IP 주소에 대한 연결만 허용합니다

그림 1에서 보면 두 종류의 소켓이 사용된다. 각각 언제 생성되는지, 각 소켓의 용도를 설명하시오.

serv_sock

  • socket 함수 호출 후 리스닝 소켓이 생성된다. 이는 connection 요청을 관리하는 용도로 사용되는 소켓이다.

clnt_sock

  • accept 했을때 생성되는 소켓으로 클라이언트와 데이터 송수신을 주고받기 위한 소켓이다.

그림 1과 2를 수행하면 TCP 3way handsaking 과정이 일어난다. 코드상에서 보면 어느 부분에서 시작되는지, 수행되는 3단계 handsaking 과정을 설명하시오.

  • 그림 2 에서 클라이언트가 connect() 요청을 서버에 보내고 서버가 이를 accept() 으로 받을때 핸드쉐이크가 발생한다.
  • 클라이언트가 connect() 로 SYN 을 보내고 서버가 accept() 로 SYN+ACK 를 보내고 클라이언트가 마지막으로 ACK 를 보내면서 커넥션이 맺어진다.

그림 1의 TCP 기반 서버 프로그램을 UDP기반 서버 프로그램으로 바꾸려고 한다. 소켓 함수들 관점에서 바뀌는 내용을 설명하시오.

  • 서버 소켓을 생성할때 SOCK_STREAM 에서 SOCK_DGRAM 으로 변경된다.
  • 또 기존 서버 소켓의 listen 및 accept() 함수가 제거. read 함수는 recvfrom 으로 교체, write 함수는 sendto 함수로 교체.
  • 클라이언트도 connect() 사라지고 소켓 생성 후 recvfrom, sendto 만 사용

서버에 있는 파일을 클라이언트에 전송하는 서버 및 클라이언트 소켓 프로그램 작성하기.

웹서버 와 웹브라우저간의 인터넷 동작에 대한 질문이다.

그림 3을 보면, 어떤 학교망에서 노트북으로 네트워크로 무선 접속한 뒤, 웹브라우저를 통해 구글 웹서버에 접속하여 웹서비스를 받으려고 한다. 노트북를 위한 동적 IP 할당부터, 웹 서비스 요청에서 웹서버 응답을 받을 때까지 진행되는 과정을 링크 계층부터 응용계층까지 포함 하여 단계별로 설명하시오. 각 과정에서 프로토콜 동작과정을 구체적으로 설명하시오(ARP, DHCP, DNS, HTTP, TCP).

  1. 노트북이 학교네트워크에 연결, DHCP서버로부터 IP 주소를 동적 할당받는다. DHCP 요청에 UDP 헤더를 추가, 링크 계층에서 이더넷 프레임을 LAN 에서 브로드캐스팅. DHCP 서버는 이더넷 프레임을 수신, 그 안의 IP datagram, UDP datagram 을 추출후 DHCP 요청을 확인한다. DHCP 서버가 ACK 를 보내면서 client 에 할당하는 IP 주소, 첫번째 router 주소, DNS 서버이름과 IP 주소를 return 한다.

  2. www.google.com IP주소를 DNS서버에 요청하여 받아온다. 자신의 캐시에 구글의 IP 가 있다면 캐시를 사용하고, 없다면 DNS서버에 IP 를 요청한다.

2-1) 노트북 웹브라우저에서 만들어진 패킷이 인터넷으로 전달되려면 우선 router 로 보내야한다. 노트북과 first router 는 같은 서브넷 안에 있음으로 MAC주소를 이용하여 first router 로 패킷이 전송된다. 우선

  1. 노트북 웹 브라우저는 구글 웹서버 IP 주소 에 3way 핸드쉐이크 요청을 보내고
    완료되면 나면 TCP 커넥션을 맺는다. 만약 2.에서 구글 IP 를 캐시에서 가져왔다면 TCP 커넥션을 맺기전에 ARP 프로토콜을 적용하여 first router 의 MAC 주소를 받아와야한다.

  2. HTTP 요청(GET)을 담은 패킷이 구글 웹서버에 전달. 구글 웹서버는 웹 브라우저에 HTTP 응답을 보낸다. 웹브라우저는 화면에 결과를 보여준다.

MQTT 프로토콜 구조 및 동작방법을 설명하시오 (메시지 송신/중 계/수신하는 구조, 메시지 구분 하는 주소 사용 방법)

  • 메세지를 송신하는 publisher , 메세지를 수신하는 subscriber, 둘 사이 중계하는 broker로 구성. 메세지를 구분하는 주소로 topic 을 사용.
  • 각 subscriber는 수신을 원하는 topic을 broker에 등록. publisher 가 메세지를 broker에 등록.
  • publisher 가 메세지를 브로커에게 전달하면 브로커는 그 토픽을 사전 등록한 subscriber 에 전달

MQTT에서는 client와 서버사이 메시지 전송함에 있어서 기본적인 QoS 기능을 지원한다. QoS 3 종류(0, 1, 2)를 설명하시오.

  • 0: 많아야 한번 전송. 수신 보장 못함
  • 1 : 최소 한번. ACK 가 없으면 재전송. 수신 보장
  • 2 : 정확하게 한번 전송. 수신보장

그림 4 프로토콜 스택을 보면 6LoWPAN 프로토콜이 adaption layer 역할을 담당한다. 왜 그 역할이 필요한지를(배경) 설명하세요.

  • IEEE 802.15.4 프레임의 크기는 최대 127 바이트인 반면에 상위 IPv6 는 최대 MTU 크기가 1280 바이트임. 이 둘 사이 차이를 절충하는 역할을 담당한다.

6LowPAN 프로토콜의 주요 기능 3가지를 나열하시오.

  • 패킷 헤더 압축
  • 패킷 파편화, 구조화
  • 라우팅

Bluetooth와 Bluetooth smart 차이점을 설명하시오 (에너지 절약관 점, 연결유형관점, 응용관점)

블루투스 스마트

  • 블루투스 스마트 연결유형은 1:n 또는 n:m
  • 숏 버스트 커넥션 응용

블루투스

  • 블루투스 연결유형은 1:1
  • 지속적인 커넥션 응용

0개의 댓글

관련 채용 정보