본문 바로가기
컴퓨터 네트워크

네트워크 9강 - Transport Layer 개론

by N.Damgom 2020. 8. 10.

지금까지 Application Layer에 대해 알아봤다.  http와 rest api의 심화 내용은 다른 과목에서 더 깊게 공부하기로 하자. 이번 강의의 목적은 네트워크 전반의 이해를 통해  웹 응용 기술들을 시스템적 관점에서 바라볼 수 있게함에 있다.

 


Transport Layer, 전송계층

  • 지금까지 공부했던 Application Layer는 전송을 담당하는 계층이 아니다. Http는 사용자가 만들어낸 데이터를 메세지로 만드는 '규칙'이었고 DNS는 도메인-IP간 매핑을 해주는 '서비스'였다.
  • 애플리케이션 계층의 웹브라우저든 이메일 클라이언트든 모두 "프로세스"이다. TCP는 프로세스 간 "Logical Communication"을 담당한다.
  • Logical Communication, 논리적 통신이란 실제 전송이 아니라 메세지를 주고받는 과정에서 오류체크, 흐름제어 등을 한다는 것이다.
  • 전송계층의 두 프로토콜
    • TCP : Transmission Control Protocol
    • UDP : User Datagram Protocol
  • 멀티플렉싱, 디멀티플렉싱
    • 멀티플렉싱이란? ( Multiplexing, 줄여서 mux라고도 한다.)
      • 하나의 통신 채널로 여러개의 데이터를 동시에 보내는 것이다.
      • 여러 애플리케이션들이 전송계층으로 메세지를 전달하면
      • 전송계층에서는 헤더를 붙여서 캡슐화하고 네트워크 계층으로 일렬로 내려보낸다.
    • 디멀티플렉싱이란? ( Demultiplexing, 줄여서 demux라고도 한다.)
      • 수신 측 전송 계층에서 네트워크 계층에서 일렬로 올라온 데이터들을
      • 헤더정보를 보고 알맞은 각 애플리케이션 소켓으로 전달하는 것이다.
      • Connection Oriented demux
        • TCP의 경우 연결을 맺는데 사용되는 Door Socket이 있고 커넥션 별로 소켓이 따로 있다.
        • 따라서 한 프로세스가 커넥션 마다 소켓 하나씩을 가지므로 여러개의 소켓을 가질 수 있다.
        • 따라서 demux를 위해선 목적지 프로세스와, 출발지 프로세스에 대한 정보가 필요하다.
          • 목적지 프로세스 구분을 위해 : 목적지 IP, 포트번호
          • 출발지 프로세스 구분을 위해 : 출발지 IP, 포트번호
          • 따라서 TCP는 총 네개의 정보가 필요하다.

UDP : User Datagram Protocol

  • UDP 프로토콜의 특징
    • 연결을 맺지 않는, Connection Less Protocol이다.
    • 신뢰성이 낮고 (Unreliable), 순서를 맞춰서 전송해주지 않는다 (Unordered)
    • 체크섬 기능으로 오류가 발생했는지 안했는지만 알려준다.
    • 거의 기능이 없는 가장 기본적인 프로토콜이다.
  • 왜 사용할까?
    • Best Effort : Congestion Control 없이 일단 보낸다.
    • Pure (No frils)하다.
    • 그러므로 전송 오버헤드가 없다.
  • 어디에 사용할까?
    • 스트리밍 : Data Integrity보단 처리량이 중요하므로 Best Effort로 전송하는 UDP를 사용한다. 이론적으론 그렇지만 실제로는 TCP를 많이 사용한다.
    • DNS : 일회성 질의이므로 굳이 커넥션을 맺을 필요가 없다.
    • SNMP : SNMP는 망 관리 프로토콜이다. 정기적으로 최신정보를 업데이트하므로 Data Integrity가 중요하지 않다.
    • 신뢰성이 매우 중요한 경우 : 신뢰성이 매우 중요한 경우에는 Integrity를 애플리케이션 계층에서 확인하므로 TCP가 필요없다.
    • Http 3.0은 TCP 오버헤드를 줄이기 위해 UDP를 사용한다.

신뢰성있는 데이터 전송의 원리

  • 신뢰성있는(Reilable) 데이터 전송을 위해선 다음과 같은 기능이 필요하다.
    • Checksum : 체크섬 비트를 둬서 데이터에 오류가 있는지 검사하는 방법
    • Ack : Acknowledge, 잘 받았다는 확인 응답
    • N-Ack : Negative Acknowledge, 잘못 받았다는 확인 응답, 웹에서는 사용하지 않는다.
    • Timer : Ack를 무한정 기다릴 수 없으므로 타이머를 둔다.
    • Window Pipelining : 데이터 전송과 수신을 비동기식으로 처리하기 위한 Window다. 쉽게 얘기하자면 데이터를 주고-받고-주고-받고가 아니라 주고 주고 주고 받고 주고 받고 받고 식으로 통신한다는 것이다.
    • Sequence Number : 순서에 맞는 데이터 전송을 위한 순서 정보다. 포트를 재사용할 수 있으므로 통신 시작 시  랜덤한 Sequence 동기화하는 과정을 거친다. (SYN 플래그를 사용한다.)

 

 

더보기

본 게시물은 kocw 이화여자대학교 이미정 교수님의 컴퓨터 네트워크 강의를 듣고 정리한 글임을 밝힙니다.

내용상 틀린 부분이 있을 수도 있으며 이에 대한 책임을 지지 않습니다.

틀린 부분이나 오타 지적은 댓글로 남겨주세요.

www.kocw.net/home/cview.do?cid=e44bdd9b3a3f9bb5