[6장] 전송 계층

신은지·2021년 10월 17일
0

모두의 네트워크

목록 보기
6/9

전송 계층, 연결형 통신과 비연결형 통신, TCP, UDP

Lesson 23. 전송 계층의 역할

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

  • 전송 계층
    (1) 제대로 데이터 도착했는지 확인하는 오류 점검 기능 - 오류 발생 시 데이터 재전송 요청
    (2) 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별

연결형 통신, 비연결형 통신

  • 전송계층의 특징
    (1) 신뢰성/정확성 : 데이터를 목적지에 문제없이 전달한다 = 연결형 통신
    (2) 효율성 : 효율적으로 데이터를 전달한다 = 비연결형 통신

  • 연결형 통신, 비연결형 통신

    • 연결형 통신
      : 상대편과 데이터를 확인하면서 통신
      : TCP 통신 프로토콜 사용
    • 비연결형 통신
      : 상대를 확인하지 않고 일방적으로 데이터를 전송 (동영상 볼 때 빠른 전송을 위해 사용)
      : UDP 통신 프로토콜 사용

Lesson 24. TCP의 구조

신뢰성과 정확성을 우선으로 하는 연결형 통신 프로토콜

  • 캡슐화
    • TCP 헤더 : TCP로 전송할 때 붙이는 헤더
    • 세그먼트(Segment) : TCP 헤더가 붙은 데이터

TCP 연결의 확립

TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로로 연결을 확립하는 것

  • 연결형 통신의 전송
    (1) 전송 전 먼저 연결(connection. 가상의 독점 통신로)를 확보한다
    (2) 연결의 확립이 끝나면 데이터를 전송한다

  • 코드비트
    : TCP 헤더의 1-7~112번째 비트까지의 6비트. 제어 정보 기록
    (1) 초깃값 0, 활성되면 1
    (2) SYN(연결 요청), ACK(확인 응답)를 이용해서 연결 확립


3-way 핸드셰이크

신뢰할 수 있는 연결을 위해 데이터 전송 전 패킷을 교환해 연결을 확립한다.

(1) 연결 확립 요청
: 통신을 하기 위해 컴퓨터 2에게 허가를 받아야 한다
: 컴퓨터 1에서 컴퓨터 2로 연결 확립 허가를 받기 위한 요청(SYN)을 보낸다

(2) 연결 확립 응답 + 연결 확립 요청
: 컴퓨터 2는 컴퓨터 1이 보낸 요청을 받은 후, 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)을 보낸다.
: 동시에 컴퓨터 2는 컴퓨터 1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다

(3) 연결 확립 응답
: 컴퓨터 2의 요청을 받은 컴퓨터 1은 컴퓨터 2로 허가한다는 응답으로 연결 확립 응답(ACK)
를 보낸다.

데이터 전송이 완료되고 연결을 끊을 때도 확인 작업 필요!
: FIN (연결 종료)와 ACK를 사용한다.


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

3-way handshake 이후 데이터 전송에 사용되는 TCP 헤더의 일련번호와 확인 응답 번호

  • 일련번호 (sequence number)
    : TCP가 데이터를 분할해서 보낼 때, 이 데이터가 몇 번째 데이터인지를 알려준다.
    : 수신자는 일련번호를 통해 원래 데이터의 몇 번째 데이터를 받았는지 알 수 있다.

  • 확인 응답 번호 (acknowledgement number)
    : 수신측이 몇 번째 데이터를 수신했는지 송신측에 알려준다.
    : 다음 번호의 데이터를 요청(확인 응답)하는데 사용된다.

  • 재전송 제어
    : 데이터가 손상되거나 유실된 경우, 일련번호와 확인 응답 번호를 사용해서 데이터를 재전송한다.
    : 전송 도중 오류가 발생하면 일정 시간 대기 후 재전송한다.


윈도우 크기

  • 확인 응답을 하지 않는 세그먼트 송신
    : 세그먼트(데이터) 하나를 보낼 때마다 확인 응답을 한 번 반환하므로 효율이 낮다
    : 매번 확인 응답을 기다리는 대신, 세그먼트를 연속해서 보낸 후 확인 응답을 반환한다.

    • 버퍼 (buffer)
      : 매번 확인 응답을 기다리는 대신, 세그먼트를 연속해서 보낸 후 확인 응답을 반환한다.
      : 받은 세그먼트를 일시적으로 보관하는 장소
      : 수신측이 연속적인 세그먼트에 대응할 수 있고 확인 응답의 효율이 높아진다

    • 오버플로 (overflow)
      : 수신측이 대량으로 전송된 데이터를 보관하지 못해 버퍼에서 데이터가 넘치는 것
      : 막기 위해 버퍼의 한계 크기를 알아야 한다

  • 윈도우 크기 (window size)
    : TCP 헤더에 버퍼의 한계 크기를 기재한 것
    : 얼마나 많은 용량의 데이터를 저장할 수 있는가?
    : 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터의 크기를 의미
    : 3-way handshake를 할 때 송수신측은 서로의 윈도우 크기를 확인하고, 상대 버퍼의 한계 값을 찾아 세그먼트가 오버플로되지 않도록 한다.


Lesson 26. 포트 번호의 구조

포트 번호 : 데이터의 목적지가 어떤 프로그램인지를 구분한다

  • 포트 번호 (port number)
    : 전송 계층에서 해당 데이터가 어떤 애플리케이션에서 쓰이는지 판별할 때 사용
    : TCP 헤더의 출발지 포트 번호(source port number) & 목적지 포트 번호(destination port number)
    (1) 잘 알려진 포트(well-known ports) : 0 ~ 1023번 포트. 주요 프로토콜이 사용하도록 예약
    (2) 랜덤 포트 : 1025번 이상의 포트.
    (3) 1024번 : 예약되어 있지만 사용되지 않는 포트

  • 웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할단된다
    : 서버측에만 포트번호 정해두면 됨!


Lesson 27. UDP의 구조

효율성을 우선으로 하는 비연결형 통신 프로토콜

  • UDP
    : 데이터 전송 시 확인 작업을 일일이 거치지 않아, 효율적으로 빠르게 보낼 수 있다
    : 스트리밍 등 빠른 속도가 필요한 서비스에 활용한다
    : 브로드캐스트(broadcast)를 이용, 랜에 있는 컴퓨터/네트워크로 데이터를 일괄 전송 가능

    TCP는 무조건 확인 응답을 하나씩 보내야하므로, 목적지를 지정하지 않고 불특정 다수에게 보내는 일괄통신에 적합하지 않다.

  • UDP 헤더
    : 올바른 목적지의 애플리케이션으로 데이터를 전송하기 위한 필요 정보 기록
    : UDP 데이터그램 - UDP 헤더가 붙은 데이터


profile
호그와트 장학생

0개의 댓글