학습

[면접 복기] HTTP와 TCP 의 차이

물빠진떡 2024. 9. 15. 17:32

서론

하반기 첫 면접에서 좀 심하게 넘어지면서 여태까지 한 내용들을 정리할 필요를 느끼게 되었다
그때 가장 잘못 대답한 부분이 바로 TCP 와 HTTP 에 대해서 말을 잘 못한것 같다
때문에 이 부분을 더 정리해서 말해야 할 것 같았다
우선적으로 제일 기본이 되는 통신에 대해서 정리해 보자
우리가 흔히 통신에 대해서 얘기할때 2가지의 기술에 대해서 얘기를 한다

TCP/IP 통신, UDP, 그리고 HTTP 통신

오늘은 이것들에 대해서 정리해보도록 한다

TCP == HTTP?

TCP 프로토콜과 HTTP는 같은것인가?
이 질문에 대한 대답은
다른 것이다. 하지만 더 정확히는 HTTP 프로토콜은 TCP에 의존하여 통신을 한다. 라고 하면된다

그럼 이 질문에 대해 더 자세히 알기 위해 각각이 무엇인지 알아보자

TCP

TCP는 애플리케이션 사이에 데이터를 주고 받기 위한 규약(프로토콜)이다.
TCP/IP 통신은 OSI 7 계층 L3(전송 계층)에 속한다.

장점으로는

  • 안정적이다
  • 빠르다
    등이 있다.

TCP의 특징은

  • 양방향 통신
  • 데이터를 잘게 쪼게어 통신한다
    로 설명하면 된다

TCP의 과정은 짧게 요약하자면

  • 연결 : 3 hand shake 과정을 통해 연결
  • 데이터 통신
    • 통신과정에서 서로 얼마나 데이터를 주고 받았나 와 같은 정보를 SYN, ACK 등과 같은 번호로 구분한다
    • SYN : Syncronize Sequence number, 쉽게 말해서 현제 받은 데이터가 몇번째인지를 정리하는 번호
    • ACK : Acknowledgment 번호로, 요청을 확인했음을 알리는 번호
      SYN을 받았을때 알겠다는 의미로 SYN + 1을 보낸다 -> 이후 서버는 클라에게 해당 번호의 데이터 부터 송신하게 된다
  • 해제 : 4 핸드 쉐이크를 통해 해제

HTTP

HTTP는 OSI 7 계층의 어플리케이션 계층 프로토콜 통신이다.

클라이언트와 서버간의 응답과 요청으로 이루어진 통신이다.

특징으로는 2가지가 있다

  • 무상태성
    • 서버가 클라이언트의 상태를 기억하지 않기에 응답과 요청이 독립적이다
    • 확장성이 높다
  • 비연결성
    • 서버의 응답 이후 연결을 끊어 버린다.
    • TCP 통신에 의존하기 때문에 잦은 요청의 경우 3hand shake, 4 hand shake를 계속하여 연결과 종료를 반복하게 되므로 비 효율적이다 ( http 1.1부터는 지속 연결을 통해 한 요청에 대한 각각의 모든 응답을 한 이후 종료를 하여 효율적으로 바뀜)

TCP vs HTTP

이 질문이 왔을때 어떻게 대답해야 할까를 정리해보자

TCP와 HTTP는 계층의 차이가 있다
 - HTTP는 어플리케이션 계층이며 TCP 는 전송 계층에 속한다
 - HTTP는 TCP 통신을 기반으로 하여 통신한다
TCP 는 양방향 통신이며 데이터를 잘게 쪼게어 통신한다
HTTP는 무상태성과 비 연결성을 가지고 있다

'학습' 카테고리의 다른 글

Block/Non-block vs Sync/Async  (4) 2024.10.31
Java로 Redis lock 구현하기  (0) 2024.10.21
Redis의 Lock  (4) 2024.10.19
[면접복기] 쓰레드와 프로세스의 차이는 무엇인가요?  (1) 2024.09.17
Redis란  (0) 2024.07.22