네트워크 9강 - Transport Layer 개론

늘보·2021년 7월 6일
0

컴퓨터 네트워크

목록 보기
8/10

→ Open in Slid

  • 본 글은 이전에 사용하던 영상 강의 필기 앱인 'Slid'에서 필기 했던 내용을 Velog로 옮긴 내용입니다.
  • 본 글은 이화여대 이미정교수님 2014학년도 1학기 컴퓨터 네트워크 강의를 기반으로 작성되었습니다.
  • 강의 링크 : http://www.kocw.net/home/search/kemView.do?kemId=1046412

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

Transport Layer, 전송계층

  • 지금까지 공부했던 Application Layer는 전송을 담당하는 계층이 아니다. Http는 사용자가 만들어낸 데이터를 메세지로 만드는 '규칙'이었고 DNS는 도메인-IP간 매핑을 해주는 '서비스'였다.
  • 애플리케이션 계층의 웹브라우저든 이메일 클라이언트든 모두 "프로세스"이다. TCP는 프로세스 간 "Logical Communication"을 담당한다.
  • Logical Communication, 논리적 통신이란 실제 전송이 아니라 메세지를 주고받는 과정에서 오류체크, 흐름제어 등을 한다는 것이다.
  • 전송계층의 두 프로토콜TCP : Transmission Control ProtocolUDP : User Datagram Protocol
  • 멀티플렉싱, 디멀티플렉싱
    멀티플렉싱이란? ( Multiplexing, 줄여서 mux라고도 한다.)하나의 통신 채널로 여러개의 데이터를 !!동시에!! 보내는 것이다.여러 애플리케이션들이 전송계층으로 메세지를 전달하면전송계층에서는 헤더를 붙여서 캡슐화하고 네트워크 계층으로 일렬로 내려보낸다.디멀티플렉싱이란? ( Demultiplexing, 줄여서 demux라고도 한다.)수신 측 전송 계층에서 네트워크 계층에서 일렬로 올라온 데이터들을헤더정보를 보고 알맞은 각 애플리케이션 소켓으로 전달하는 것이다.Connection Oriented demuxTCP의 경우 연결을 맺는데 사용되는 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 플래그를 사용한다.) // Sequence Number부분 설명 다시 듣기

0개의 댓글