ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TCP/IP] 트랜스포트 계층
    CS📟 2022. 8. 20. 18:56

    트랜스포트 계층의 역할

    • 애플리케이션 계층과 인터넷 계층 사이에 존재
    • 수신지의 애플리케이션에 데이터를 전달하는 것
    • TCP와 UDP를 주로 사용
    • 포트 번호로 애플리케이션을 구분

     

    TCP

    • 데이터의 정확한 전달을 중요시
    • 세그먼트 단위로 분할
      • 데이터 본체 + TCP 헤더
      • 헤더에 포트 번호나 일련번호가 포함
        • 컨트롤 비트
          • 현재 통신 상태를 표현하는 플래그 역할
          • TCP 통신 제어
          • 9개의 플래그가 ON/OFF로 상태 표현
    • 전송 속도 조절
      • 통신 상태에 따라 전송량 조절
      • 윈도우 사이즈에 수시로 현재의  수신 가능한 양을 알려줌 (흐름 제어)
      • 버퍼가 가득 차면 일시 중지
        • 윈도우 프로브 패킷이나 탐색 패킷을 보냄
        • 네트워크 혼잡 플래그가 ON이면 송수신 양쪽에서 ECE, CWR 플래그를 이용해 속도 조절
    • 실패 시 재전송
      • 주고받은 바이트 수를 계산해서 차이가 있으면 재전송
      • 커넥션을 맺는 과정에서 일련번호가 1씩 증가 -> 전송 시 데이터의 바이트 수만큼 증가 -> 수신 후 데이터의 바이트 수만큼 응답 번호에 플러스
      • 응답 번호와 일련번호를 비교하여 주고받은 데이터의 바이트 수를 계산
      • 응답이 일정기간 오지않아도 실패로 간주
      • 응답을 기다리지 않고 연속된 데이터를 몰아서 보낸 후 동일한 응답 번호가 들어오면 실패로 간주
        • 헤더 윈도우 사이즈에 버퍼의 크기를 설정해서 통보
      • 선택적 확인 응답(SACK) 
        • 실패 시 패킷 전체를 보내는 것이 아닌 누락된 패킷만 보냄
        • 송수신 양측이 지원해야 사용 가능
    • 3 way handshake
      • 커넥션을 맺는 과정
      • 3단계

     

    UDP

    • 전송 속도를 중요시
    • VoIP, 동영상 스트리밍 서비스에 많이 사용
      • 데이터가 중간에 조금 소실되어도 무관
    • 단순히 데이터 전송만 해서 빠르지만 데이터 손실 가능
    • 브로드 캐스트와 멀티 캐스트 방식
    • 게임처럼 속도와 신뢰성이 동시에 필요할 경우 애플리케이션 계층에서 흐름 제어나 혼잡 제어를 구현

     

    포트 번호

    • 애플리케이션에 어느 프로토콜로 전달할지에 대해서 포트번호로 판단
    • 0 ~ 65535까지 사용
      • IANA에서 관리(단체 이름) 
      • 웰 노운 포트
        • 0~1023번
        • 서버 프로그램이 수신 대기할 때 사용
        • 미리 정해져 있다
      • 레지스터드 포트
        • 1024~49151번
        • 벤더가 할당받아 사용하는 포트
      • 다이내믹 포트
        • 49152~65535번
        • 클라이언트 프로그램이 사용하는 포트
        • 자동으로 할당되어서 사용자는 미리 알 수 없음
        • 비어있는 포트로 자동할당

    서버에서의 구분

    • 서버는 80번 포트로 수신 대기하고 받음
    • 포트 번호와 IP 주소의 조합으로 클라이언트 식별

     

    + netstate 명령어로 네트워크 상태 확인 가능

Designed by Tistory.