[모두의 네트워크] 6장. 전송 계층 : 신뢰할 수 있는 데이터 전송하기

SunYerim·2023년 5월 4일
0

네트워크

목록 보기
5/18
post-thumbnail

23. 전송 계층의 역할

1. 전송 계층의 두 가지 역할

  • 물리, 데이터 링크, 네트워크 계층이 있으면 목적지에 데이터를 보내는 것은 가능. 데이터가 손상되거나 유실되게되면 책임지지 않음.
  • 전송계층: 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요.
    • 오류 점검 기능
  • 네트워크 계층은 목적지까지 데이터를 전달, 전송계층은 데이터가 제대로 도착했는지 확인 & 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능

2. 연결형 통신과 비연결형 통신

  • 전송 계층의 특징: 신뢰성/정확성, 효율성
    • 신뢰성 및 정확성: 데이터를 목적지에 문제없이 전달하는 것 ⇒ 연결형 통신
    • 효율성: 데이터를 빠르고 효율적으로 전달하는 것 ⇒ 비연결형 통신
  • 신뢰할 수 있고 정확한 데이터 전송이 필요한 애플리케이션에는 연결형 통신, 효율적인 데이터 전송이 필요한 애플리케이션에는 비연결형 통신
  • TCP: 전송 계층의 연결형 통신 프로토콜
  • UDP: 비연결형 통신 프로토콜

24. TCP의 구조

1. TCP란?

  • 캡슐화: 응용 계층부터 물리 계층까지 계층별로 데이터를 전달할 때 헤더를 붙이는 것

  • 역캡슐화: 데이터 수신 측에서 물리 계층부터 응용 계층까지 계층별로 데이터를 전달할 때 헤더를 제거하는 것

  • TCP 헤더: (전송계층에서)TCP로 전송할 때 붙이는 헤더 , 세그먼트: TCP 헤더가 붙은 데이터

  • 데이터를 전송하려면 연결이라는 가상의 독점 통신로를 확보해야함. ⇒ 이후에 데이터 전송이 가능

  • TCP 헤더와 코드 비트

    • 코드 비트: 107비트 ~ 112 비트까지 6비트로 연결의 제어 정보가 기록됨.
    • 초깃값은 0, 비트가 활성화되면 1. 연결을 확립하려면 이 중 SYN과 ACK가 필요함.
    • SYN: 연결 요청, ACK: 확인 응답 ( 다른 비트는 생각하지 않아도 됨.)

2. 3-way 핸드셰이크

  • 연결은 SYN과 ACK를 사용하여 확립 가능함.

  • 연결 확립을 위해 코드 비트의 SYN과 ACK가 1로 활성화됨.

  • 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 것을 3-way 핸드셰이크라고 함.

  • 데이터를 전송한 후에는 연결을 끊기 위한 요청을 교환해야 함.

  • 연결을 끊을 때는 FIN과 ACK를 사용하는데, FIN연결 종료를 뜻함.

    • 연결을 종료할때는 FIN과 ACK가 1로 활성화됨.

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

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

  • 3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대방이 받을 때는 위의 그림과 같이 TCP 헤더의 일련번호와 확인 응답 번호를 사용함.
  • TCP는 데이터를 분할해서 보내는데 일련번호는 송신 측에서 수신 측에 이 데이터가 몇 번째 데이터인지알려주는 역할을 함. 전송된 데이터에 일련번호를 부여하면 수신자는 원래 데이터의 몇 번째 데이터를 받았는지 알 수 있음.
  • 확인 응답 번호는 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할 ⇒ 다음 번호의 데이터를 요청하는 데도 사용됨.
    • ex. 10번 데이터를 수신하면 11번 데이터를 송신측에 요청. 이것이 확인 응답
  • 데이터가 항상 올바르게 전달되는 것은 아니므로 일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송하게 되어있음.
    • 같은 데이터를 다시 한 번 보내게 됨!
    • 전송 도중 오류가 발생하면 일정 시간 동안 대기한 후에 전송함.
  • 세그먼트(데이터)를 하나씩 보낼 때마다 확인 응답을 한 번 반환하는 통신 ⇒ 비효율적

2. 윈도우 크기란?

  • 매번 확인 응답을 기다리는 대신 세그먼트를 연속해서 보내고 난 다음에 확인 응답을 반환하면 효율이 높아짐!

  • 상대방에 세그먼트가 점점 쌓일 거 같은 우려가 있을수도 있지만? ⇒ 받은 세그먼트를 일시적으로 보관하는 장소가 있음. 버퍼 !!!

  • 버퍼 덕분에 세그먼트를 연속해서 보내도 수신 측은 대응할 수 있고 확인 응답의 효율도 높아짐.

  • but, 수신 측이 세그먼트를 대량으로 받아서 처리하지 못하게 되면? ⇒ 오버플로우 현상이 발생하게됨.

    • 해당 현상이 발생하지 않도록 버퍼의 한계 크기를 알고 있어야함. ⇒ TCP 헤더의 윈도우 크기 값
  • 윈도우 크기: 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타내는 것 ⇒ 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터 크기

  • 수신 측이 윈도우 크기를 가지고 있다면 확인 응답을 받지 않고도 세그먼트(데이터)를 연속적으로 전송할 수 있음 !!! 효율적인 방식

26. 포트 번호와 구조

1. 포트 번호란?

  • 연결 확립, 재전송 제어, 윈도우 제어 => 이러한 기능에 의해 TCP는 데이터를 정확하게 전달하는 게 가능했음.
  • 전송 계층은 위의 역할 이외에도 한 가지 역할이 더 있음⇒ 전송된 데이터의 목적지가 어떤 애플리케이션인지 구분하는 역할.
    • 목적지가 어떤 애플리케이션인지 구분하지 못하면 사용자가 홈페이지를 보기 위해 웹 브라우저를 사용하는 데도 메일 프로그램으로 데이터가 전송될 수도 있음. ⇒ 어느 애플리케이션의 데이터인지 알 수 없기 때문에 일어남.
    • 그래서! TCP 헤더의 출발지 포트 번호, 목적지 포트 번호가 필요함.
  • 포트 번호를 사용해서 웹 브라우저인지 메일 프로그램인지 구분하는 것임.
  • 0~1023번 포트는 서버 측 애플리케이션에서 주로 사용되고 있음.
  • 포트 번호는 창구와 같은 역할!

- 포트 번호를 붙이지 않고 통신하면 컴퓨터에 데이터가 도착하더라도 애플리케이션까지는 도착할 수 없다. ⇒ 결론적으로 `통신 불가`

27. UDP의 구조

1. UDP란?

  • UDP ⇒ 비연결형 통신, 데이터를 전송할 떄 시간이 걸리는 확인 작업을 일일이 하지 않음.
  • 효율성 중요!
  • 장점
    • 데이터를 효율적으로 빠르게 보내는 것 ⇒ 스트리밍 방식으로 전송하는 동영상 서비스와 같은 곳에 사용됨.

2. UDP 헤더란?

  • UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 함.
  • UDP 헤더도 실제로는 1-4 순으로 정보가 나열되어있음.
  • UDP를 사용하면 랜에 있는 커퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있음 ⇒ 브로드캐스트
profile
내 안에 있는 힘을 믿어라.

0개의 댓글