Network
13개의 글
OSI 7 계층 OSI는 Open System Interconnection 의 약자로, 국제 표준 기구인 ISO에서 만든 계층을 의미한다. 각각의 레이어를 모듈화하여 독립적으로 작동하게 하였고, 따라서 계층별로 수정 등에 용이하다. 1계층은 Physical 즉 물리 계층인데, 실제로 데이터를 물리적 전기 신호로 바꾸어서 전송해주는 역할을 한다. 전기 신호이므로 1과 0으로 이루어져있다. 2계층은 Datalink 계층으로, 가공되지 않은 내용의 전송을 담당하는 물리층을 신뢰성 있는 링크로 변환시켜 주고 노드 간 전송을 해준다. 3계층은 Network 계층으로, 우리가 쓰는 IP가 이에 해당한다. 패킷을 여러 통신망을 통해 목적지로 전달해주는 역할을 한다. 4계층은 Transport 계층으로, TCP / U..
이 쿠키가 아닙니다. HTTP Stateless 저번에 포스팅했듯이, HTTP는 Connectionless 하며, Stateless 한 프로토콜이었다. 그러한 점들이 인터넷을 활용하는 데에 있어서 큰 문제점이었다. 쿠키와 세션은 그러한 문제점들을 해결하고자 나온 방법들이다. 인터넷에는 일반적으로 권한의 제한 없이 구할 수 있는 정보들도 있지만, 권한이 필요한 경우도 많다. 예를 들어 이메일을 확인한다던지, 회원제의 게시판을 이용한다는지의 경우에는 로그인 정보 가 필요하다. 그러나 HTTP는 Stateless이므로, 로그인 정보를 저장할 수가 없다. 만약 쿠키가 없었다면, 우리는 게시판 글 하나를 볼때마다 계속해서 로그인을 해주어야 했을지도 모른다.ex) 회원제 게시판에서 글 읽기 Request -> 서버..
HTTP HTTP 는 (HyperText Transfer Protocol) 의 약자이다. 인터넷 통신을 위해 사용되는 프로토콜이며, 우리가 웹브라우저를 통해 페이지들을 볼 수 있는 것도 모두 HTTP 덕분이다. HTML 뿐만 아니라 각종 이미지, 동영상, 음성 데이터 들도 전송이 가능하다. Server/Client 모델 HTTP는 Server/Client 모델이다. 프로토콜의 모델은 P2P나 서버/클라이언트 모델 등이 존재한다. 클라이언트는 우리가 사용하는 웹 브라우저 등의 어플리케이션이 해당하며, 흔히 프론트엔드 부분이라고 볼 수 있다.서버는 클라이언트로부터 요청을 받고, 그 요청을 처리하는 기능을 한다. 일반적으로 클라이언트는 서버에 요청 (Request) 을 하고, 서버는 그 요청에 대한 반응 (R..
Will Message ? 영어 단어 Will은 , 명사로 의지, 유언의 의미를 가지고 있다. MQTT에서 will은 의지가 아닌 유언의 뜻으로 사용된다. 클라이언트가 브로커에게 연결하고, will 메시지를 등록하면 비정상적으로 연결이 종료되었을 때에 해당 will 메시지를 발행하게된다. 사물인터넷 환경에서 연결이 항상 유지된다는 보장이 없기 때문에, 이러한 will 메시지를 통하여 디바이스가 연결이 종료되었다는 것을 확인하고 조치할 수 있다는 장점이 있다. 이 will 메시지는 클라이언트가 브로커에 연결 -> will topic/will message/will qos 전달을 완료한 후에, 브로커는 계속해서 클라이언트가 제대로 연결이 되어 있는지 주기적으로 확인하게 된다. (Keep Alive) 이 때에..
Retain Bit 위의 사진은 이전의 포스팅에서 다루었던 메시지 Fixed header이다. 위의 1바이트의 0번 비트를 보면, Retain 이라는 비트가 존재한다. 영어 단어의 뜻을 보자면, 유지하다, 함유하다 라는 뜻을 가지고 있다. MQTT에서 실제로 쓰이는 방식도 영어 본래의 뜻과 비슷하다. Retain bit가 1인 메시지를, Retained message라고 하자. 이 메시지는 계속해서 유지되는데, 토픽별로 메시지를 유지시킬 수 있다. 직접 Mosquitto로 한번 실험해보자. mosquitto 브로커를 실행한 상태에서, 위와 같이 해보자. 1. sub를 실행한다. localhost에 접속하여, /test 라는 토픽에 오는 메시지를 받도록 하였다.2. pub를 실행한다. localhost에 ..
Broker MQTT에서는 발행자와 구독자 사이에 브로커가 존재한다는 사실을 우리는 이미 안다. 이 브로커는 그 자체로 구독자이며, 발행자이기도 하다. 여러 프로그램들이 개발되었고, 배포되고 있으나 내가 사용할 프로그램은 Mosquitto이다. 모기가 여어로, mosquito 이다. t가 하나인데, MosQuiTTo 로 만들기 위해 의도적으로 t를 2개 쓴 것이 아닌가 싶다. 이런걸 보면 프로그래머들의 재치는 참, 대단하다. 브로커를 다운받고, 설치해보자. 모스키토 다운로드 페이지 위의 페이지에서 각자 운영 체제에 맞는 설치 파일을 받도록 하자. 윈도우의 경우, 실행하면 위와 같은 페이지가 뜬다. 두 링크르 따라 들어가서 필요한 파일들을 다운받자. OpenSSL은 Light 버전을, pthreads는 p..
Circuit Switching Circuit Switching? Call 을 위하여 end - end 사이의 resource를 예약해서 사용하는 방식. link의 bandwidth, switch capacity가 화두가 된다. link의 resource를 점유하고 있기 때문에, capacity를 넘어서면 다른 End가 사용할 수 없다. Circuit처럼 하나의 라인을 열어두고 거기에서 정보를 전달하기 때문에 보장된 통신이 가능하다. Call을 위한 Setup 작업이 필요하다.Three phases:Circuit establishment(call setup) - Data를 보내기 전에, end-to-end circuit을 연결해주는 작업이 필요함.Data transfer - Circuit이 구성되었으면,..
네트워크 기초 네트워크란 무엇인가?The interconnection of a set of devices capable to carry some information. (정보들을 전달할 수 있는 단말기들의 인터커넥션)Telephone network, Internet, cable network, ISDN 등이 있음.인터넷의 구성요소 Hosts = end systems네트워크 어플리케이션들을 실행함communication links두개나 혹은 그 이상의 nodes들을 직접(directly) 연결하는 물리적 수단. (link는 직접 연결에 등장)Fiber, Copper, radio, satellite 등 다양한 방식으로 연결됨 Transmission rate vs bandwidthRouter (switch)패..
QoS 란? QoS는 서비스의 질을 보장해주는 레벨을 의미한다. 사물인터넷은 무선의 네트워크 망에서 통신한다. 와이파이, 지그비, 블루투스 등을 사용하는데 이러한 통신망은 아무래도 유선 통신보다 불안정하다. 따라서 이러한 불안정함을 프로토콜 상에서 안정적으로 보내주기 위하여 QoS가 필요하다. QoS 레벨 그러나 통신을 할 때에 항상 완벽하게 보내야 할 필요는 없다. 때로는 보내져도 좋고, 안보내져도 상관 없는 경우도 존재한다. 따라서 QoS를 지켜야 할 정도를 등급(레벨)로 나누어서 구분하는데, MQTT에는 3가지 레벨로 정의한다. 위의 사진이 MQTT의 QoS 이다. QoS 레벨 0은 보내고 잊는다. 잊는다는 것은 저장하지 않는다는 뜻이다. 한번에 전송이 성공하지 않으면 전송은 실패한 상태로 끝이 난..
Fixed Header MQTT의 고정 헤더는 위의 사진과 같다. 1바이트가 고정 헤더라고 볼 수 있는데, 2바이트의 Remaining Length에는 가변 헤더의 내용들이 들어가기 때문이다. 따라서 위의 1바이트부터 잘 이해하는 것이 중요하다. 7~4 의 4개 Bit는 메시지 타입을 결정한다. 2의 4승개의 메시지 타입이 가능하다. 즉, 메시지 타입은 16개가 되겠다. 그 중 모든 비트가 0인 0과, 모든 비트가 1인 16비트는 Reserved이다. 메시지 타입 위의 사진이 메시지 타입 종류 16가지이다. Publish의 경우가 중요한데, 이는 나중에 QoS 설명할 때에 제대로 작성하겠다. 타입 1은 클라이언트가 브로커에게 연결을 시도하는 메시지이다.타입 2는 브로커가 연결을 받았을때에, 연결되었다고 ..
Sub / Pub Model? Sub/pub 모델, 즉 Subscriber / Publisher 모델은 구독 클라이언트와 발행 클라이언트 간의 통신 모델이다. 일반적인 Server / Client 모델은 한쪽은 서버의 역할을, 한쪽은 클라이언트의 역할을 하게 된다. 일반적으로 클라이언트가 서버에 데이터를 요청하고, 서버가 해당 데이터를 클라이언트에 전송하는 식의 방식이 사용된다. Sub/pub 모델은 이와 조금 다르다. 클라이언트는 데이터를 보내는 입장이 될 수 있고, 혹은 데이터를 받는 입장, 혹은 동시에 두 입장을 소화해 낼 수도 있다. 실생활의 예를 한번 들어보자. 내가 신문 읽기를 좋아하여, 신문 구독(Subscribe) 을 신청하였다. 예를 들어 조선일보(Topic) 와 한겨레 신문(Topic)..
프로토콜이 뭐야 ?네트워크 용어에 대해 잘 모르는 분들이 계실 수 있으므로 살짞 짚고 넘어가자. 프로토콜이란 서로 데이터를 주고받을 때에 상호 지키기로 한 규약 이다. 영어 단어 자체도 외교 의례 라는 단어를 갖고 있다. 디바이스들이 주고받는 언어 라고 할 수 있다. 내가 멕시코 친구한테 '안녕 ? 어디서 왔니 ? ' 라고 하면 이해하지 못하는 것처럼, 데이터를 보낼 때에도 서로 이해할 수 있는 프로토콜을 사용하여야 통신이 가능해진다. MQTT 프로토콜 특징 MQTT 프로토콜은 IoT 프로토콜 솔루션이다. Message Queue Telemetry Transport 의 약자이다. 이 프로토콜은 사물인터넷 구축을 위해서 필요한 점들을 시원하게 긁어주는 여러가지 장점을 지녔다. 사물인터넷을 구축하는데 있어서..
이미지 출처: http://www.kpcb.com/blog/how-kleiner-perkins-invests-in-the-internet-of-things-picking-the-winners사물인터넷 이란? 요즘 IT 시장에서 가장 핫한 키워드를 꼽자면 사물인터넷 과 인공지능 이라고 할 수 있다. 물론 더 세부적으로 보자면 스마트카 , 빅데이터 이야기도 나오겠지만, 스마트카도 결국 사물이고 빅데이터를 이용해서 인공지능 의 능력이 강화된다. 그 중 사물인터넷에 대해서 이야기해보자. 사물인터넷은 영어 단어 IoT, 즉 Internet of Thing 의 한글 말이다. Thing 이 인터넷을 하는 주체가 되는 기술이 바로 사물 인터넷이다. 지금까지 인터넷과 연결되어 움직이던 디바이스들은 크게 컴퓨터 와 전화기..