Socket에 대해서 질문드려요(코딩 X, 개념 관련 질문)

조회수 1711회

안녕하세요!

최근 여러 개념 공부들을 하면서 질문을 자주 올리는 것 같습니다. (너무 많이 올리는 것 같고 죄송해서 페이스북 생활코딩 그룹에 올리면 나중에 찾기가 힘들어서 여기에 올리게 되네요..ㅠ)

오늘은 소켓에 대해서 개념을 익히는 중이였는데요!

" 소켓은 HTTP의 단점을 해결할 수 있는 양방향 통신 기술이다. " 라는 것이 대부분의 블로그들의 설명입니다. 기타 내용들을 읽어보고 소켓에 대해서 이해해보았는데 이게 정확한 것인지 몰라서 질문드려요!

음... 그림으로 표현해보면

이미지

왼쪽은 HTTP를 사용해서 데이터를 보낼 때에는 데이터를 http가 감싸면서 헤더를 붙이고, 그 위에 tcp의 헤더, 그위에 ip의 헤더를 붙이고 감싼다음에 데이터를 전공하는 것을 표현한 것이고

오른쪽 그림은 소켓을 사용했을 때를 나타내었습니다. 단지, TCP안에 데이터가 들어가기 위해서는 socket이 인터페이스가 되어서 데이터를 TCP로 감싸주는 역할을 하는 것으로 소켓 통신에 대해서 이해했습니다. 제가 이렇게 생각한 이유는 어떤 블로그에서 HTTP의 헤더는 용량이 큰데(비교적) 소켓을 사용하면 그것을 상당히 줄일 수 있다고 하여서 '아~ 그럼 소켓을 사용하면 http를 사용하지 않는 것인가 보구나'라고 이해를 하고 저렇게 그렸습니다.

혹시 제가 이해한 것이 맞는지 확인 부탁드려봐요!

그리고 혹시... 굉장히 멍청한 질문이지만... 소켓과 웹소켓은 다른 것인가요...?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • TCP를 바로 사용하면 HTTP를 사용하지 않는다고 할 수 있습니다. 속도가 빠른 반면 일일이 구현해 주어야 합니다.

    웹 소캣은 HTTP 가 클라이언트의 요청에 의해서만 데이터를 주고 받을 수 밖에 없었는데 이를 개선하려고 HTML5부터 웹환경에서도 소캣을 제공해 주는 것입니다. 일반 소캣 처럼 서버에서 클라이언트로 데이터를 보낼 수가 있게 되어 조금 더 동적인 웹환경을 만들어 줍니다

    • 답변 감사드립니다! 혹시 제가 이해한 내용이 맞다고 말씀해주신건가요? 아니면 제가 이야기한 것은 소켓의 여러 기능 중에 하나임을 말씀해주신건가요? 알 수 없는 사용자 2016.11.22 13:21
    • 음... "TCP를 바로 사용하는 소켓은 속도가 빠른 반면 일일이 구현해 주어야한다"는 말씀은 현재 있는 라이브러리들이라던가 WebSocket의 객체 등을 사용하는 것은 TCP로 바로연결하는 것은 아니라는 말씀이신 건가요...? 알 수 없는 사용자 2016.11.22 13:24
    • 맞는 것 같고, TCP경우에는 연결이 끊어졌을 같은 에러 핸들링을 해주어야 한다는 말이었어요. 유연수 2016.11.22 16:17
    • 그렇군요! 감사합니다!! 알 수 없는 사용자 2016.11.22 16:56

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)