06. 4,5,6,7 계층

YeJi Kim·2023년 1월 25일
1

네트워크

목록 보기
6/9

4계층

  • 전송 계층의 역할은 목적지에 신뢰할 수 있는 데이터를 전달하는 역할을 한다.
    • 오류를 점검하고 오류가 발생하면 데이터를 재전송하도록 요청한다.
    • 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별한다.
      • TCP 또는 UDP 헤더의 포트 번호를 통해 각각의 애플리케이션을 식별한다.
  • 4계층에서 동작하는 장비로는 로드밸런서와 방화벽이 있다. 이 장비들은 애플리케이션 구분자(포트 번호)와 시퀀스, ACK 번호를 이용해 부하를 분산하거나 보안 정책을 수립해 패킷을 통과, 차단하는 기능을 수행한다.

TCP와 UDP

  • TCP(Transmission Control Protocol, 전송 제어 프로토콜)

    • 신뢰할 수 있고 정확한 데이터를 전달하는 연결형 통신 프로토콜
    • 신뢰성 있는 데이터 전송을 위해서 시퀀스 번호ACK 번호를 갖는다. 시퀀스 번호와 ACK 번호를 통해 순서가 바뀌거나 패킷이 손실된 것을 확인할 수 있다.
      • 시퀀스 번호는 TCP로 전송하는 데이터 순서를 나타낸다.
      • ACK 번호는 데이터를 바르게 수신했음을 확인하기 위해 이용한다. ACK 번호의 값은 시퀀스 번호 + LEN이다.
    • 흐름 제어(flow control): 보내는 측과 받는 측의 데이터 처리 속도 차이를 조절해주는 것
      • 해결 방법
        • Stop and Wait: 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법
        • Sliding Window (Go Back N ARQ): 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법
    • 혼잡 제어: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것. 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법이다.
      • 해결 방법
        • AIMD(Additive Increase / Multiplicative Decrease): 처음에 패킷을 하나씩 보내고 이것이 문제없이 도착하면 window 크기(단위 시간 내에 보내는 패킷의 수)를 1씩 증가시켜가며 전송하는 방법이다. 패킷 전송에 실패하거나 일정 시간을 넘으면 패킷의 보내는 속도를 절반으로 줄인다.
        • Slow Start (느린 시작): Slow Start 방식은 AIMD와 마찬가지로 패킷을 하나씩 보내면서 시작하고, 패킷이 문제없이 도착하면 각각의 ACK 패킷마다 window size를 1씩 늘려준다. 즉, 한 주기가 지나면 window size가 2배로 된다. 전송속도는 AIMD에 반해 지수 함수 꼴로 증가한다. 대신에 혼잡 현상이 발생하면 window size를 1로 떨어뜨리게 된다. 혼잡 현상이 발생하였던 window size의 절반까지는 이전처럼 지수 함수 꼴로 창 크기를 증가시키고 그 이후부터는 완만하게 1씩 증가시킨다.
        • Fast Retransmit (빠른 재전송): 패킷을 받는 쪽에서 먼저 도착해야할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 패킷을 보내게 된다.단, 순서대로 잘 도착한 마지막 패킷의 다음 패킷의 순번을 ACK 패킷에 실어서 보내게 되므로, 중간에 하나가 손실되게 되면 송신 측에서는 순번이 중복된 ACK 패킷을 받게 된다. 이것을 감지하는 순간 문제가 되는 순번의 패킷을 재전송 해줄 수 있다.
        • Fast Recovery (빠른 회복): 혼잡한 상태가 되면 window size를 1로 줄이지 않고 반으로 줄이고 선형증가시키는 방법이다.
    • 오류 제어: 데이터가 유실되거나 잘못된 데이터가 수신되었을 경우 대처하는 방법
      • 해결 방법
        • ARQ(Automatic Repeat Request): 재전송 기반의 오류 제어.
        • Stop and Wait: ACK을 받고 나서 다음 데이터를 보내는 방식. 일정 시간을 지나 timeout이 발생하면 이전 데이터를 재전송한다.
        • Go Back N: 연속으로 데이터를 보내다가 오류가 발생한 지점부터 재전송하는 방식이다.
        • Selective Repeat: 오류가 발생한 데이터만 재전송하는 방식이다.
    • 윈도우 사이즈: 한 번에 데이터를 받을 수 있는 데이터 크기
    • 슬라이딩 윈도: 네트워크 상황에 따라 윈도우 사이즈를 조절하는 것. 가능하면 최대한 많은 패킷을 한꺼번에 보내는 것이 효율적이지만 네트워크 상태가 안 좋으면 패킷 유실 가능성이 커지므로 적절한 송신량을 결정해야 한다. TCP는 데이터 유실이 발생하면 윈도 사이즈를 절반으로 떨어뜨리고 정상적인 통신이 되는 경우, 서서히 하나씩 늘리는 방식으로 윈도우 사이즈를 조절한다.
    • TCP의 플래그
      • SYN: 연결 시작 용도로 사용한다. 연결이 시작될 때 SYN 플래그에 1로 표시해 보낸다.
      • ACK: 응답을 의미한다. 초기 SYN이 아닌 모든 패킷은 기존 메시지에 대한 응답이므로 ACK 플래그가 1로 표기된다.
      • FIN: 종료를 의미한다. 데이터 전송을 마친 후 정상적으로 양방향 종료 시 사용된다.
      • RST: 연결 종료를 의미한다. 연결 강제 종료를 위해 연결을 일방적으로 끊을 때 사용된다.
      • URG: 긴급 데이터를 의미한다.
      • PSH: 서버 측에서 전송할 데이터가 없거나 데이터를 버퍼링 없이 응용 프로그램으로 즉시 전달할 것을 지시할 때 사용된다.
    • 3-way handshake
      • 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 과정
      1. 연결 확립 요청(SYN)
      2. 연결 확립 응답(ACK) + 연결 확립 요청(SYN)
      3. 연결 확립 응답(ACK)
    • 4-way handshake
      • 연결을 해제하기 위한 확인 절차.
      1. 연결 종료 (FIN)
      2. 연결 종료 응답(ACK)
      3. 연결 종료(FIN)
      4. 연결 종료 응답(ACK)

  • UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)

    • 효율적으로 데이터를 전달하는 비연결형 통신 프로토콜
    • UDP는 상대방의 애플리케이션이 동작하는지 등을 확인하지 않은 채 무조건 UDP 데이터그램으로 애플리케이션의 데이터를 송신한다. 그래서 보통 TCP보다 전송 속도가 빠르다.
    • UDP에는 크기가 큰 데이터를 분할하는 기능도 없다. 그래서 전송해야 할 애플리케이션의 크기가 클 때에는 애플리케이션 쪽에서 적절한 크기로 쪼개야 한다.

TCP와 UDP의 차이점

5계층(세션 계층)

5계층은 양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고 연결이 안정적으로 유지되도록 관리하고 작업 완료 후에는 이 연결을 끊는 역할을 한다. 즉, 세션 계층의 주요 역할은 “세션”을 관리하는 것으로 TCP/IP 세션을 만들고 없애는 책임을 진다. 또한 에러로 중단된 통신에 대한 에러 복구와 재전송도 수행한다.

6계층(프레젠테이션 계층)

6계층은 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행한다. 일종의 번역기나 변환기 역할을 수행하는 계층이고 이런 기능은 사용자 시스템의 응용 계층에서 형식상 차이를 다루는 부담을 덜어준다. MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이 계층에서 이루어 진다.

7계층(애플리케이션 계층)

7계층은 애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행한다. 소프트웨어의 UI 부분이나 사용자의 입,출력 부분을 정의하는 것이 애플리케이션 계층의 역할이다.


[참고자료]
그림으로 배우는 네트워크 원리(저자: Gene, 출판사: 영진닷컴)
IT엔지니어를 위한 네트워크 입문(저자: 고재성,이상훈, 출판사: 길벗)
그림으로 공부하는 TCP/IP 구조(저자: 미야타 히로시, 출판사: 제이펍)
profile
이전의 기록들 👉 https://blog.naver.com/reviewerkyj

0개의 댓글