[CS] HTTP 통신 vs Socket 통신( + HTTPS)

린다·2021년 10월 26일
0

Computer Science

목록 보기
1/3
post-thumbnail

클라이언트와 서버의 통신 방식은 크게 HTTP 통신과 Socket 통신으로 나눌 수 있음
이 둘의 가장 큰 차이점은 접속을 유지하는지의 여부

📂 HTTP

  • 비연결 지향통신: 클라이언트의 요청이 있으면 서버가 해당 페이지에 대한 자료를 전송하고 곧바로 연결을 끊음(ex. 사이트에 접속하면 처음에 로딩될때만 서버와 연결이 돼있고 그 후에 별다른 요청을 하지 않는 이상 서버와의 연결이 끊긴 상태로 유지)
  • 서버의 부하를 줄여서 다른 접속을 원활하게 처리하기 위해서!
  • 단방향 통신: 클라이언트의 요청이 반드시 선행되어야함, 서버가 먼저 정보를 전송할 수 없음.
  • 한 번 정보를 주고 받으면 연결을 끊음 따라서 사용자가 누군지 인식할 수 없음 → 쿠키, 토큰 등을 사용하는 이유
  • 앱에서는 HTTP를 훨씬 많이 사용함

📂 Socket

  • 연결 지향통신: 클라이언트와 서버가 연결이 되면 둘 중 하나가 강제로 접속을 해제하기 전까지는 접속이 유지됨. 그렇기 때문에 동시에 접속할 수 있는 클라이언트의 수가 제한될 수 밖에 없음.
  • 양방향 통신: 양방향으로 연결이 되기 때문에 서버가 클라이언트에게 먼저 정보를 줄 수 있음(ex. 메신저)
  • 주로 채팅, 온라인 게임, 실시간 동영상 강좌 등에 사용됨. 이런 경우가 아니라면 HTTP를 활용하는 것이 더 효율적임
  • Request와 Response가 많아지는 경우, 채팅을 많이 하면 과도하게 요청이 많아질 수 있고 이에 따라 속도가 느려질 수 있음 → 이런 경우 소켓으로 네트워크 작업을 하게 됨
  • 뒤로가기를 누르지 않는 이상(채팅방에서 나가지 않는 이상) 네트워크와 클라이언트의 연결이 끊어지지 않음
  • 계속 연결이 되어있기 때문에 HTTP보다 리소스 부하가 상대적으로 높음

cf. HTTPS

  • Hypertext Transfer Protocol Secure
  • 일반 HTTP 프로토콜의 문제점은 서버에서부터 클라이언트로 전송되는 정보가 암호화되지 않는다는 점
  • 이에 SSL을 이용하여 문제를 해결함 ➡️ 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 해주고 민감한 정보가 도난당하는 것을 방지해줌
  • TCP와 http 사이에서 작용, 데이터를 암호화 한 후 전송함
  • QueryString, HTTP Body등을 암호화함

0개의 댓글