개발일지
3월 기술면접대비 - TCP/UDP 본문
전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 데이터의 전달을 담당합니다.
그리고 데이터를 보내기 위해 사용하는 *프로토콜이 TCP와 UDP입니다.
*프로토콜 : 클라이언트와 서버가 정보를 교환할 수 있도록 하는 메시지 형식에 대한 규칙
TCP( Transmission Control Protocol : 전송 제어 프로토콜 )란?
인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜입니다.
IP(Internet Protocol)가 인터넷 프로토콜로서 복잡한 인터넷 망 속에서 클라이언트와 서버 간에 통신할 수 있게 IP 주소와 패킷과 같은 규칙을 통해 통신을 하게 하는 것이라면, TCP는 IP 규칙으로만 통신하기에 부족하거나 불안정하던 여러 단점들(패킷 순서가 이상하거나 패킷이 유실)을 커버해 패킷 전송을 제어하여 신뢰성을 보증하는 프로토콜입니다.
*패킷(Packet)이란?
인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이 조각을 패킷이라고 합니다.
TCP를 사용한 통신에서는 신뢰성을 위해 무조건 패킷은 순서대로 처리되어야 합니다. 그리고 순서가 있기 때문에 이전에 받은 패킷을 파싱하기 전까지는 다음 패킷을 처리할 수도 없으며 중간에 패킷이 손실되었다면 다시 보내야 합니다.
이렇게 패킷이 중간에 유실되거나 파싱 속도가 느려 통신에 병목현상이 발생하게 되는 현상을 HOLB(Head of Line Blocking)이라고 부릅니다.
TCP는 단어 그대로 원활한 통신을 위해 전송 흐름을 제어하는 기능을 프로토콜 자체에 포함하고 있습니다.
만약 TCP가 없었더라면 개발자가 일일이 데이터를 어떤 단위로 보낼 것인지 정의해야하고, 패킷이 유실되면 어떤 예외처리를 해야하는 지까지 신경써야합니다.
TCP가 이러한 예외적인 상황에 대해서 잘 알아서 대처 해주는 덕분에 우리는 온전히 상위의 동작에만 집중할 수 있습니다.
UDP( User Datagram Protocol : 사용자 데이터그램 프로토콜 )란?
TCP와 UDP 비교를 할 때 보통 TCP는 신뢰성이 높고 느리다 와 UDP는 신뢰성이 낮고 빠르다 정도로 말합니다.
TCP는 클라이언트와 서버가 서로 신뢰성 있는 통신을 할 수 있도록 *핸드쉐이크 과정을 거치게 되는데 데이터 하나를 전송하기 위해서도 밑작업들이 많습니다.
그렇지만 기술의 발전에 의해 전송데이터의 크기가 점점 커져가고 속도의 중요성도 커졌습니다.
하지만 결국 TCP는 TCP자체가 가지는 특징 때문에 속도의 한계가 있습니다.
핸드쉐이크란? ( Handshake : 3 Way Handshake , 4 Way Handshake )
TCP는 신뢰성 프로토콜답게, 통신을 시작할 때와 종료할 때 서로 준비가 되어있는지를 먼저 확인하고 패킷을 전송할 순서를 정하고 나서 본격적인 통신을 시작합니다. 그 과정을 핸드쉐이크라고 합니다.
=> 패킷 내부에 들어있는 인증 플래그 값들을 확인하여 클라이언트와 서버가 서로 보낸 패킷의 순서와 패킷을 제대로 받았는 지를 검증하는 것
=> TCP 3 Way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미
=> 두 호스트 전송 계층 간에 논리적 연결을 설정하는 과정
반면 UDP는 데이터그램 방식을 사용하기 때문에 각각 패킷 간의 순서가 존재하지 않는 독립적인 패킷을 사용합니다.
이 방식은 목적지만 정해져 있다면 중간경로를 신경쓰지 않기 때문에 핸드쉐이크 과정같은 연결 설정이 필요 없게 되어 속도가 더 빠릅니다.
그래서 UDP는 실시간 영상 스트리밍과같은 고용량 데이터를 다루는 곳에 사용됩니다.
정리
TCP는 연결성, 신뢰성 전송 프로토콜 입니다. ( 전송 제어 프로토콜 )
연결지향적이기 때문에 데이터를 전송하기 전에 3-way handshaking을 하여 두 전송계층 사이 연결을 생성합니다.
신뢰성 있는 전송을 위해 오류제어, 흐름제어, 혼잡제어 등을 실행합니다.
모든 데이터 패킷을 추적하고 올바른 순서로 전달되도록 보장하여 더욱 안전하고 안정적입니다.
이런 점 때문에 header가 더 크고 속도가 UDP에 비해 느리다는 단점이 있습니다.
( http, file전송 등에 쓰임 )
UDP는 비연결형,비신뢰성 프로토콜입니다. ( 사용자 데이터그램 프로토콜:데이터를 그램 단위로 처리 )
비연결형이기 때문에 연결 과정이 없습니다.
또한 비신뢰성 프로토콜로 흐름제어, 오류제어, 혼잡 제어를 제공하지 않습니다.
이러한 단순성 덕분에 적은 양의 오버헤드를 갖고 수신여부를 확인하지 않아서 속도가 빠릅니다.
( 스트리밍 방송 등에 쓰임 )
reference.
🌐 아직도 모호한 TCP / UDP 개념 ❓ 쉽게 이해하자.(22.12).Inpa Dev.https://inpa.tistory.com/entry/NW-%F0%9F%8C%90-%EC%95%84%EC%A7%81%EB%8F%84-%EB%AA%A8%ED%98%B8%ED%95%9C-TCP-UDP-%EA%B0%9C%EB%85%90-%E2%9D%93-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EC%9E%90#http_/_ip_/_tcp_/_udp_%EB%8A%94_%EB%AA%A8%EB%91%90_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C
'frontEnd > 기술면접' 카테고리의 다른 글
3월 기술면접대비 - JS 호이스팅 ( Hoisting ) (0) | 2024.03.06 |
---|---|
3월 기술면접대비 - var, let, const (0) | 2024.03.06 |
3월 기술면접대비 - 브라우저 저장소 (feat. cookie, sesstion, webstorage) (0) | 2024.03.05 |
3월 기술면접대비 - HTTP와 HTTPS의 차이 ( feat. GET/POST ) (0) | 2024.03.05 |
3월 기술면접대비 - SSR vs CSR vs SSG ( feat. 장단점 ) (2) | 2024.03.04 |