면접 질문으로 받았던 건데, 관련해서는 대답을 잘 했으면서도 막상 꼬리 질문에는 알면서 순간 머리가 새하얘지는 바람에 ^-ㅠ "... ... 모르겠습니다!" 라는 대답을 해 버렸다.
이 대답이 왜케 이불을 차고 싶던지... ...
아무튼. 해당 주제에 대해서는 실제로 정리해 본 적은 없고 직접 구현해 보면서 머리/몸으로 알고 있던 게 다라서 말로 뱉으면서 이게 맞나? 하는 생각이 들었다.
내 생각에는 그래도 이 질문에는 그래도 오답을 얘기하지는 않았던 것 같지만, 내가 몰랐던 부분이나 머뭇거렸던 부분을 명확히 정리하여 온전히 알고 넘어가려고 한다.
HTTP 통신이란?
- HyperText Transfer Protocol의 약자로 HTML 파일을 전송하는 프로토콜
- 초기에는 HTML 파일을 전송하려는 목적으로 만들어졌으나 현재는 JSON, image 파일 등을 전송
- 클리아언트에서 요청을 보내고 서버는 응답하는 형식으로 통신이 이루어진다.
- 응답에는 클라이언트의 요청에 따른 결과를 반환한다.
- 클라이언트의 요청이 있을 때만 서버가 응답하며, 단방향 통신이다.
- 초기에 서버는 응답한 후, client의 connection을 곧바로 끊어버렸으나, 최근에는 Keep Alive 옵션을 통해 일정 기간 동안 클라이언트와 connection을 유지하는 방식으로 통신이 가능해졌다.
- 이를 persistent connection이라고 하며, 서버에 동일한 클라이언트가 연속적으로 여러 요청을 보낼 가능성이 높은 경우 각 요청마다 connection을 끊지 않고 재사용할 수 있도록 처리한다.
- persistent connection은 왜 필요할까?
- 네트워크 혼잡 비용 감소: TCP / SSL connection request 수가 줄어들어 혼잡 비용 감소!
- 네트워크 비용 감소: connection을 맺고 끊을 때 네트워크 비용이 많이 발생하므로, 하나의 connection으로 clinet 요청을 처리하는 게 더 효율적이다.
- 지연 시간 감소: 3-way handshake를 맺으면서 필요한 round-trip이 줄어들기 때문에 그만큼 지연시간이 감소된다.
- 3-way handshake?
- 클라이언트와 연결 시 클라이언트에서 SYN 플래그를 포함한 요청을 보내고, 서버에서 ACK 토큰을 더하여 전송하면 서버는 해당 응답을 확인 후 서버에 ACK를 보내고 연결을 성립하는 방식을 말한다.
- 이때, round-trip, 즉 왕복 시간이라는 개념이 나오는데 위 지연시간 감소는 3-way handshake를 맺게 되면 client - server - client로 플래그가 오가는 시간이 필요할 것이다. persistent conneciton을 맺게 되면 매 요청 시 3-way handshake를 통해 연결을 다시 하지 않아도 되므로 왕복 시간이 줄어든다는 뜻이당.
- 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와 소켓의 차이와 같당 ... ... ^__^
하. 이제는다신. 절지않으리라.
참고자료
HTTP vs WebSocket 차이점
HTTP vs WebSocket 차이점 오늘은 HTTP와 WebSocket의 차이점에 대해서 정리해보고자 합니다. 앞으로 진행할 파이널 프로젝트에 채팅 기능을 넣어보고자 공부를 진행함에 있어서 평소에도 사용하고 들어
kbj96.tistory.com
[소켓과 웹소켓] 한 번에 정리 (1) | 소켓이란?, 소켓 API의 실행 흐름, 클라이언트 소켓과 서버 소
넷응설 예습 스터디를 위해 소켓 프로그래밍에 대해 자료를 정리하던중 ... http와 TCP/IP소켓 웹소켓 등등 .. 비슷한듯 다른 개념들이 정리가 안되고 헷갈려가지고 한 번에 정리해보려한다. 이번
velog.io
[소켓과 웹소켓] 한 번에 정리 (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
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
왕복 시간(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
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 |