1. 전송 계층에 대하여 (OSI 4계층)
-> 전송 계층은 컴퓨터가 데이터를 전달받고 어떤 애플리케이션에 전달해야 하는지 판단 후 해당 애플리케이션에 전달할 수 있도록 해줍니다.
-> 그 전 단계인 네트워크 계층에서는 데이터를 전달하고, 전승 계층에서는 데이터가 제대로 도착했는지 확인합니다.
-> 이제 좀더 자세하게 이야기 해보도록 하겠습니다. 전송 계층은 계층 구조의 네트워크 구성요소와 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공합니다.
-> 전송 계층의 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공합니다.
-> 논리적 통신은 애플리케이션 관점에서 보면 프로세스들을 동작시키는 호스트들이 직접 연결된 것처럼 보인다는 것을 의미합니다.
-> 일단, 밑의 그림을 보면서 설명하겠습니다.
-> 위 그림에서와 같이 전송 계층의 프로토콜은 네트워크 라우터가 아닌 종단 시스템에서 구현됩니다.
-> 프로세스부터 수신한 메시지를, 통신 계층의 세그먼트인 트랜스포트 계층 패킷을 변환해서 네트워크 계층에 전달을 합니다.
-> 또한, 세그먼트로 만들기 위해 작은 조각으로 분할하고, 각각의 조각에 전송 계층 헤더를 추가함으로써 수행됩니다.
-> 이것을 네트워크 계층에 전달하고, 여기서 세그먼트가 네트워크 계층 패킷(데이터그램) 안에 캡슐화되어 목적지로 전달됩니다.
-> 순서를 정리하겠습니다.
-> 1. 프로세스에서 받은 메시지를 송신 측의 전송 계층에서 전송 계층 패킷으로 변환
-> 2. 헤더 추가후 네트워크 계층에 전달
-> 3. 데이터그램 안에 캡슐화
-> 4. 다음 계층으로 전달
-> 여기서, 세그먼트를 넘겨주는 과정에서 네트워크 계층에서 이 세그먼트를 검사하는 일은 없습니다.
-> 일반적으로 TCP/IP 네트워크는 애플리케이션 계층(7계층)에서 두 가지 구별되는 전송 계층 프로토콜을 제공합니다.
-> 1. UDP(User Datagram Protocol): 비신뢰적이고 비연결형 서비스 제공
-> 2. TCP(Transmission Control Protocol): 애플리케이션에게 신뢰적이고 연결지향형 서비스를 제공
자주 나올 단어를 한번 정리해주겠습니다.
❗ 용어 정리
트랜스포트 전송 패킷(TCP, UDP 패킷) => 세그먼트
네트워크 계층 패킷 => 데이터그램
❗ IP(Internet Protocol)
IP 서비스 모델은 호스트들 간에 논리적 통신을 제공하는
최선형 전달 서비스(best-effort delivery service)이다.
이것은 IP가 통신하는 호스트들 간에 세그먼트를 전달하기
위해서 최대한 노력하지만, 어떤 보장도 하지 않는다는 것을 의미합니다.
내부의 무결성(integrity)를 보장하지 않기 때문에
비신뢰적인 서비스(unreliable service)라고 부릅니다.
❗ 데이터의 무결성
데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미합니다.
여기서 정확성이란 중복이나 누락이 없는 상태를 뜻하고,
일관성은 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태를 뜻합니다.
위에서 말하는 내부의 무결성은 세그먼트의 전달을 보장하지 않고,
순서를 보장하지 않는 것을 의미합니다.
-> UDP와 TCP는 헤더에 오류 검출 필드를 포함함으로써 오류 검출 필드를 검사합니다.
-> UDP의 경우 IP 비슷한데, UDP는 IP와 같이 비신뢰적인 서비스입니다.
-> 반면에 TCP는 신뢰적인 데이터 전달(reliable data transfer)를 제공합니다.
-> 대표적인 기능으로는 1. 흐름제어 2. 순서번호 3. 확인응답 4. 타이머
-> 위의 4가지 대표적인 기능을 가지고 있습니다.
-> 이러한 기능을 사용함으로써 데이터의 무결성을 유지합니다.
-> 이 외에도 과도한 양의 트래픽을 제어하는 혼잡 제어기능도 있습니다.
-> 둘의 차이점을 표로 보겠습니다.
-> 여기서 갑자기 TCP UDP를 왜 설명했는가?
-> TCP/IP 4계층과 OSI 7계층을 비교하기 위해서 입니다.
-> 위의 그림과 같이 TCP/IP 4계층의 3계층인 전송 계층은 OSI 7계층의 4계층인 전송 계층과 하는 일이 똑같습니다.
마지막으로 전송 계층의 역할을 정리하고 끝내겠습니다.
전송 계층 (Transport Layer)는 네트워크 인터페이스 계층과 인터넷 계층의 역할로 수진지 컴퓨터까지 데이터를 보낼 수 있습니다.
특히 인터넷 계층의 IP 프로토콜은 수많은 네트워크가 복잡하게 얽힌 인터넷에서 수신지 컴퓨터까지 경로를 찾아 패킷을 전송하는 중요한 역할을 합니다.
인터넷 계층이 패킷 전송이라는 중요한 역할을 담당하지만 수신지까지 최적의 경로를 찾아 패킷을 전송할 뿐 수신지 컴퓨터가 인터넷에 존재하는지, 수신지 컴퓨터가 존재하더라고 패킷을 수신할 준비가 되어 있는지, 패킷을 수신할 준비가 되어 있더라도 전송 과정에서 패킷이 손상되거나 유실되지는 않았는지 등의 문제들은 신경쓰지 않습니다.
즉, IP 프로토콜은 통신하는 호스트 간에 패킷을 전달하기 위해 최선의 노력(Best-effort delivery service)를 하지만 패킷의 전송 순서나 완전성을 보장하지 않기 때문에 비신뢰형 서비스(unreliable service)라고도 합니다.
패킷이 전송 과정에서 아무 문제 없이 제대로 수신지 컴퓨터에 도착할 수 있도록 패킷 전송을 제어하는 역할은 전송 계층이 담당합니다. 전송 계층은 네트워크 혼잡 상황에 따라 패킷의 전송량을 조절하여 패킷의 흐름을 제어하고 패킷 전송의 오류를 점검해서 수신지 컴퓨터까지 패킷이 제대로 도착했는지 확인하는 역할을 합니다. 다시 말해 전송 계층은 수신지 컴퓨터까지 신뢰할 수 있는 데이터를 전송하기 위해 필요한 계층입니다.
데이터를 전송하는 궁극적인 목적은 애플리케이션이 데이터를 처리하여 애플리케이션의 목적에 따른 서비스를 제공하기 위한 것입니다. 따라서 데이터는 수신지 컴퓨터가 아니라 수신지 컴퓨터 내의 애플리케이션까지 전송되어야 최종 목적지에 도착하게 됩니다.
애플리케이션이라는 최종 목적지까지 데이터 전송을 책임지는 것이 전송 계층의 또 다른 역할입니다. 즉, 전송 계층은 다양한 애플리케이션이 동작하는 컴퓨터 내에서 어떤 애플리케이션이 사용하는 데이터인지 식별하여 수신지 컴퓨터에 도착한 데이터를 수신지 컴퓨터 내의 애플리케이션에 배분하는 역할을 합니다. 인터넷 계층이 컴퓨터(호스트) 간의 데이터 통신을, 전송 계층이 애플리케이션 간의 데이터 통신을 구현한다고 볼 수 있습니다. 인터넷 계층이 호스트를 식별하기 위해 IP 주소를 사용하는 것처럼, 전송 계층에서는 애플리케이션을 식별하기 위해 포트 번호를 사용합니다.
밑의 그림으로 설명을 마치겠습니다.
'TIL' 카테고리의 다른 글
Repository Pattern 간단한 소개 (1) | 2024.09.23 |
---|---|
초보자를 위한 깃허브 팀원끼리 연결, PullRequest, Merge 하는 법 (feat. SubBranch, VSCODE) (0) | 2024.09.19 |
에러 핸들러와 미들웨어에 관하여 & 데이터 유효성 검증 라이브러리 Joi (2) | 2024.09.10 |
OSI 7계층 네트워크 계층에 대하여 (IP의 개념, 서브넷 마스크, 동적 IP 주소, 라우팅) (0) | 2024.09.09 |
Sparta 챌린지 반 - 기본 실력 체크 2탄 (1) | 2024.09.06 |