전송 계층 : 신뢰할 수 있는 데이터 전송하기

혜얌·2022년 5월 29일
0

네트워크

목록 보기
6/8
post-thumbnail

전송 계층의 역할


전송 계층의 두 가지 역할

  • 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다.
  • 전송 계층에는 오류를 점검하는 기능이 있어 오류가 발생하면 데이터를 재전송하도록 요청한다.
  • 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능도 있다.

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

  • 전송 계층의 특징은 신뢰성과 정확성, 효율성으로 구분할 수 있다.
  • 신뢰성/정확성은 데이터를 목적지에 문제없이 전달하는 것으로 연결형 통신이라고 한다.
  • 효율성은 데이터를 빠르고 효율적으로 전달하는 것으로 비연결형 통신이라고 한다.
  • 연결형 통신은 상대편과 확인해 가면서 통신하는 방식인 반면 비연결현 통신은 상대편을 확인하지 않고 일방적으로 데이터를 전송하는 방식이다.
  • 연결형 통신 프로토콜에는 TCP가 사용되고, 비연결형 통신에는 UDP가 사용된다.


TCP의 구조


TCP란?

  • TCP로 전송할 때 붙이는 헤더를 TCP 헤더라고 하고, 이 TCP 헤더가 붙은 데이터를 세그먼트라고 한다.
    1. 출발지 포트 (16bit)
    2. 목적지 포트 (16bit)
    3. 일련번호 (32bit)
    4. 확인 응답 (32bit)
    5. 헤더길이 (4bit)
    6. 예약 영역 (6bit)
    7. 코드 비트 (6bit)
    8. 윈도우 크기 (16bit)
    9. 체크섬 (16bit)
    10. 긴급 포인터 (16bit)
    11. 옵션
  • 데이터를 전송하려면 가상의 독점 통신로를 확보해야 한다.
  • 이것이 7코드비트 부분으로 초깃값은 0이고 활성화되면 1이 된다.
  • 연결을 확립하려면 SYN, ACK가 필요하다.

3-way 핸드셰이크란?

  • 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세번 교환하는 것을 3-way 핸드셰이크라고 한다.
  • 연결을 끊을 때도 FIN, ACK를 사용해 연결 종료를 확인한다.


일련번호와 확인 응답 번호의 구조


일련번호와 확인응답 번호란?

  • TCP는 데이터를 분할해서 보내는데 일련번호는 송신 층에서 수신층에 이 데이터가 몇 번째 데이터인지 알려주는 역할을 한다.

  • 확인 응답 번호는 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할을 한다.

    일련번호 3001번은 지금 보내는 200바이트 데이터의 첫 번째 바이트의 번호고, 확인 응답 번호는 다음에 보냈으면 하는 데이터의 첫 번째 바이트 번호가 된다.
    즉, 컴퓨터1은 컴퓨터2로 200바이트의 데이터를 전송한다. (일련 : 3001, 확인응답: 4001) --> 컴퓨터2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터 번호를 확인 응답 번호에 넣는다. 다음 수신하고자 하는 데이터는 3001+200 = 3201 이다. (일련 : 4001, 확인응답: 3201) --> 컴퓨터1은 컴퓨터2로 3201번부터 200바이트의 데이터를 전송한다. (일련 : 3201, 확인응답: 4001) --> 컴퓨터2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터의 번호를 확인 응답 번호에 넣는다. 다음에 수신하고자 하는 데이터는 3201 + 200 = 3401 이다. (일련 : 4001, 확인응답: 3401)

  • 데이터의 일련번호와 확인응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송하게 되어 있는데 이것을 재전송 제어 라고 한다.

윈도우 크기란?

  • 매번 확인 응답을 기다리는건 효율이 높지 않아 연속해서 세그먼트를 보내고 난 다음 확인 응답을 반환하면 효율이 높아진다.
  • 받은 세그먼트를 일시적으로 보관하는 장소를 버퍼(buffer)라고 한다.
  • 버퍼 덕분에 세그먼트를 연속해서 보내고 수신 측은 대응할 수 있고 확인 응답의 효율도 높아진다.
  • 대량으로 데이터가 전송되면 보관하지 못하고 넘쳐버리는 것을 오버플로라고 한다.
  • 오버플로를 막기 위해서는 버퍼의 한계 크기를 알고 있어야 하는데 그것이 TCP 헤더의 윈도우 크기 값이다.
  • 윈도우 크기는 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타낸다.


포트번호의 구조


포트번호란?

  • TCP 헤더에 출발지 포트 번호와 목적지 포트번호가 있다.
  • 이 포트번호들이 있기에 애플리케이션 구분이 가능하다.
  • 포트번호는 주로 예약되어 있다. (잘 알려진 포트라고 한다. )
    - 1024 미만: 서버측 애플리케이션에 사용되는 포트
    - 1024 : 예약되어 있지만 사용되지 않는 포트
    • 1025 이상 : 랜덤 포트라 불리며 클라이언트 측의 송신 포트로 사용됨

      애플리케이션포트번호
      SSH22
      SMTP25
      DNS53
      HTTP80
      POP3110
      HTTPS443
  • 웹 브라우저로 접속할 때 임의의 포트가 자동으로 할당된다.


UDP의 구조


UDP란?

  • 비 연결형 통신으로 효율성을 중요하게 여긴다.
  • 데이터를 효율적으로 빠르게 보내기 때문에 스트리밍 방식으로 전송하는 동영상 서비스와 같은 곳에 사용된다.

UDP 헤더란?

  • UDP헤더가 붙은 데이터를 UDP 데이터그램이라고 한다.
    1. 출발지 포트번호 (16bit)
    2. 목적지 포트번호 (16bit)
    3. 길이 (16bit)
    4. 체크썸 (16bit)
  • UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 일괄로 데이터를 보낼 수 있는 브로드캐스트를 할 수 있다.
profile
얌얌

0개의 댓글