모두의 네트워크 Chap6 - 전송 계층

업데이트:

모두의 네트워크 6장 전송계층

전송계층의 역할

통신계층은 총 5가지가 있다. 아래에서부터 물리계층, 데이터 링크계층, 네트워크 계층, 응용계층이다.

데이터를 보내는 데에는 물리계층, 데이터링크계층, 네트워크 계층의 3계층이 있으면 목적지에 데이터를 보낼 수 있다. 하지만 이 3계층은 데이터가 손상되거나 유실되더라도 아무것도 해주지 않는다.

전송계층은 목적지에 신뢰할 수 있는 데이터를 전송하기 위해 필요하다. 계층 내에 오류를 점검하는 기능이 있고, 오류가 발생하면 데이터를 재전송 하도록 요청한다.

또한 데이터를 받았을 때, 해당 데이터의 목적지가 어떤 어플리케이션인지 식별하는 기능도 있다.

정리 - 전송계층의 기능

  • 계층 내에 오류를 점검하는 기능이 있다.
  • 오류가 발생하면 데이터를 재전송 하도록 요청한다.
  • 해당 데이터의 목적지가 어떤 어플리케이션인지 식별하는 기능이 있다.

연결형 통신(Conntection-Oriented)과 비연결형 통신(Connectionless)

전송계층은 신뢰성/정확성과 효율성으로 구분할 수 있다. 신뢰성/정확성은 데이터를 목적지에 문제없이 전달하는 것, 효율성은 데이터를 빠르고 효율적으로 전달하는 것이다.

  1. 연결형 통신 : 신뢰할 수 있고 정확한 데이터를 전달하는 통신이다.
    • 전화를 예로 들어보면, 전화 같은 경우 상대방과 연결이 될 때 까지 기다린다. 연결 후에는 상대방과 통화를 하고 끝나면 수화기를 내려 연결이 종료된다. 이처럼 연결형 서비스는 먼저 연결을 설정하고, 설정된 연결을 이용해 서비스를 한 후, 서비스를 마치면 다시 연결을 해제한다.
    • 연결형 통신 내부에서는 응답(acknowledgements)과 재전송(retransmissions)를 사용해 송신측이 보낸 메시지를 수신측이 잘 받았는지 여부를 수신측에서 보낸 응답을 통해 완벽하게 전송이 이루어졌는지 확인한다. 만약 잘 받지 못했다는 응답이 오거나 정해진 시간안에 응답이 오지 않으면 재전송을 한다.
  2. 비연결형 통신 : 효율적으로 데이터를 전달한다.

    • 연결이나 해제 과정이 없다. 우편을 예로 들어보면, 편지를 보낼 때 봉투에 상대방 주소만 적어서 보내도 목적지 주소만을 토대로 해당 목적지까지 배달이 된다. 네트워크에서도 마찬가지로 해당 목적지 주소만을 가지고 해당 메시지가 이동한다.
    • 목적지 주소만 가지고 네트워크를 통해 해당 목적지에 도달하기 때문에 항상 정해진 경로를 사용하지는 않는다. 송신측/수신측의 거리가 가깝다면 상관없겠지만, 중간에 여러개가 라우터가 존재하고 거리가 멀어진다면 네트워크 상황에 따라 라우터가 알아서 최적의 경로로 라우팅 하기 때문에 경로가 달라질 수 있다.

그림넣기

그림처럼 연결형 통신은 신뢰성/정확성이 우선인 통신이라서 여러번 확인하고 보내는 반면 비연결형 통신은 일방적으로 데이터를 보낸다. 신뢰성과 정확성 보다는 효율성이 우선이므로 확인 절차 없이 일방적으로 보내는 것이다. 비 연결형 방식은 보통 동영상을 보는 데에 쓰인다. 동영상은 신뢰할 수 있고 정확학 데이터 전송보다 빠른 전송이 필요하기 때문이다.

1초에 수십개의 프레임을 보여줘야 하는 멀티미디어 데이터의 경우, 만약 한 프레임의 데이터가 뒤늦게 도착했거나 분실되었다고 하여 데이터 재전송을 요청한다면 수신측에서는 그만큼의 시간을 다시 기다려야 할 것이다. 그러면 스트리밍 서비스는 수시로 끊기고 유저의 불만이 증가할 것이다. 수십개의 프레임 중에 한 두개의 프레임이 사라져도 사용자는 눈으로 느끼지 못하기 때문에 비 연결형 방식을 사용해도 되는 것이다.

전송 연계층의 연결형 통신 프로토콜에는 TCP(Transmission Control Protocol)가 사용되고, 비연결형 통신 프로토콜에는 UDP(User Datagram Protocol)가 사용된다.

TCP의 구조

TCP는 신뢰성과 정확성을 우선으로 하는 연결형 통신 프로토콜이다.

데이터 송신측에서 캡슐화 하여 보낸 데이터 정보를 역캡슐화 할 때 TCP헤더라고 하고, 이 TCP헤더가 붙은 데이터를 세그먼트(segment)라고 한다.

TCP헤더에는 목적지까지 데이터를 제대로 전송하기 위해 필요한 11가지 정보를 담고있다.

TCP 와 UDP [동작원리/헤더/차이점] : 네이버 블로그

TCP는 연결형 통신에 사용되는 프로토콜이다. 연결형 통신은 데이터를 전송하기 전에 먼저 연결(connection)이라는 가상의 독점 통로를 확보해야 한다.

Flags코드 비트에는 연결의 제어 정보가 기록되는 곳이다. 연결을 확립하려면 Flags 내부의 비트정보 중 SYN과 ACK가 필요하다.

SYN : 확인을 뜻한다.

ACK : 확인 응답을 뜻한다.

3-way 핸드셰이크

연결(connection)은 SYN과 ACK를 사용해야만 확립할 수 있다.

확립과정
컴퓨터1 ---연결확립요청(SYN)----> 컴퓨터2
컴퓨터1 <---------------------- 컴퓨터2
        확립요청(SYN)+확립응답(ACK)
컴퓨터1 ---연결확ㅎ립응답(ACK)----> 컴퓨터2

이처럼 데이터를 보내기 전에 연결을 확립하기 위해 팩킷 요청을 세번 교환하는 것을 3-way 핸드셰이크(3-way-handshacke)라고 한다. 사람들이 악수하는 것 처럼 데이터 통신에서도 확실하게 데이터가 전송되었는지 확인하며 이루어지는 통신수단인 것이다.

연결을 끊을때도 FIN과 ACK를 사용한다. FIN은 연결 종료를 뜻한다.

일련 번호와 확인 응답 번호의 구조

3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 받을대는 TCP헤더의 일련번호(Seqyence Number)와 확인 응답번호(Acknowledgment Number)를 사용한다.

캡처

일련번호는 송신측에서 수신측에 ‘이 데이터가 몇 번째 데이터인지’ 알려주는 역할을 한다.

확인 응답 번호는 수신측이 몇 번째 데이터를 수신했는지 송신측에 알려 주는 역할을 한다. 이 번호는 다음 번호의 데이터를 요청하는데도 사용된다. 예를 들면 10번 데이터를 수신하면 그 다음 11번 데이터를 송신 측에 요청한다. 이것을 확인응답 이라고 한다.

TCP는 데이터 전송을 할 때 일련번호와 확인 응답번호를 사용해서 데이터가 손상되고나 유실된 경우에는 데이터를 재전송한다. 이것을 재전송 제어라고 한다.

윈도우 크기(버퍼)

위와같이 세그먼트(데이터)를 하나 보낼때 마다 확인 응답을 한 번 반환하는 통신은 효율이 좋지 않다. 대신 세그먼트를 한꺼번에 여러개를 보낸 다음 확인 응답을 반환하면 효율이 높아진다. 받은 세그먼트를 일시적으로 보관하는 장소를 버퍼(buffer)라고 한다.

하지만 수신 측이 세그먼트를 대량으로 받아서 처리하지 못하는 경우도 있다. 수신 측에서 대량으로 데이터가 전송되어 송신 측에서 보관하지 못하고 넘쳐 버리는 경우를 오버플로(overflow)라고 한다.

오버플로가 발생하지 않도록 버퍼의 한계 크기를 알고 있어야 하며, 그것이 TCP헤더의 윈도우 크기(window size)에 해당한다.

포트 번호의 구조

전송계층은 데이터의 목적지가 어떤 어플리케이션인지 구분하는 역할도 있다.

만약 목적지를 구분하지 못한다면, 사용자가 웹사이트를 보기 위해 브라우저를 사용하는데도 메일 프로그램으로 데이터가 전송될 수 있다. 그래서 전송계층은 출발지 포트번호(source port number)와 목적지 포트 번호(destination port number)가 필요하다.

캡처

TCP헤더에 포트 번호가 있기 때문에 애플리케이션을 구분할 수 있게 된다.

보통 포트 번호는 0~65535번을 사용할 수 있다.

0~1023번 포트는 주요 프로토콜이 사용하도록 예약되어있다. 이러한 포트를 well-Known-prots라고 한다. 일반적으로 사용하는 서버 측 애플리케이션에서 사용되고 있다.

웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할당된다. 그래서 서브 측에는 포트 번호를 정해둬야 하지만 클라이언트 측을 정하지 않아도 괜찮다.

UDP의 구조

UDP는 비연결형 통신이라 데이터를 전송할 때 TCP처럼 시간이 걸리는 확인 작업을 일일이 하지 않는다.

UDP의 장점은 데이터를 효율적으로 빠르게 보내는 것 이라서 스트리밍 방식으로 전송하는 동영상 서비스 같은 곳에 사용한다.

  • UDP헤더의 구조

UDP 패킷(packet) 헤더 구조

UDP는 신뢰성과 정확성이 필요하지 않아서 이 정도 정보만으로도 충분하다.

또한 UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 일괄로 데이터를 보낼 수 있다. 이것을 브로드캐스트(broadcast)라고 한다.

태그:

카테고리:

업데이트:

댓글남기기