이 포스팅은 네트워크 기초 시리즈 5 편 중 5 번째 글 입니다.

  • Part 1 - 01: IP
  • Part 2 - 02: 네트워크 용어정리
  • Part 3 - 03: OSI 7 layer - 물리, 데이터 링크 계층
  • Part 4 - 04: OSI 7 layer - 네트워크 계층
  • Part 5 - This Post
▼ 목록 보기

전송 계층

  • 물리 계층, 데이터 링크 계층, 네트워크 계층 이 세개의 계층만 있으면 목적지에 데이터를 보낼 수 있다.
  • 하지만 데이터 유실, 손상되는 경우 알수도 없고 해줄게 없다.
  • 이를 방지하기 위한 계층이 전송계층이다.
  • 신뢰성 있는 데이터 전달 을 위해 필요하다.
  • 오류 점검 기능
    • 오류 발생시 데이터 재전송하도록 요청
  • 식별 기능
    • 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별 가능
    • 예를 들어, 웹에서 사용된다고 명시되어 있는 패킷을 메일 프로그램에 전달하는 것을 방지한다.

연결형 통신 / 비연결형 통신

  • 전송 계층의 특징
    • 신뢰성, 정확성
      • 데이터를 목적지에 문제 없이 전달하는 것 -> 연결성 통신(TCP)
    • 효율성
      • 빠르고 효율적으로 전달 -> 비 연결형 통신(UDP)
      • 스트리밍

image

TCP

  • 이 계층에서도 TCP 헤더를 붙여 세그먼트(Segment)를 만드는 캡슐화를 진행한다.

imageTCP 헤더

  • 연결형 통신에 사용
  • 연결이라는 통신로를 확보해야 한다.
    • 가상의 통신로
  • 연결을 확립하기 위해서는 TCP 헤더의 코드 비트를 확인해야 한다.
  • 코드 비트는 연결의 제어 정보가 기록되는 곳이다.
  • 코드 비트의 종류
    • SYN
    • ACK
    • FIN
    • etc

image코드 비트

3 Way Hand shake

image3way handshake

  • 통신 전에 컴퓨터 2에게 허락을 받는다. 연결 확립 허가를 위한 요청(SYN)을 보낸다.
  • 컴퓨터 2는 1의 요청을 받은 후, 허가한다는 응답을 회신한다. (ACK) 마찬가지로 컴퓨터 1에게 데이터 전송 허가를 받기 위해 연결 확립 요청을 보낸다.(SYN)
  • 컴퓨터 2의 요청에 대해 1은 허가한다는 응답으로 ACK를 보낸다.

이렇게 연결 확립을 위해 패킷 요청을 3번 교환하는 것을 3-way hankshake 라 한다.

4 way handshake

image4 way handshake

  • 컴퓨터 1에서 2로 연결 종료 요청을 보낸다.(FIN)
  • 2에서 1로 연결 종료 응답을 보낸다.(ACK)
  • 2에서도 1로 연결 종료 요쳥을 보낸다.(FIN)
  • 1에서 2로 연결 종료 응답을 반환한다.(ACK)

일련번호와 확인 응답 번호

imageTCP 헤더

  • 이제 연결은 되었고, 실제 데이터를 보내고 받아야 한다.
  • 이 때는 TCP 헤더의 일련 번호와 응답 번호를 사용한다.
  • TCP는 데이터를 분할해서 보내는데, 일련번호는 송신측에서 수신측에 이 데이터가 몇번째 데이터 인지 알려주는 역할을 한다.
  • 확인 응답 번호는 수신측이 몇번째 데이터를 수신했는지 알려주는 역할을 한다.
    • 이 번호를 가지고 다음 번호의 데이터를 요청하는데 사용한다.
    • 만약 10번을 수신했다면, 다시 송신측에 11번을 달라고 요청한다.

image실제 통신 과정

  1. 컴퓨터 1이 2한테 200바이트 데이터를 전송
  2. 2는 200바이트 수신 후에 다음 수신 데이터 번호를 확인응답번호에 넣는다.
    • 3001 + 200 = 3201이니 이 데이터를 요청한다.
  3. 1은 2로 다시 3201부터 200 바이트의 데이터를 전송한다.
  4. 2는 200바이트를 수신하고 다음 수신 데이터를 번호에 넣는다.

이러한 방법을 반복하게 된다. 데이터가 항상 올바르게 전달되지는 않으므로 이 두개의 값을 사용해서 손실되거나 유실된 경우, 다시 재전송하게 되어 있다. 이를 재전송 제어 라고 한다.

윈도우 크기

Reference