ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Network] TCP와 UDP
    CS/Network 2021. 7. 15. 23:37

    📝 TCP와 UDP


    ✨ 해당 글은 아래 [10분 테코톡]을 듣고 작성했습니다.✨

     

     


     

     

    📌 Transport Layer

     

    🔎 전송 계층?

     

    - End Point간 신뢰성있는 데이터 전송을 담당하는 계층이다.

    • 신뢰성: 데이터를 순차적, 안정적으로 전달한다.
    • 전송: 포트 번호에 해당하는 프로세스에 데이터를 전달한다.

     

     

    🔎 전송 계층이 없다면 어떻게 될까?

     

    - 데이터의 순차적 전송을 원활히 할 수 없다.

    • 송신자의 의도대로 데이터를 전달하지 못할수도 있다.

     

    - 흐름 문제(Flow)

    • 송 수신간에 데이터 처리 속도에 차이 때문에 발생한다.
    • 만약 수신자가 처리할 수 있는 데이터량을 초과한다면 데이터가 손실될 수 있다.

     

    - 혼잡 문제(Congestion)

    • 네트워크의 데이터 처리 속도로 인해 발생한다.
    • 현재 네트워크가 혼잡할 때 통신이 제대로 되지 않아 발생한다.

     

     

     

    📌 TCP

     

    🔎 Transmission Controle Protocol

     

    - 신뢰성 있는 통신을 가능하게 해주는 Transport Layer의 protocol이다.

    • connect을 연결하여 통신한다. 이 내용은 뒤에서 자세히 알아보자.
    • 데이터의 순차적 전송을 보장한다.
    • 흐름 제어 기능을 제공한다.
    • 혼잡 제어 기능을 제공한다.
    • 오류 감지 기능을 제공한다.

     

     

    🔎 TCP 헤더에 대해 알아보자.

     

    - 먼저 TCP헤더의 요소에 대해 알아보자.

    • 출발지의 포트번호
    • 목적지의 포트번호
    • Sequence Number, Acknowledgement Number: 데이터의 순차적 전송을 보장하기 위한 번호
    • flags: 제어비트. TCP 세그먼트의 종류를 표시한다.
    • checksum: 오류 검출용 비트

     

    - Flags의 종류중에 중요한 것 몇가지를 알아보자.

    • SYN: connection연결 요청시 사용한다.
    • FIN: 연결 해제 요청시 사용한다.
    • ACK: 요청에 대한 응답을 할때 요청을 잘 받았다는 의미로 사용한다.

     

     

    🔎 TCP의 Connection을 연결하고, 데이터를 전송하고, 연결을 해제하는 과정을 알아보자.

     

    - 연결요청 3-way-handshaking

    1. A가 SYN 비트를 1로 설정해 B로 패킷 송신
    2. B가 SYN, ACK 비트를 1로 설정해 A로 패킷 송신
    3. A가 ACK 비트를 1로 설정해 B로 송신
    4. ESTABLISHED (연결됨)

     

    - 데이터 전송

    1. A가 B로 패킷을 송신
    2. B에서 ACK 비트를 1로 설정해 A로 송신
    3. A가 ACK를 받지 못하면 재전송

     

    - 연결해제 4-way-handshaking

    1. 데이터를 전부 송신한 A가 FIN 비트를 송신
    2. B가 ACK 비트를 A로 송신
    3. B는 A의 남은 패킷을 송신할때까지 대기
    4. B가 FIN 비트를 A로 송신
    5. A가 ACK 비트를 B로 송신
    6. CLOSED (연결 해제됨)

     

     

    🔎 TCP의 문제점은 없을까?

     

    - 전송의 신뢰성은 보장하지만 다음과 같은 문제점이 있다.

    • 매번 connection을 연결해서 시간적 손실이 발생한다. (3-way-handshaking)
    • 패킷을 조금만 손실해도 재전송한다.

     

     

     

    📌 UDP

     

    🔎 User Datagram Protocol

     

    - TCP보다 신뢰성이 떨어지지만 전송 속도가 TCP에 비해 빠른 Transport Layer의 protocol

    • connectionless. 연결 요청-해제 과정이 필요 없다.
    • 에러 검출 기능만 있다.
    • 비교적 데이터 신뢰성이 중요하지 않을 때 사용한다. (ex. 영상 스트리밍)

     

     

    🔎 UDP 헤더에 대해 알아보자.

     

    - UDP헤더 요소에 대해 알아보자.

    • 출발지의 포트번호
    • 목적지의 포트번호
    • checksum: 오류 검출용 비트

     

     



    ✍ TCP, UDP에 대해 알아야 하는 이유!

    1. TCP, UDP의 특성을 파악하고 상황에 따라 적절한 프로토콜을 사용할 수 있어야 한다.
    2. TCP, UDP의 헤더에 대해 파악하고 성능 개선에 이용할 수 있어야 한다.

     

    'CS > Network' 카테고리의 다른 글

    Network - Dynamic Routing Protocol  (0) 2021.03.11
    Network - Routing  (0) 2021.03.06
    Network - 클라우드  (0) 2021.02.23
    Network - VPN  (0) 2021.02.21
    Network - NAT  (0) 2021.02.16

    댓글

Designed by Tistory.