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

problem_hun·2023년 7월 5일
0

모두의 네트워크

목록 보기
6/9
post-thumbnail

OSI 모델 4계층인 전송 계층에 대해 알아보자.

전송 계층의 역할

전송 계층의 두 가지 역할

물리 계층, 데이터 링크 계층, 네트워크 계층의 3계층이 있으면 목적지에 데이터를 보낼 수 있지만 데이터가 손상되거나 유실되더라도 이들 계층에서는 아무것도 해 주지 않는다. 라우팅 기능을 통해 데이터를 전송하더라도 라우팅 정보가 잘못될 수도 있고 많은 라우터를 경유하는 도중에 라우터에 문제가 생기거나 패킷이 손상될 수도 있다.

따라서 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하며 다음과 같은 두 가지 역할을 한다.

 

  • 오류 점검 : 데이터가 제대로 도착했는지 점검하고 오류가 발생했다면 재전송 하도록 요청한다.

  • 목적지 애플리케이션 식별 : 데이터가 어떤 애플리케이션으로 전달되어야 하는지 식별하는 역할을 한다.

 

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

전송 계층의 특징을 간단히 설명하면 신뢰성/정확성과 효율성으로 구분할 수 있다.

  • 신뢰성/정확성 : 데이터를 문제없이 전송하는 것
  • 효율성 : 데이터를 빠르고 효율적으로 전송하는 것

 
그리고 통신 방법을 신뢰성/정확성과 효율성으로 나눠 구분할 수 있다.

  • 연결형 통신 : 상대편과 확인해 가면서 신뢰성/정확성을 따지는 통신. TCP 프로토콜을 사용한다.
  • 비연결형 통신 : 상대편을 확인하지 않고 일방적으로 효율성을 따지는 통신. 동영상을 볼 때 버벅거리지 않는 빠른 전송이 필요하기 때문에 비연결형 통신을 사용한다. UDP 프로토콜을 사용한다.

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

 


TCP의 구조

TCP

데이터 링크 계층과 네트워크 계층에서 데이터에 이더넷 헤더와 IP 헤더를 붙였던 것처럼 전송 계층에서도 데이터에 헤더를 붙인다.

데이터를 TCP(연결형 통신)로 보낼 때 붙이는 헤더를 TCP 헤더라고 하고, 이 TCP 헤더가 붙은 데이터를 세그먼트라고 한다.

연결형 통신에서는 데이터를 전송하려면 연결이라는 가상의 독점 통신로를 확보해야 하는데, 연결을 확립하려면 TCP 헤더의 코드비트 부분의 ACKSYN이 필요하다.

코드비트

TCP 헤더의 107번째 비트부터 112번째 비트까지의 6비트로 연결의 제어 정보가 기록되는 곳

  • SYN(synchronize 동기화시키다) : 연결 요청
  • ACK(acknowledge 인정하다) : 확인 응답

TCP 헤더

 

3-way 핸드셰이크

연결은 SYN과 ACK를 사용하여 확립할 수 있다. 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷을 교환하는데, 다음과 같이 세 번 확인한다.

컴퓨터 1은 컴퓨터 2에게 통신 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다.
컴퓨터 2는 컴퓨터 1이 보낸 요청을 받고 허락한다는 응답을 보내기 위해 연결 확립 응답(ACK)을 보낸다. 동시에 컴퓨터 1에게 통신 허가를 받기 위해 SYN을 보낸다.
컴퓨터 1은 컴퓨터 2가 보낸 요청을 받고 ACK을 보낸다.

이렇게 연결형 통신에서 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 3번 교환하는 것을 3-way 핸드셰이크라고 한다. 사람들이 상대방을 확인하고 악수(핸드셰이크)를 하는 것처럼 데이터를 확인하면서 이루어지는 통신 방법이다.

 

데이터를 전송한 후에 연결을 끊을 때에도 통신을 해야 하는데, 끊을 때는 ACK와 연결 종료를 뜻하는 FIN (finish)을 사용한다.

① 컴퓨터 1에서 컴퓨터 2에게 연결 종료 요청(FIN)을 보낸다.
② 컴퓨터 2에서 컴퓨터 1에게 연결 종료 응답(ACK)을 보낸다.
③ 컴퓨터 2에서 컴퓨터 1에게 FIN을 보낸다.
④ 컴퓨터 1에서 컴퓨터 2에게 ACK을 보낸다.

 


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

일련번호와 확인 응답 번호

3-way 핸드셰이크가 끝나고 실제로 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 일련번호확인 응답 번호를 사용한다. 일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우 데이터를 재전송하는 재전송 제어가 있다.

일련번호

송신 측에서 수신 측에게 이 데이터가 몇 번째 보내는 데이터인지 알려주는 역할

확인 응답 번호

수신 측에서 송신 측에게 몇 번째 데이터를 수신했는지 알려주는 역할

재전송 제어

일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우 데이터를 재전송하는 것

 

윈도우 크기

위와 같이 세그먼트(데이터)를 한 번 보낼 때마다 응답하는 것은 비효율적이다. 매번 확인 응답을 기다리는 대신 세그먼트를 연속으로 보내고 확인 응답을 받으면 효율이 높아진다. 연속 세그먼트 전송을 하기 위해서는 수신측에 버퍼가 필요하다.

수신 측은 버퍼라는 곳에 여러 세그먼트를 보관하고 응답한다. 버퍼에도 한계 크기가 있는데 그것이 TCP 헤더의 윈도우 크기에 해당한다. 윈도우 크기는 3-way 핸드셰이크를 할 때 판단한다.

버퍼

받은 세그먼트(데이터)를 일시적으로 보관하는 장소

윈도우 크기 (버퍼 한계 크기)

확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터의 양

 


포트 번호의 구성

포트 번호

지금까지 TCP의 첫번째 역할인 오류 점검(데이터의 정확한 전송)에 대해 알아보았다. TCP는 한 가지 역할이 더 있는데, 전송된 데이터가 어떤 애플리케이션에서 쓰이는지 구분하는 것이다.

TCP는 웹 브라우저를 위한 데이터인지 메일을 위한 데이터인지 구분을 할 수 있는데, 이때 포트 번호가 사용된다. 포트 번호를 붙이지 않으면 데이터가 도착하더라도 애플리케이션에서 실행할 수 없다.

포트 번호

애플리케이션 구분을 위한 번호

0 ~ 65535번을 사용할 수 있으며 0 ~ 1023번 포트는 주요 프로토콜이 사용하도록 예약되어있어 잘 알려진 포트라고 한다. 일반적으로 서버 측 애플리케이션에서 사용된다.
1024번은 예약되어 있지만 사용하지 않는 포트,
1025번 이상은 랜덤 포트라고 해서 클라이언트 측의 송신 포트로 사용된다. 리액트를 실행할 때 3000번 포트가 사용되는 이유이다.

 

주로 사용하는 코드
애플리케이션포트 번호내용
SSH22원격 보안
SMTP25메일 전송
DNS53이름 해석
HTTP80웹사이트 접속
POP3110메일 수신
HTTPS443웹사이트 접속(보안)

 

 


UDP의 구조

UDP

전송 계층의 연결형 통신에서는 TCP 프로토콜을 사용한다고 했다.
비연결형 통신에서는 UDP 프로토콜을 사용한다.

UDP

UDP는 비연결형 통신이라서 데이터를 전송할 때 TCP처럼 시간이 걸리는 확인 작업이 없다. 그래서 빠른 것이 장점이다. 스트리밍 방식으로 전송하는 동영상 서비스 같은 곳에 사용된다.

 

UDP 헤더

UDP에서는 UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 한다. UDP 헤더는 신뢰성과 정확성이 필요하지 않아 TCP 헤더보다 정보의 양이 적다.

UDP 는 효율성과 빠른 속도가 중요해서 상대방을 확인하지 않고 연속해서 데이터를 보낸다. 또한 UDP는 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄적으로 보낼 수 있는데 이것을 브로드캐스트라고 한다.

 


참고 사이트

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

profile
문제아

0개의 댓글