OSI 4계층: 전송 계층

Choizz·2023년 3월 18일
0

OSI

목록 보기
5/5

오늘은 OSI 계층 중 4 계층인 전송 계층에 대해 포스팅하려고합니다.
3 계층까지 거치면서 데이터를 다른 네트워크로 전달할 수 있게 됐습니다.
하지만, 데이터를 전송하더라도 목적지에 안전하게(데이터 손실 등이 없이) 도착하지 못 할 가능성이 존재합니다.
그래서, 전송 계층인 4계층은 목적지로 데이터를 안전하게 전송할 수 있는 역할을 합니다.


전송 계층

목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요한 계층.

  • 오류를 체크하는 기능이 있어 오류가 발생하면 데이터를 재전송하도록합니다.
  • 전송된 데이터의 목적지가 어떤 애플리케이션에 전송해야 하는지 알려줍니다.
    • 이메일로 가는지, 웹 사이트로 가는지...

연결형 통신과 비연결형 통신

전송 계층의 통신 방식은 연결형과 비연결형으로 나눌 수 있습니다.

연결형 통신(TCP)

  • 신뢰할 수 있고, 정확한 데이터를 전달하는 통신을 이야기합니다.
  • 목적지와 연결하여 서로의 상태를 확인해 가면서 통신하는 방식입니다.

비연결형 통신(UDP)

  • 효율적으로 데이터를 전달하는 통신을 말합니다.
  • 상대편을 확인하지 않고 일방적으로 데이터를 전송하는 방식입니다.

TCP(Transmission Control Protocol, 전송 제어)

  • 전송 계층이 TCP 통신(연결형 통신)을 할 때, 데이터에 TCP 헤더라는 것을 붙입니다.
  • 이러한 TCP 헤더가 붙은 데이터를 세그먼트라고 합니다.
  • TCP는 연결형 통신이기 때문에 상대방을 확인하면서 데이터를 전송하는데, 커넥션(connection)이라는 가상의 독점 통신로를 확보한 후 연결을 확인하고 데이터를 전송합니다.
  • TCP 헤더에 코드 비트라는 정보가 붙는데, 여기서 6비트로 연결 제어 정보가 기록됩니다.

  • 초깃 값은 0이고 비트가 활성화 되면 1로 바뀜니다. 연결을 확인하기 위해 필요한 것은 SYNACK입니다.

3-hand-shake

  • 가상의 통신을 하기 위해 커넥션을 확립하기 위해서는 SYNACK을 사용하여 확립합니다.
  • 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷을 교환하는데 세 번에 걸쳐 확인을 하기 때문에 3 hand shake라고 불립니다.

  • 통신을 하려면 목적지에 허가를 받아야하므로 출발지에서 목적지로 연결을 하기 위한 요청(SYN)를 보냅니다.

  • 목적지에 요청을 받은 후 허가한다는 응답을 보내기 위해 연결 확립 응답(ACK)를 보내고, 동시에 목적지에서도 출발지에게 데이터 전송을 허가 받기 위한 SYN을 같이 보냅니다.

  • 출발지에서도 목적지에 요청을 허가한다는 의미로 ACK를 보냅니다.

연결 종료

  • 연결을 종료하기 위해서는 FINACK을 사용합니다.
  • 출발지에서 목적지로 연결 종료 요청(FIN)을 보냅니다.
  • 목적지에서 출발지로 응답(ACK)를 반환하고 목적지에서도 FIN 요청을 보냅니다.
  • 출발지에서 목적지로 ACK 응답을 합니다.

일련번호와 확인 응답 번호

연결이 확립된 후 실제 데이터를 보내거나 받을 때는 TCP 헤더의 일련번호(sequence number)확인 응답 번호(acknowledgement number)를 사용합니다.

  • 일련 번호 : 출발 측에서 목적지에 지금 데이터가 몇 번째 데이터인지 알려주는 기능을 합니다.
    ( 데이터를 나눠서 보내는 것을 기억해야합니다!)
  • 확인 응답 번호 : 목적지에서 몇 번째 데이터를 수신했는지 출발지에 알려주는 역할을 합니다.
    • 이 번호는 다음 번호의 데이터를 요청하는데 사용됩니다.

  • 일련 번호인 2001과 확인 응답 번호인 3001은 연결이 확립될(3-hand-shake) 때, 결정됩니다.

  • 출발지는 목적지로 200 바이트를 전송합니다.

    • 출발지에서 데이터 정보(2001)과 확인 응답 번호(3001)을 목적지에 보냅니다.
  • 목적지는 이를 수신하고 다음에 수신하고자 하는 데이터 번호를 확인 응답 번호에 넣습니다. (2001 + 200바이트) 그리고, 일련 번호에 출발지에서 보낸 확인 응답 번호를 넣습니다.

  • 데이터 전송이 완료될 때까지 반복합니다.

  • 일련번호와 확인 응답 번호를 사용해 데이터가 손상되거나 유실된 경우 데이터를 재전송하도록 하는데, 이를 제전송 제어라고 합니다.

윈도우 크기(window size)

  • 위 처럼, 세그먼트를 하나 씩 보낼 때마다 확인 응답을 받는 것은 비효율적입니다.
  • 그래서, 버퍼라는 일시적인 보관소를 사용해서, 세그먼트를 연속으로 보내고 한 번에 확인 응답을 받는 방법을 사용합니다.
  • 이때, 목적지에서 대량으로 세그먼트를 받아서 처리하지 못할 수 있으므로 출발지와 목적지의 버퍼의 한계 크기를 알고있어야 하는데, 이것이 TCP 헤더의 윈도우 크기입니다.
  • 즉, 버퍼에서 얼마나 많은 용랴으이 데이터를 저장해 둘 수 있는지를 나타냅니다.
  • 이것 또한, 3-hand-shake를 할 때, 판단을 합니다.

포트(port)

위에서 언급했지만, 전송 계층에서 목적지가 어떤 앱인지 구분하는 역할이 있습니다.
이러한 구분을 TCP 헤더의 포트 번호로 구분합니다.

  • TCP 헤더에는 출발지 포트 번호와, 목적지 포트 번호가 저장돼 있습니다.
  • 포트 번호는 0~65535번 까지 사용할 수 있습니다.
  • 0~1023(well-known ports)은 주요 프로토콜이 사용하도록 예약되어 있습니다.
  • 1024는 사용하지 않는 포트이고, 1025 이상은 랜덤 포트로 클라이너트 측의 송신 포트로 사용됩니다.
  • 포트 번호는 아파트의 호수라고 생각하면 되고, 그 집의 주인이 앱이라고 생각하시면 됩니다.
    - 예를 들어, 8080 포트로 접속을 하면 주인인 HTTP 애플리케이션을 만나게 되고, 443 포트로 접속을 하면 주인인 HTTPS 애플리케이을 만나게 됩니다.
  • 웹 브라우저에 접속하면, 임의의 포트가 자동으로 할당됩니다. 반면, 서버는 포트 번호를 정해두어야 합니다.

UDP(User Datagram Protocol, 사용자 데이터그램 )

  • UDP는 비연결 통신이기 때문에, 데이터를 전송할 때, 상대방을 확인하지 않습니다.

  • 즉, 효율성을 중요시 하는 통신입니다.

  • 예를 들어, 동영상과 같은 데이터의 경우 TCP로 통신할 경우 상대방을 확인하는데 시간이 오래걸리지만,
    UDP로 통신을 한다면 빠르게 데이터를 주고 받을 수 있습니다.

  • 전송 계층에서 UDP 통신을 하면 UDP 헤더가 붙습니다.

  • 데이터에 UDP 헤더가 붙은 것을 UDP 데이터그램이라고 합니다.

    • UDP 헤더에는 출발지 포트, 도착지 포트, 길이, 체크섬 정도의 정보가 있습니다.
    • 정확성과 신뢰성을 필요로 하지 않기 때문에 TCP 헤더에 비해 적은 정보가 들어있습니다.
  • 같은 랜에 있는 컴퓨터나 네트워크 장비에 일괄적으로 데이터를 보낼 수 있습니다.<브로드캐스트>

    • 이것은 목적지를 정해야 하는 TCP에서는 일괄 통신이 불가능하겠죠?

Reference

profile
집중

0개의 댓글