[Network] HTTP와 Socket의 차이

 

면접 질문으로 받았던 건데, 관련해서는 대답을 잘 했으면서도 막상 꼬리 질문에는 알면서 순간 머리가 새하얘지는 바람에 ^-ㅠ "... ... 모르겠습니다!" 라는 대답을 해 버렸다.

 

이 대답이 왜케 이불을 차고 싶던지... ... 

 

아무튼. 해당 주제에 대해서는 실제로 정리해 본 적은 없고 직접 구현해 보면서 머리/몸으로 알고 있던 게 다라서 말로 뱉으면서 이게 맞나? 하는 생각이 들었다.

 

내 생각에는 그래도 이 질문에는 그래도 오답을 얘기하지는 않았던 것 같지만, 내가 몰랐던 부분이나 머뭇거렸던 부분을 명확히 정리하여 온전히 알고 넘어가려고 한다.

 

 

 

 

https://kbj96.tistory.com/46

 

 

HTTP 통신이란?

  • HyperText Transfer Protocol의 약자로 HTML 파일을 전송하는 프로토콜
  • 초기에는 HTML 파일을 전송하려는 목적으로 만들어졌으나 현재는 JSON, image 파일 등을 전송
  • 클리아언트에서 요청을 보내고 서버는 응답하는 형식으로 통신이 이루어진다.
    • 응답에는 클라이언트의 요청에 따른 결과를 반환한다.
    • 클라이언트의 요청이 있을 때만 서버가 응답하며, 단방향 통신이다.
  • 초기에 서버는 응답한 후, client의 connection을 곧바로 끊어버렸으나, 최근에는 Keep Alive 옵션을 통해 일정 기간 동안 클라이언트와 connection을 유지하는 방식으로 통신이 가능해졌다.
    • 이를 persistent connection이라고 하며, 서버에 동일한 클라이언트가 연속적으로 여러 요청을 보낼 가능성이 높은 경우 각 요청마다 connection을 끊지 않고 재사용할 수 있도록 처리한다.
    • persistent connection은 왜 필요할까?
      1. 네트워크 혼잡 비용 감소: TCP / SSL connection request 수가 줄어들어 혼잡 비용 감소!
      2. 네트워크 비용 감소: connection을 맺고 끊을 때 네트워크 비용이 많이 발생하므로, 하나의 connection으로 clinet 요청을 처리하는 게 더 효율적이다.
      3. 지연 시간 감소: 3-way handshake를 맺으면서 필요한 round-trip이 줄어들기 때문에 그만큼 지연시간이 감소된다. 
        • 3-way handshake?
          • 클라이언트와 연결 시 클라이언트에서 SYN 플래그를 포함한 요청을 보내고, 서버에서 ACK 토큰을 더하여 전송하면 서버는 해당 응답을 확인 후 서버에 ACK를 보내고 연결을 성립하는 방식을 말한다.
          • 이때, round-trip, 즉 왕복 시간이라는 개념이 나오는데 위 지연시간 감소는 3-way handshake를 맺게 되면 client - server - client로 플래그가 오가는 시간이 필요할 것이다. persistent conneciton을 맺게 되면 매 요청 시 3-way handshake를 통해 연결을 다시 하지 않아도 되므로 왕복 시간이 줄어든다는 뜻이당.

 

 

 

소켓 통신

  • 두 프로그램이 서로 데이터를 주고받을 수 있도록 생성되는 통신 단자
  • 서버와 클라이언트 사이에 양방향 연결이 이루어짐
  • 클라이언트도 서버에게 요청을 보낼 수 있고, 서버도 클라이언트에게 요청을 보낼 수 있다.
  • ... ... 근데 소켓과 http 모두 TCP 통신을 기반으로 하고 있는데, 왜 http 통신은 단방향인 걸까?
    • http도 데이터를 전송할 때 소켓이 사용되는 것은 동일하다. 소켓 기반인 이유는 둘다 TCP 통신을 기반으로 하고 있기 때문~~! 
    • http 통신은 연결시와 해제 시 3-way/4-way handshake를 거치고 데이터 전송 시에도 동일한 소켓이 사용되는데, 이때 데이터 전송에 사용되는 소켓의 통신 방식이 TCP 통신의 데이터 전송에서 사용되는 소켓과는 다른 방식으로 사용된다고 한다.
      • ... 몬소리냐? 하면 소켓이 사용되는 계층이 다르다고 볼 수 있겠다. http의 소켓은 7계층에서 사용되고, TCP 통신에서 사용되는 소켓은 4계층에서 사용된다.
      • 웹소켓은 HTTP 레이어에서 작동하는 소켓으로, TCP/IP 소켓과 레이어가 다르다! (http socket... 즉 웹소켓이 7계층 / TCP 통신에서 사용되는 소켓이 4계층이라는 게 이말.)

 

 

 

글쿠나. 단방향 / 양방향 연결이라는 점이 다르고, TCP 기반인 건 같지만 소켓이 사용되는 계층이 다르다. 그 차이 때문에 일반 TCP 소켓 통신과 웹소켓이 나뉘는 거고, 그 차이는 어떤 계층에서 패킷을 만드느냐! 이당...

구럼 웹소켓과 http의 차이는? 당근 http와 소켓의 차이와 같당 ... ... ^__^

 

하. 이제는다신. 절지않으리라.

 

 

 

 

 

 

 

참고자료

 

https://kbj96.tistory.com/46

 

HTTP vs WebSocket 차이점

HTTP vs WebSocket 차이점 오늘은 HTTP와 WebSocket의 차이점에 대해서 정리해보고자 합니다. 앞으로 진행할 파이널 프로젝트에 채팅 기능을 넣어보고자 공부를 진행함에 있어서 평소에도 사용하고 들어

kbj96.tistory.com

https://velog.io/@rhdmstj17/%EC%86%8C%EC%BC%93%EA%B3%BC-%EC%9B%B9%EC%86%8C%EC%BC%93-%ED%95%9C-%EB%B2%88%EC%97%90-%EC%A0%95%EB%A6%AC-1

 

[소켓과 웹소켓] 한 번에 정리 (1) | 소켓이란?, 소켓 API의 실행 흐름, 클라이언트 소켓과 서버 소

넷응설 예습 스터디를 위해 소켓 프로그래밍에 대해 자료를 정리하던중 ... http와 TCP/IP소켓 웹소켓 등등 .. 비슷한듯 다른 개념들이 정리가 안되고 헷갈려가지고 한 번에 정리해보려한다. 이번

velog.io

https://velog.io/@rhdmstj17/%EC%86%8C%EC%BC%93%EA%B3%BC-%EC%9B%B9%EC%86%8C%EC%BC%93-%ED%95%9C-%EB%B2%88%EC%97%90-%EC%A0%95%EB%A6%AC-2

 

[소켓과 웹소켓] 한 번에 정리 (2) | 소켓과 웹소켓의 차이점, 웹소켓의 모든것, http-tcp-소켓의 상

지난 시간은 소켓 위주로 정리를 해보았다. 이번 편은 웹소켓에 대해 다루어보자! 이번 기회에 소켓과 웹소켓의 차이를 확실히 알아두도록 하자....😌

velog.io

https://dalya-tech.tistory.com/27

 

소켓과 웹소켓

소켓(socket) 과 웹소켓🔌 소켓이란, 프로그램이 네트워크 상에서 데이터를 송신과 수신을 하기 위한 연결부이다. 일반적으로 TCP/IP (또는 UDP) 프로토콜을 이용하거나, WebSocket 을 이용한다. 웹소켓

dalya-tech.tistory.com

https://bitcodic.tistory.com/151

 

👉 [네트워크] HTTP 는 소켓 통신이에욧 !!!

HTTP 에 대해서 구글링하면 무수히 많이 나오는 내용 ★☆HTTP 통신 vs 소켓 통신 차이점★☆ 결론만 말하면 HTTP 통신은 소켓 통신이다. " 1990년대 초에 설계된 HTTP는 거듭하여 진화해온 확장 가능한

bitcodic.tistory.com

https://mangkyu.tistory.com/48

 

[네트워크 프로그래밍] Http 프로그래밍과 Socket 프로그래밍 차이

일반적으로 단말기에서 필요로 하는 데이터들은 Server에서 관리합니다. 네트워크를 통해 서버로부터 데이터를 가져오기 위한 통신을 구현하기 위해서는 크게 Http 프로그래밍과 Socket 프로그래밍

mangkyu.tistory.com

https://bentist.tistory.com/35

 

HTTP, Socket 통신의 차이

일반적으로 휴대폰, 컴퓨터 등에서 필요로 하는 데이터들은 Server에서 받아온다. 네트워크를 통해 서버로부터 데이터를 가져오기 위한 통신으로는 크게 HTTP 통신과 Socket 통신 2가지가 있다. 오늘

bentist.tistory.com

https://sooolog.dev/HTTP-%ED%86%B5%EC%8B%A0%EA%B3%BC-TCP-%ED%86%B5%EC%8B%A0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%9B%B9-%EC%86%8C%EC%BC%93%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC/

 

HTTP 통신과 TCP 통신 그리고 웹 소켓에 대한 기본 개념 정리

HTTP 통신과 TCP통신의 개념 HTTP 프로그래밍과 소켓 프로그래밍 HTTP,HTTPS 통신에서 양방향 통신을 위한 웹 소켓의 개념

sooolog.dev

https://velog.io/@pear/HTTP-%EC%9A%94%EC%B2%AD%EA%B3%BC-%EC%9D%91%EB%8B%B5

 

HTTP, 요청과 응답

HyperText(링크) Transfer Protocol 의 약자이다. 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 Protocol (통신 규약)인데, 쉽게 생각하면 웹 상에서 통신을 할 때 어떤 형식으로 통신을 하자고 정해놓

velog.io

https://medium.com/@su_bak/%EC%99%95%EB%B3%B5-%EC%8B%9C%EA%B0%84-round-trip-time-rtt-%EC%9D%B4%EB%9E%80-96d78eea40b7

 

왕복 시간(Round Trip Time, RTT) 이란?

Round Trip Time 줄여서 RTT 는 우리말로 하면 왕복 시간이란 의미로 인터넷 상에서 송신지부터 목적지까지 패킷이 왕복하는데 걸리는 시간을 뜻합니다.

medium.com

https://etloveguitar.tistory.com/137

 

[HTTP] keep alive란? (persistent connection에 대하여)

HTTP 관련 서비스를 구현하다보면 persistent connection을 빼놓을 수 없다. 그렇다고 필자가 완벽히 이걸 다 이해한건 아니고 공부중이다 하핫. 본 글에서는 persistent connection의 기본적인 개념을 소개하

etloveguitar.tistory.com

https://kotlinworld.com/75

 

HTTP 통신과 Socket 통신의 차이점

목표 Htttp 통신과 Socket 통신의 차이점을 이해한다. HTTP 통신이란? HTTP란 HyperText Transfer Protocol의 약자로 HTML 파일을 전송하는 프로토콜이라는 의미를 가진다. 웹브라우저에서 통신이 일어나며, 초

kotlinworld.com

 

'CS 지식 > Network' 카테고리의 다른 글

[Network] HTTP와 HTTPS의 차이  (0) 2024.01.24
[Network] TCP와 UDP의 특징과 차이점  (1) 2024.01.23