인프런 커뮤니티 질문&답변

HHS님의 프로필 이미지
HHS

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

TCP, UDP

TCP vs UDP (12:46 에 대한 질문)

작성

·

509

3

12:46에서 TCP라는 걸 그대로 두고 UDP에 손을 대면 된다
라고 설명해주셨는데요.
 
TCP 와 UDP는 별개여서, TCP를 쓰든 UDP를 쓰든 결정해야하는 걸로 생각하고 있었는데,
 
"TCP라는 걸 그대로 두고 UDP에 손을 대면 된다"
 
라는 건.. TCP는 늘 기본적으로 쓰는 것이고 UDP는 거기에 부가적으로(additional하게) 사용하는 건가요?
 
+) 여력이 되신다면 하나 더 답변 부탁드립니다. UDP 특징 정리 부분에서 "애플리케이션에서 추가 작업 필요"라는 내용이 잘 감이 안오는데 조금더 설명주실 수 있을까요?

답변 1

11

안녕하세요, Hyunsang Han 님. 공식 서포터즈 codesweaver 입니다.
.

답변.

웹의 통신 규격인HTTP는 여러가지의 버전이 있습니다. (0.9, 1.1, 2, 3) 이 중 대부분을 차지하는 규격은 HTTP/1.1 입니다. 이 규격은 TCP를 기반으로 작동하는 것을 전제로 하고 있습니다. HTTP/2도 TCP를 기반으로 하며 통신 속도 향상을 위한 멀티플렉싱 등의 기술에 중점을 두고 있습니다. HTTP/3는 UDP 기반의 QUIC 를 사용한 기술이 도입되었습니다. 그러나 HTTP/3는 이직 보편화된 단계는 아니며 구글의 크롬 브라우저에서만 도입, 사용하고 있는 단계입니다.

.

하나의 페이지(웹사이트의 페이지)는 여러개의 파일들의 모음입니다(이미지, 스크립트 파일, CSS파일 등). 따라서 한 페이지를 요청하게되면 그에 파생되는 요청이 수십개, 많게는 수백개까지 발생하게 됩니다. 이러한 요청들을 효율적으로 처리하고자 하는것이 HTTP/2, HTTP/3의 주요한 목표입니다. 하나의 사이트를 불러오기 위해 브라우저는 TCP, UDP등의 모든 통신을 동시에 활용합니다. (물론 서버가 UDP를 지원한다는 전제가 있어야 합니다)

.

UDP는 영한님이 강의에서 설명하신것처럼 핸드셰이크 과정이나 데이터의 순서등을 보장하지 않습니다. 따라서 클라이언트가 이를 알아서 해결해야 합니다. 이 부분이 애플리케이션의 추가 작업이 필요한 부분입니다. 보통 '웹 개발'영역에서 애플리케이션은 브라우저를 말합니다. 브라우저에서 TCP, UDP에 대한 처리를 담당하므로 웹 개발자가 이를 구분하여 작업해야 하는 경우는 없습니다.

.

웹사이트 프로토콜 확인하기

크롬 브라우저의 개발자도구를 켠 상태로 '네트워크'탭을 누르신 후, 여러가지 홈페이지를 돌아다니다 보면 각 파일들이 어떤 프로토콜로 요청, 응답되었는지 확인하실 수 있습니다. (프로토콜 항목은 기본값이 안보임 상태일 수 있는데, 네트워크 탭의 제목 탭에서 마우스 우클릭 후 프로토콜 항목을 체크해주세요) http/1.1, h2(http/2) 등의 여러가지 프로토콜로 데이터르를 응답받는 것을 확인하실 수 있습니다. 

.
감사합니다.

HHS님의 프로필 이미지
HHS

작성한 질문수

질문하기