네트워크

프로토콜

Keisa 2024. 5. 16. 14:27

참고: https://80000coding.oopy.io/875cb26a-017f-43d2-a0ab-58915fd21686

 

Network에 대한 정리(4)

17. TCP 프로토콜의 기능 및 특징 - 패킷 분할과 연결형 통신

80000coding.oopy.io

 

 

OSI 7계층 | TCP/IP 4계층

 

7계층 프로토콜 (응용 계층)

  • HTTP (HyperText Transfer Protocol): 웹 페이지와 다른 웹 콘텐츠를 전송하기 위한 프로토콜입니다.
  • HTTPS (HTTP Secure): SSL 또는 TLS를 사용하여 암호화된 연결을 통해 HTTP 통신을 보안 강화합니다.
  • FTP (File Transfer Protocol): 파일을 전송하기 위한 프로토콜로, 네트워크를 통해 파일을 업로드하고 다운로드 할 수 있습니다.
  • SMTP (Simple Mail Transfer Protocol): 이메일 전송을 위한 프로토콜입니다.
  • DNS (Domain Name System): 도메인 이름을 IP 주소로 변환하는 프로토콜입니다.
  • SNMP (Simple Network Management Protocol): 네트워크 장비를 관리하고 모니터링하기 위한 프로토콜입니다.
  • SIP (Session Initiation Protocol): 인터넷 통신 프로토콜로 주로 음성, 비디오 통화 및 인스턴트 메시징에 사용됩니다.

4계층 프로토콜 (전송 계층)

  • TCP (Transmission Control Protocol): 신뢰성 있는 연결 지향적 데이터 전송을 제공하는 프로토콜로, 데이터 순서 보장 및 오류 검사 기능을 제공합니다.
  • UDP (User Datagram Protocol): 연결 없이 데이터를 전송하는 프로토콜로, 빠른 전송을 위해 오류 검사와 수정 기능을 최소화합니다.
  • SCTP (Stream Control Transmission Protocol): TCP와 유사하지만 멀티스트리밍을 지원하는 신뢰성 있는 전송 프로토콜입니다.
  • DCCP (Datagram Congestion Control Protocol): UDP와 유사하지만 혼잡 제어 기능을 추가한 프로토콜입니다.

 

응용 계층의 프로토콜은 전송 계층의 프로토콜을 이용하여 데이터가 송수신된다.

프로토콜을 프로토콜로 전달한다는 부분에서 헷갈릴 여지가 있을 수 있다.

데이터의 형식을 결정하는 것이 응용계층의 프로토콜이고, 데이터의 전송방식을 결정하는 것이 전송계층의 프로토콜.

따라서 둘은 별개로 동작이 가능하다.

 

그림의 구조처럼 TCP는 데이터를 세그먼트 단위로 분해해서 보내는데 TCP프로토콜의 데이터 자체는 포맷이 정해져 있지 않다. 그래서 응용계층에서 해당 데이터의 포맷을 지정하여 수신쪽의 응용 프로그램이 정해진 포맷을 이용하여 수신이 가능하도록 만들 수 있다. 

 

해당 방식으로 응용계층의 프로토콜은 각각 전송계층의 프로토콜을 선택해서 이용이 가능하며 전송계층 프로토콜의 장단점을 모두 가져가 적용이 가능하다.

 

대표적인 예로 HTTP 프로토콜이 TCP 프로토콜을 이용하여 데이터 전송의 신뢰성을 확보한 것과 같은 것이다.

TCP 프로토콜은 스트림 전송방식을 택해 지속적으로 데이터를 전송(최소 Heart beat같은 형식으로라도)해야하는데, 이를 이행하지 않고 HTTP는 단발성으로 메시지를 전송하고 연결을 끊는 식으로 사용하여 TCP의 신뢰성 확보에 대한 장점만을 가져왔다.

 

전송계층의 프로토콜로는 주로 TCP가 많이 사용 되는데 그 이유는 다음과 같다.

 

응용 계층 프로토콜이 주로 TCP를 사용하는 이유는 TCP가 제공하는 여러 가지 중요한 기능 때문입니다. TCP는 신뢰성, 데이터 순서 보장, 에러 검사 및 수정 등의 특징을 가지고 있어 대부분의 응용 프로토콜의 요구 사항을 충족시킵니다. 구체적으로 다음과 같은 이유로 TCP가 널리 사용됩니다:

  1. 신뢰성: TCP는 손실된 패킷을 감지하고 재전송을 요구함으로써 데이터 전송의 신뢰성을 보장합니다. 이는 파일 전송, 웹 페이지 로딩, 이메일 전송 등 대부분의 응용 프로그램에서 중요한 요소입니다.
  2. 데이터 순서 보장: TCP는 패킷의 순서를 유지하여 수신자가 데이터를 올바른 순서로 재조립할 수 있도록 합니다. 이는 복잡한 데이터 구조를 전송할 때 필수적입니다.
  3. 흐름 제어 및 혼잡 제어: TCP는 네트워크의 혼잡 상태를 모니터링하고, 데이터 흐름을 조절하여 네트워크 오버로드를 방지합니다. 이는 네트워크 상황에 따라 전송 속도를 조절하여 최적의 성능을 유지하게 합니다.
  4. 연결 지향적: TCP는 연결을 수립하여 통신이 시작되기 전에 양쪽 시스템이 서로를 인식하고 준비되었는지 확인합니다. 이 초기 단계는 데이터가 정확하게 전송될 수 있는 환경을 만드는 데 도움을 줍니다.

UDP 같은 다른 전송 계층 프로토콜은 TCP보다 덜 복잡하고 전송 지연이 적은 특징을 가지고 있지만, 신뢰성과 순서 보장이 필요 없는 응용 프로그램에서 주로 사용됩니다. 예를 들어, 실시간 비디오 스트리밍이나 온라인 게임에서는 데이터 패킷이 손실되더라도 전체 서비스에 크게 영향을 미치지 않기 때문에 UDP가 선호됩니다.

 

SCTP와 같은 다른 전송 프로토콜도 있지만, 이들은 특정 유형의 네트워크 통신에 최적화되어 있으며, TCP만큼 범용적으로 사용되지는 않습니다. TCP가 널리 사용되는 이유는 그만큼 대부분의 응용 프로그램 요구 사항을 잘 충족시키기 때문입니다.