230912 TCP와 UDP

나윤빈·2023년 9월 12일
0

TIL

목록 보기
51/55

TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 컴퓨터 네트워크에서 사용되는 두 가지 주요한 통신 프로토콜이다.

1. TCP

  • TCP(Transmission Control Protocol)는 신뢰성 있는 연결 지향형 프로토콜로 데이터를 안정적으로 전송하기 위해 설계되었다.
  • 데이터를 세그먼트(segment)로 나누고, 각 세그먼트에 일련의 순서 번호를 할당하여 데이터를 보낼 때 순서를 보장한다.
  • 데이터가 손실되거나 손상된 경우, 수신 측에서 재전송을 요청하여 데이터의 완전성을 보존한다.
  • 연결 설정과 해제 과정이 포함되어 있으며 이 과정에서 핸드셰이크(Handshake)를 통해 양쪽 간의 통신을 시작하고 종료한다.
  • 주로 웹 브라우징, 이메일, 파일 전송 및 데이터베이스 관리와 같은 응용 프로그램에서 사용된다.

📌 세그먼트(segment)란? 데이터를 작은 조각들로 나눈 단위를 말한다. TCP는 데이터를 세그먼트로 분할하여 네트워크를 통해 전송하고 이러한 세그먼트들은 수신 측에서 원래 데이터로 재조립된다.

  • 세그먼트의 구성요소

    • 헤더(Header): 세그먼트의 헤더에는 TCP 통신에 필요한 제어 정보가 포함된다. 이 정보에는 송신자 및 수신자의 포트 번호, 순서 번호, 확인 응답 번호, 윈도우 크기 등이 포함된다.
    • 데이터(payload): 실제로 전송되어야 하는 데이터가 세그먼트에 포함된다. 이 데이터는 응용 프로그램에서 생성되거나 전송되는 정보이다.
    • 체크섬(Checksum): 체크섬은 세그먼트의 데이터와 헤더의 무결성을 확인하기 위한 값으로 오류 검출을 위해 사용된다.
    • 옵션(Options): TCP 헤더에는 여러가지 옵션 필드가 포함될 수 있으며 이를 통해 특정 기능을 활성화하거나 세부 설정을 조정할 수 있다. 대부분의 TCP 세그먼트에서는 옵션을 사용하지 않지만 필요한 경우 추가 설정을 할 수 있다.

📌 핸드셰이크(handshake)란? 컴퓨터 네트워크 및 통신에서 두 시스템 간의 연결을 설정하거나 종료하는 데 사용되는 프로토콜 또는 프로세스이다. 핸드셰이크는 주로 TCP와 관련이 있으며 네트워크 통신의 안정성과 신뢰성을 유지하기 위해 중요한 역할을 한다.

  • TCP 핸드셰이크 프로세스

    • 연결 요청: 클라이언트가 서버에 연결을 요청하면 클라이언트는 SYN 패킷을 보낸다. SYN 패킷에는 클라이언트의 초기 순서 번호가 포함되어 있다.
    • 연결 수락: 서버가 클라이언트의 연결 요청을 수락하면 서버는 SYN-ACK 패킷을 클라이언트로 보낸다. SYN-ACK 패킷에는 서버의 초기 순서 번호와 클라이언트의 SYN을 확인하는 응답 번호가 포함된다.
    • 연결 확인: 클라이언트는 서버에서 온 SYN-ACK 패킷을 받으면 연결을 확인하기 위해 ACK 패킷을 서버로 보낸다. 이 ACK 패킷에는 서버의 순서 번호를 확인하는 정보가 포함된다.
    • 핸드셰이크 후, 클라이언트와 서버 간에 안정적인 연결이 설정된다. 이후 데이터 전송이 이루어질 때에는 순서 번호와 확인 응답 번호를 사용하여 데이터의 순서와 완전성을 보장하게 된다.

2. UDP

  • UDP(User Datagram Protocol)는 비연결형 프로토콜로 데이터를 보내고 받는 간단한 매커니즘을 제공한다.
  • 데이터를 패킷(packet) 단위로 보내며 각 패킷에는 송신 및 수신 주소, 포트 번호 등의 정보가 포함된다.
  • 데이터 전송 중 어떠한 피드백이나 재전송 메커니즘을 제공하지 않으므로 속도가 빠르지만 데이터의 신뢰성은 보장되지 않는다.
  • 주로 실시간 음성 및 영상 스트리밍, 온라인 게임 및 DNS와 같이 신속한 데이터 전송이 중요한 응용 프로그램에서 사용된다.

📌 패킷(packet)이란? 컴퓨터 네트워크에서 데이터를 전송하기 위한 기본 단위이다. 패킷은 데이터 전송 중에 정보를 분할하고 구조화하여 안정적이고 효율적인 네트워크 통신을 가능하게 한다.

  • 패킷의 구성요소

    • 헤더(Header): 패킷의 시작 부분에 위치하며 중요한 제어 및 메타데이터를 포함한다. 이 정보에는 송신자 및 수신자의 IP 주소, 포트 번호, 패킷 순서, 오류 검출을 위한 체크섬, TTL값 등이 포함된다.
    • 페이로드(Payload): 실제로 전송해야 하는 데이터 부분으로 패킷의 큰 부분을 차지한다. 텍스트, 이미지, 음성 또는 기타 형식의 데이터가 페이로드로 들어간다.
  • 패킷 프로세스

    • 분할 및 전송: 큰 데이터를 전송할 때 이를 작은 패킷으로 분할한다. 이렇게 분할한 패킷들은 네트워크를 통해 전송된다. 각 패킷은 목적지에 도달하기 위해 라우터, 스위치 및 중간 노드를 통과한다.
    • 라우팅: 패킷은 목적지까지 가장 효율적인 경로로 라우팅된다. 이 과정에서 라우터 및 스위치와 같은 네트워크 장비가 사용된다. 각 라우터는 패킷 헤더에 있는 IP 주소 정보를 사용하여 다음 이동 경로를 결정한다.
    • 재조립: 패킷은 목적지에 도달하면 다시 원래 데이터로 재조립된다. 재조립된 데이터는 응용 프로그램이나 서비스로 전달되어 원하는 작업을 수행한다.
    • 오류 검출 및 복구: 패킷 헤더의 체크섬을 사용하여 데이터 손상을 감지할 수 있다. 손상된 패킷은 다시 요청하거나 복구할 수 있다.
    • 흐름 제어: 패킷 전송은 송신자와 수신자 간의 흐름 제어를 통해 조절된다. 수신자가 처리할 수 있는 속도에 맞게 패킷이 송신된다.

💡 TCP는 데이터 신뢰성을 중요시하는 프로토콜로 데이터 전송의 순서와 완전성을 보장한다. 반면 UDP는 데이터를 빠르게 전송하는 프로토콜로 어떠한 피드백 없이 데이터를 보낸다.

profile
프론트엔드 개발자를 꿈꾸는

1개의 댓글

comment-user-thumbnail
2023년 9월 12일

유용한 정보 잘 보고 갑니다 ...

답글 달기