OSI 7계층 시리즈 #4 전송 계층

Jake Seo·2021년 6월 16일
2

네트워크

목록 보기
14/16

전송 계층

신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 한다. 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 만든다. 데이터가 중복되거나 누락되지 않고 오류없이 순서에 맞게 전송되도록 관리한다.

전송 계층의 필요성

  • 오류 점검
    • 데이터를 주고 받는 것 까지는 3계층 네트워크 계층까지만 이용하면 충분하다. 하지만, 신뢰성을 확보하기 위해 전송 계층이 필요하다.
  • 포트 이용
    • 이 데이터가 해당 컴퓨터의 어떤 애플리케이션에 전달되어야 하는지 알기 위해 전송 계층이 필요하다.

전송 계층에서의 선택지: 연결형 통신과 비연결형 통신

연결형 통신

  • 신뢰성/정확성을 강조한 통신이다.
  • TCP 통신이 이에 속한다.
  • 확인 절차가 필요하다.
  • HTTP 1.1 등에 이용된다.

비연결형 통신

  • 효율성을 강조한 통신이다.
  • UDP 통신이 이에 속한다.
  • 확인 절차 없이 보낸다.
  • 동영상 등에 이용된다.

연결형 통신: TCP 알아보기

4계층에서 TCP를 선택하면, 데이터에 TCP 헤더라는 것이 붙어 캡슐화된다.

TCP 헤더 알아보기

TCP 헤더는 위와 같은 구성으로 이루어져있다. 검증 절차를 가져야 하므로 그에 필요한 정보 때문에 UDP보다 상대적으로 복잡한 헤더를 갖는다.

TCP의 코드 비트

6비트로 이루어진 코드 비트는 위와 같은 플래그로 이루어져있는데, 여기서 주로 사용되는 것은 ACK, SYN, FIN이다.

  • SYN: 연결 요청
  • ACK: 확인 응답
  • FIN: 종료 요청

TCP의 3way 핸드쉐이크

  • 요청 컴퓨터 ASYN 요청을 상대 컴퓨터 B에 보낸다.
  • 상대 컴퓨터 BACK 확인 응답을 하고 SYN 요청을 보낸다.
  • 요청 컴퓨터 AACK 확인 응답을 한다.

위와 같은 3가지 절차를 3way 핸드쉐이크라 한다.

위와 같은 절차가 끝나면 CONNECTION 이 확립된다.

TCP 연결 종료 플래그

연결 종료 시에는 FIN -> ACK -> FIN -> ACK의 4단계 절차가 일어난다.

일련 번호와 확인 응답 번호의 의미

TCP 헤더의 일련 번호(Sequence Number)와 확인 응답 번호(Acknowledgement Number)는 각 32비트를 차지하는 큰 공간이다. 일련번호와 확인 응답 번호가 갖는 의미는 송신측과 수신측에 따라 다르다.

  • 송신측
    • 일련 번호: 현재 보내는 데이터의 시작 번호
    • 확인 응답 번호: 전체 데이터의 끝 번호
  • 수신측
    • 일련 번호: 전체 데이터의 끝 번호
    • 확인 응답 번호: 현재까지 받은 데이터의 끝 번호

위와 같은 형식으로 이용된다. 위는 한 번에 데이터를 50바이트만큼 전송하는 예시이다. 50바이트와 같이 한번에 전송되는 데이터의 단위를 세그먼트라고 한다.

만일, 일련 번호나 확인 응답 번호가 어긋난 경우와 같이 데이터가 손상 혹은 유실되면 일정 시간 대기한 후에 데이터를 재전송하며 이를 재전송 제어라고 한다.

윈도우 크기의 의미

윈도우 크기는 세그먼트를 일시적으로 저장하는 버퍼의 한계 크기를 말한다. 즉, 얼마나 많은 용량의 데이터를 저장해둘 수 있는지를 나타내는 크기이다.

TCP 통신에서는 이 버퍼 크기에 들어갈만큼 최대한의 데이터 세그먼트를 수신측에 보낸다. 송신측은 다회의 세그먼트 송신을 버퍼크기만큼 한번에 하고, 수신측은 송신된만큼 다회의 확인 응답을 한번에 한다.

포트 번호 알아보기

  • 포트 번호는 0~65535 (16비트) 까지 사용할 수 있다.
  • 0~1023 (0000 0001 1111 1111) 까지는 예약된 포트번호이다.
    • 이를 well-known port라고 한다.
  • 1024번 포트는 예약되어있지만 잘 사용되지 않는다고 한다.

통신 애플리케이션의 주요 포트번호

  • SSH: 22
  • SMTP: 25
  • DNS: 53
  • HTTP: 80
  • POP3: 110
  • HTTPS: 443

웹 브라우저의 송신 포트

  • 웹 브라우저의 포트는 임의의 포트가 자동으로 할당된다.
  • 서버 측은 포트번호를 명확히 정해두어야 하지만 클라이언트 측은 정하지 않아도 괜찮다.

비연결형 통신: UDP 통신 알아보기

  • TCP와 반대로 신뢰성보다는 효율성을 중시한다.
  • 영상과 같이 끊기면 안되는 스트리밍 서비스에 자주 이용된다.

데이터에 위와 같은 헤더를 씌워진 데이터를 UDP 데이터그램이라 한다.

브로드 캐스트가 가능하다.

  • 응답을 확인하지 않는 이점을 이용해서 할 수 있는 대표적 기능이다.
    • 다수의 컴퓨터에 송신을 해도 확인 응답을 받지 않는다.
    • TCP는 다수의 컴퓨터에 송신을 하면 일일이 확인 응답을 받고 CONNECTION을 확립해야 한다.

전송 계층 정리

데이터를 받아서 TCP Segment 혹은 UDP Datagram 중 하나의 전송 계층 헤더를 데이터에 붙여 캡슐화한다. 혹은 TCP Segment 혹은 UDP Datagram 중 하나의 헤더가 붙은 데이터를 비캡슐화 한다.

레퍼런스

[10분 테코톡] 히히의 OSI 7 Layer
모두의 네트워크

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글