마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

socket 통신 vs http프로토콜 웹서버 통신

0 추천

안녕하십니까, 개인적으로 공부하고있는 학생입니다..

스마트폰의 센서값들을서버로 보내주어 서버는 그 데이타를 받고 저장하려합니다.

이때 데이터 통신의 방식으로 socket방식이있고 http프로토콜 웹서버방식있다고 들었습니다.

http가 socket 보다 더 관리나 유지보수면에서 좋고 ,설계가 더좋고,

socket은 http 보다 더 패킷사이즈가 작아서 모바일네트워크상(3g)에서 좋다고 들었습니다.

결정적으로 socket 통신은 1:1 이고 http프로토콜웹서버는 N:N이라고 들었는데 맞는 말인지요?

현재는 단순히 샘플값분석을위해 서버를 사용할것인데 , 추후에는 스마트폰에서 샘플값을 분석/판단 후 판단에대한값만을 서버로 넘겨주려고합니다 . 그 서버는 그 값을 다른 사용자에게 전달해주고요,

그렇다면 현재는 단순 샘플값분석을 위해 사용하는것이니 SOCKET통신으로도 괜찮고

멀리본다면, HTTP프로토콜을 사용해야하는지, 여쭙고싶습니다.

많은 가르침 부탁드립니다. ^^;

p.s http프로토콜도 결국 socket통신의 tcp/ udp/ 등과같은 프로토콜의 하나 아닌가요? 그렇다면 전제가 잘못된것같습니다만...;; 개념이 제대로 정립이안되어서 여쭙어 봅니다;;

 

DannyD (180 포인트) 님이 2014년 4월 10일 질문
DannyD님이 2014년 4월 10일 수정
질문하기 전에 http 와 socket, tcp/udp 같은 용어 관련한 문서를 찾아보세요.
네트웍에 기본 개념을 잘못 출발하면 낭패입니다.
(참고로 ps 에 적으신 내용이 가장 원하는 내용에 가깝습니다.)

3개의 답변

+2 추천
개인적으로 공부하신다니 다행입니다.
네트워크를 공부하는 학부생이라면 실망이구요.
소켓통신도 tcp, udp 등의 종류가 나뉩니다.
http 통신은 보통 tcp 네트워크로 통신을 하는 것이며 http 라는 프로토콜일뿐입니다.
표준으로 정의된 프로토콜에는 그 외에도 ftp, smtp, rtsp 등등 수많은 프로토콜이 있으며 그 중에 하나입니다.
프로토콜은 그저 하나의 약속입니다.
 
그저 개인적으로 간단히 만들고 싶다면 웹으로 저장하는 것을 구현하고 사용하는 것을 권합니다.
네트워크 구현은 이미 다 되어서 할 필요없이 비지니스 로직만 구현하시면 되니까요.
네트워크에 대해서 공부하고자 한다면 직접 소켓서버를 구현해보시는 것도 좋습니다.
실무 영역에서 제대로 만들고자 한다면 지금 질문은 의미가 없습니다. 더 생각해야 할 것이 많으니까요.
목적이 뭔지를 상기하세요.
 
센서 값을 저장해서 이용하는게 목적인지 네트워크 공부가 목적인지...
 
달기살 (12,990 포인트) 님이 2014년 4월 10일 답변
0 추천
무수히 많은 데이터를 빨리 처리해야 한다면  soket 이고

뭐 세월아 내월아 천천히 받아도 된다면... http 이고..

http 로 처리했는데 무수히 많은 데이터가 들어오면 그 프로그램은 해킹툴 됩니다.

http 서버가 죽어버릴테니까...
쮁쓰뻬로우 (240 포인트) 님이 2018년 9월 23일 답변
0 추천

 

본인 질문에서
가장 간과한 부분이 하나 있어요.

통신 프로토콜이 서로 동급이 아니라
레벨 차이가 있다는 점을간과했어요.

프로토콜에 레이어 라는 것이 있어요.

tcp, upd 는 4 레이어 정도 되요.
ip 는 3레이어 ?

% 오래되서 정확한지는 모름 [OSI 7레이어 기준]

tcp/ip, udp/ip 이렇게 해서 3~4 레이어에요.

7 Layer ->
https://ko.wikipedia.org/wiki/OSI_%EB%AA%A8%ED%98%95


글구 말씀하신 HTTP 는
어플리케이션 레이어의 프로토콜이에요.

즉, http 가 내부에서
자신보다 하부 프로토콜인 tcp/ip, udp/ip 를
적절히 호출하면서 구동되는 거에요.

% 어렵게 말하면 하부 호출이고 걍 쉽게 말하면
http 소스 안에서 tcp socket 통신으로 짠거에요.

 


http 와 비슷한 레벨로는 ftp, telet, seedlink 등이 있어요.
seedlink 는 지진 데이터 주고 받는 어플 레벨 프로토콜이에요.

그리고 HTTP 는 주로 tcp 쓰고 udp 는 간혹 써요.
udp 는 주로 스트리밍 동영상에 많이 써요.

그 많은 영상을 일일이 다 체크해서 주고받기 어렵거든요.

중간에 패킷 만번에 한 두 개 놓쳐도
영상에 살짝 껌벅 하는 정도하고 그냥 지나가요.
그래서 채팅이나 동영상 실시간 플레이에 쓰는 편 입니다.

http 는 내부적으로 tcp 를 많이 쓰지만
사실은 서버[쇼핑몰,포탈사이트 등]는 외부 접속이 들어오면
보내달라는 것만 보낸 후 접속을 끊어버려요.

그래서 tcp 이긴 한데 마치 UDP 와 유사한 행동을 하죠.
서버에 너무 많이 접속이 되면 서버가 버티기 힘든데
그렇다고 udp 쓰면 주요 데이터가 깨지거나 전달이 안될 수 있어서
tcp 로 안정성은 보장 받되 결과 보낸 후 바로 끊어서
서버 부담을 줄이는 묘한 행동을 보이는 app 레벨의 프로토콜입니다.



이론 보다는
실제로 tcp 로 한번 짜보고 udp 로 한번 짜보고 하심 됩니다.

랜카드 맥 어드레스 레벨에서 노는 이더넷 프로토콜은
레이어에서 2단계 정도 될거에요.

랜카드 프로토콜은 PC 어플로 안짜고 랜카드 펌웨어,
ip 프로토콜은 라우터 펌웨어 [하드웨어에 들어있는 펌웨어] 레벨에서
동작 해요.

우리가 코딩할 때는 tcp 를 직접 호출하기보다는
Socket 이라는 인터피스를 통해서 간접 호출합니다.

http 프로토콜을 앱 또는 PC 어플에서 자주 사용한 것이
모바일 게임에서 좀 썼어요.

그냥 xml 이나 xml 간편형인 jason 으로
마치 채팅 데이터 보내듯이 스트링만 주고 받음 되니까요.

web 에서 post, get [게시판 글쓰기, 글조회 에서 주로 사용] 함수에
스트링만 보내고 받고 하면 편리하고 그런데로 잘 되거든요.


이만 줄일께요.

 

초보개발자007 (1,040 포인트) 님이 2018년 9월 27일 답변
초보개발자007님이 2018년 9월 27일 수정
...