서론
하반기 첫 면접에서 좀 심하게 넘어지면서 여태까지 한 내용들을 정리할 필요를 느끼게 되었다
그때 가장 잘못 대답한 부분이 바로 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 |