TCP/IP 4계층 - 트랜스포트 계층

트랜스포트 계층

컴퓨터 안까지 들어온 데이터를 각 애플리케이션까지 전달하는 것이 트랜스포트 계층의 역할이다. 여러 컴퓨터로부터 받은 데이터들은 트랜스포트 계층에서 포트번호에 의해 분류되고 각 포트번호에 맞는 애플리케이션으로 전달된다.

트랜스포트 계층 프로토콜

두 가지의 대표 프로토콜이 있다.

  1. TCP

    • 웹이나 이메일같이 데이터가 정확하게 전달되어야 하는 통신에 사용된다.
    • Transmission Control Protocol
    • 수신지의 통신 상태를 확인하고 제대로 전송이 안됐을 경우 재전송하는 기능도 한다.
    • 높은 신뢰성 - 패킷 전송여부 확인
  2. UDP

    • VoIP나 동영상 스트리밍처럼 전송 속도가 중요한 통신에 사용된다.
    • User Datagram Protocol
    • 낮은 신뢰성 - 패킷 전송여부 미확인

역할

  1. 애플리케이션에 데이터를 전달한다.
    인터넷 계층과의 차이점을 알아두어야 할 것 같다. 트랜스포트 계층은 컴퓨터가 받은 데이터를 애플리케이션에 전달하는 역할을 가지며, 인터넷 계층은 데이터를 수신지 컴퓨터까지 전달하는 것이다.

  2. 포트번호로 애플리케이션을 구분한다.
    인터넷 계층을 통해 들어온 데이터를 애플리케이션에 전달해야 하는데 이때에 포트번호를 이용해서 각 애플리케이션을 구분한다. 인터넷 계층에서 프로토콜 번호가 6번이면 TCP로, 17번이면 UDP를 통해 트랜스포트 계층으로 전달되고 각 애플리케이션의 포트번호를 가지고 어떠한 애플리케이션으로 데이터를 전달할지 구분한다.

포트번호

  • 포트 번호는 컴퓨터 내부의 수신지를 표현한다.
    인터넷 계층이 전달한 여러 종류의 패킷이 트랜스포트 계층으로 전될되는데 해당하는 어플리케이션에 다시 전달하기 위해서 포트번호를 사용한다.

    ip_addr/post-no.

  • 포트 번호의 범위
    포트 번호는 0 ~ 65535번 까지 사용할 수 있으며 세 종류로 나누기도 한다.

    1. well-known ports : 서버 프로그램이 수신 대기할때 사용하는 포트번호
    2. registered ports : 벤더가 할당받아 사용하는 포트번호
    3. dynamic ports : 클라이언트 프로그램이 동적으로 할당받아 사용하는 포트번호. 때문에 미리 알수 없는 특징이 있다.

클라이언트 - 서버 접속 과정

클라이언트 - 서버가 서로 통신하는 과정은 다음과 같다.

  1. 클라이언트가 사용할 포트를 먼저 정한다

    • 이때에 사용되는 포트구분은 dynamic 포트이다
  2. 서버의 포트에 접속한다.

    • HTTP의 경우 80번 포트로 대기중인데 클라이언트가 동적으로 할당받은 포트번호를 가지고 서버에 접속을 요청하게 된다.
  3. 접속 완료

    • 웹 서버가 접속을 허용하면 통신 가능한 상태가 되고 통신이 종료되면 클라이언트는 할당 받은 포트를 반납한다.

또한 서버는 IP주소와 포트 번호로 요청하는 상대방을 식별한다. 서버는 수신 대기를 위해 고정된 포트 번호를 사용하지만, 접속을 요청한 클라이언트들은 각기 다른 포트번호를 사용한다. 이때에 서버는 서로 다른 클라이언트들을 구분하기 위해 IP주소와 포트번호를 사용하여 혼선없이 통신한다.

TCP(Transmission Control Protocol)

데이터 전송에 신뢰성을 더하기 위해 데이터를 세그먼트(segment) 단위로 분할하고, 전송 속도를 조정하며, 데이터가 제대로 전달되지 않았을 경우 재전송을 한다.

커넥션을 맺는 과정으로 3단계가 있다. 3방향 핸드셰이크(3-way handshake)라고 부르며, 커넥션이 맺어지면 데이터를 전송할 수 있는 상태가 되고, 데이터 전송이 끝나면 커넥션을 끊는다.(SYN / ACK / FIN)

UDP(User Datagram Protocol)

통신 과정에서 데이터의 손실이 발생할 수 있는데, VoIP와 같은 음성 서비스나 동영상 스트리밍 서비스는 일부 데이터가 누락되거나 왜곡되더라도 큰 문제가 없기 때문에 UDP를 주로 사용한다.

Share