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).
-
노트북이 학교네트워크에 연결, DHCP서버로부터 IP 주소를 동적 할당받는다. DHCP 요청에 UDP 헤더를 추가, 링크 계층에서 이더넷 프레임을 LAN 에서 브로드캐스팅. DHCP 서버는 이더넷 프레임을 수신, 그 안의 IP datagram, UDP datagram 을 추출후 DHCP 요청을 확인한다. DHCP 서버가 ACK 를 보내면서 client 에 할당하는 IP 주소, 첫번째 router 주소, DNS 서버이름과 IP 주소를 return 한다.
-
www.google.com IP주소를 DNS서버에 요청하여 받아온다. 자신의 캐시에 구글의 IP 가 있다면 캐시를 사용하고, 없다면 DNS서버에 IP 를 요청한다.
2-1) 노트북 웹브라우저에서 만들어진 패킷이 인터넷으로 전달되려면 우선 router 로 보내야한다. 노트북과 first router 는 같은 서브넷 안에 있음으로 MAC주소를 이용하여 first router 로 패킷이 전송된다. 우선
-
노트북 웹 브라우저는 구글 웹서버 IP 주소 에 3way 핸드쉐이크 요청을 보내고
완료되면 나면 TCP 커넥션을 맺는다. 만약 2.에서 구글 IP 를 캐시에서 가져왔다면 TCP 커넥션을 맺기전에 ARP 프로토콜을 적용하여 first router 의 MAC 주소를 받아와야한다.
-
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
- 지속적인 커넥션 응용