네트워크 응용 프로그램은 컴퓨터 네트워크에 참여하는 컴퓨터 응용 프로그램입니다. 이러한 응용 프로그램은 네트워크에 연결하여 서로 통신합니다.
예를 들어, google.com을 방문하면 브라우저가 인터넷을 활용하여 Google 컴퓨터에서 실행되는 네트워크 애플리케이션과 통신하는 네트워크 애플리케이션 역할을 합니다.
일반적으로 이 커뮤니케이션의 메커니즘은 애플리케이션 개발자와 분리되어 추상화됩니다.
표면적으로 이 통신은 동일한 컴퓨터에서 실행되는 두 응용 프로그램 간의 프로세스 간 통신처럼 보일 수 있습니다. 그러나 네트워크 통신에는 다른 문제가 있습니다.
예를 들어, 의사 소통은 컴퓨터 시간에서 영원할 수 있습니다. 빛이 지구를 한 바퀴 도는 데 0.1337초(2 * 3.14 * 6400 / 30000)가 걸립니다. 1GHz에서 실행되는 적당한 CPU를 가정하면 1초에 10^9 작업을 수행할 수 있습니다.
프로세스(동일한 시스템에서 실행)가 통신하는 데 대략 10^-7 - 10^-8초의 몇 가지 작업이 필요하다고 가정합니다. 이는 지구 반대편에 있는 컴퓨터와의 통신 속도가 100만 배 이상 느려진다는 의미입니다!
이 기사에서는 특히 인터넷을 통해 네트워크 응용 프로그램이 서로 통신하는 방법을 살펴봅니다. 인터넷에 대한 높은 수준의 개요는 이 문서를 참조하십시오.
컴퓨터 네트워크 소개
네트워크 통신과 관련된 추가적인 복잡성은 최종 시스템(휴대폰, 랩톱, Windows, Mac)의 다양성입니다. 이러한 복잡성은 차이점을 추상화하고 프로토콜이라는 균일한 규칙 집합을 도입하여 관리됩니다. .
프로토콜은 네트워크 응용 프로그램 간의 통신 구성 요소입니다. 널리 사용되는 프로토콜에는 HTTP, TCP, IP, SMTP가 있습니다. 인간의 언어(예:영어)가 다양한 사람들이 의미 있는 의사 소통을 가능하게 하는 것처럼 프로토콜은 네트워크 통신에서 유사한 격차를 메웁니다.
네트워크 통신은 네트워크 고유의 규모와 불확실성으로 인해 어렵습니다.
예를 들어 링크가 막혀 패킷이 삭제될 수 있습니다. 복잡한 문제를 해결하는 한 가지 전략은 문제를 하위 문제로 나누고 하위 문제를 해결하고 결합하여 원래 문제를 해결하는 것입니다.
프로토콜 스택은 이 아이디어를 사용하여 네트워크 통신을 해결합니다.
피자를 판매하는 웹사이트를 구축하고 있다고 상상해 보십시오. 사용자가 웹사이트와 상호작용할 때 프런트엔드는 백엔드 서버와 통신해야 합니다. 데이터가 인터넷을 통해 프런트엔드에서 백엔드 서버로 전달되는 방식에 대해 걱정할 필요 없이 온라인 피자 가게를 구축하는 데 집중할 수 있다면 좋지 않을까요?
프로토콜 스택은 우리를 위해 네트워크 통신을 처리합니다. 응용 프로그램(프론트엔드)은 응용 프로그램 계층을 사용하여 다른 응용 프로그램(백엔드)과 통신합니다.
애플리케이션 계층은 네트워크를 통해 정보를 전송하기 위해 전송 계층에서 제공하는 "서비스"를 사용합니다. 또한 전송 계층은 서비스 계약을 이행하기 위해 네트워크 계층에서 제공하는 서비스를 사용합니다.
이러한 방식으로 상위 계층은 하위 계층에서 제공하는 서비스를 사용하여 네트워크를 통해 다른 응용 프로그램과 통신합니다. 물리 계층은 전기 신호를 전달하는 전선을 구성합니다.
본질적으로 프로토콜 스택은 다양한 계층을 포함하며, 각 계층은 더 큰 문제의 일부를 해결하는 데 중점을 둡니다.
프로토콜은 프로토콜 스택이라는 이름을 제공하는 하위 문제에 대한 솔루션을 설명합니다. 일반적으로 프로토콜은 다음과 같은 두 엔티티 간의 통신 규칙을 정의합니다.
- 메시지 유형(예:요청 및 응답 메시지)
- 메시지의 필드와 같은 다양한 메시지 유형의 구문
- 필드의 의미, 즉 필드에 있는 정보의 의미
- 메시지를 보내고 응답하는 시기와 방법을 결정하기 위한 규칙
위에서부터 프로토콜 스택에 대해 자세히 살펴보겠습니다.
애플리케이션 계층
비즈니스 응용 프로그램은 응용 프로그램 계층을 사용하여 네트워크를 통해 통신합니다. 예를 들어 온라인 피자 가게에서 주문하는 것은 애플리케이션 계층을 사용하여 수행됩니다. HTTP는 백엔드 서버에 정보를 게시하는 한 가지 옵션입니다.
응용 프로그램 계층 프로토콜은 서로 다른 최종 시스템에서 실행되는 응용 프로그램이 서로에게 메시지를 전달하는 방법을 정의합니다. 통신 규칙(프로토콜) 외에도 응용 프로그램은 서로를 찾는 방법, 즉 서로 주소를 지정하는 방법도 필요합니다. 애플리케이션 주소는 다음과 같이 정의됩니다.
- IP 주소:최종 시스템에 할당된 숫자 레이블
- 포트 번호:대상 호스트에서 수신 프로세스를 지정하는 식별자입니다. 포트 번호는 호스트에서 실행되는 여러 네트워크 응용 프로그램을 설명하는 데 필수적입니다. 예를 들어, 웹 브라우저의 두 탭은 두 개의 서로 다른 프로세스로 작동합니다.
응용 프로그램의 주소는 네트워크에서 해당 ID를 정의하고 프로토콜은 통신 규칙을 정의합니다. 이들은 함께 소켓 주소(프로토콜 유형, IP 주소, 포트 번호)를 형성합니다.
A 소켓 애플리케이션 계층과 전송 계층 간의 인터페이스입니다. 네트워크에 대한 진입점 역할을 합니다. 즉, 응용 프로그램이 소켓을 통해 메시지를 보내고 네트워크 메시지를 받습니다.
요약하면 응용 프로그램은 응용 프로그램 계층 프로토콜을 사용하여 서로 통신합니다. 애플리케이션 계층은 최종 시스템 간에 데이터를 전달하기 위해 전송 계층에서 제공하는 서비스에 의존합니다. IP 주소와 포트 번호의 쌍은 응용 프로그램을 식별합니다. 정보는 소켓을 통해 애플리케이션에서 네트워크로 흐릅니다.
HTTP를 사용하여 인터넷을 통해 통신하는 두 응용 프로그램의 예를 살펴보겠습니다.
HTTP는 널리 사용되는 응용 프로그램 계층 프로토콜입니다. 통신은 내 웹 브라우저와 응용 프로그램 서버(ilovecookies.com) 간에 이루어집니다. 웹 브라우저에 이 주소를 입력하면 애플리케이션 서버에 HTTP 요청 메시지를 보냅니다.
이 요청 메시지에 대해 주의해야 할 몇 가지 사항:
- 요청 유형은 GET입니다.
- 메시지를 보내는 호스트는 ilovecookies.com입니다(사람이 읽을 수 있는 버전의 IP 주소인 호스트 이름)
- 소스 시스템은 특정 응답 형식, 언어 등을 허용합니다.
이 구조는 두 애플리케이션 간의 통신 규칙을 정의하는 HTTP의 일부입니다. 호스트 애플리케이션이 이 메시지를 받으면 응답 메시지로 응답합니다.
응답 메시지에는 상태 코드(200), 콘텐츠 유형 등과 같은 프로토콜별 데이터와 HTML 데이터(맞게 잘림)가 포함되어 있음을 알 수 있습니다. 요청-응답 쌍은 내 화면에 웹페이지(ilovecookies.com)를 성공적으로 배치하는 두 애플리케이션 간의 네트워크 통신을 구성합니다.
전송 계층
다음으로, 프로토콜 스택을 한 단계 아래로 내려가 전송 계층이 네트워크 통신에 어떻게 도움이 되는지 이해하겠습니다.
전송 계층은 논리적 서로 다른 호스트에서 실행되는 응용 프로그램 간의 통신:응용 프로그램의 관점에서 보면 두 호스트가 직접 연결된 것과 같습니다. 전송 계층이 제공하는 통신은 물리적이지 않고 논리적이라는 점에 유의하십시오. 최종 호스트 사이에는 직접적인 링크나 유선이 없습니다.
전송 계층은 애플리케이션 메시지를 더 작은 청크로 변환하고 헤더가 포함된 전송 메시지의 각 부분을 캡슐화하고 청크를 네트워크 계층으로 전달합니다.
정보를 조각으로 나누는 이유는 효율적인 네트워크 활용입니다. 인터넷은 매우 방대하여 여러 개의 병렬 경로가 두 개의 최종 호스트 간에 데이터를 전송합니다.
예를 들어, 뉴욕과 스탬포드 사이를 이동할 수 있는 두 가지 경로가 있습니다. 인터넷은 이 아이디어의 약간 극단적인 버전입니다.
패킷의 상대적인 순서는 청크 및 효율적인 네트워크 활용에 대한 자연스러운 질문입니다. 청크는 수신 호스트에서 동일한 순서로 다시 배치되어야 합니다. 수신 호스트의 전송 계층은 조각을 올바른 순서로 다시 스티칭하는 역할을 합니다.
또한 전송 계층에는 기능과 관련된 몇 가지 추가 데이터가 필요합니다. 예를 들어, 상대 시퀀스 번호가 청크에 추가되어 애플리케이션 메시지를 다시 연결합니다.
전송 계층 고유 정보의 또 다른 예는 포트 번호입니다. 수신 호스트에서 대상 포트 번호는 메시지를 올바른 애플리케이션으로 라우팅하는 데 도움이 됩니다.
인터넷에서는 두 가지 전송 계층 프로토콜을 사용할 수 있습니다.
- 사용자 데이터그램 프로토콜(UDP)
- 전송 제어 프로토콜(TCP)
두 프로토콜은 응용 프로그램 계층에 제공하는 전송 서비스에서 약간 다릅니다.
TCP | UDP |
---|---|
신뢰할 수 있는 데이터 전송 | 신뢰할 수 없는 데이터 전송 |
손실되거나 손상된 정보는 재전송을 통해 복구됩니다. | 손실되거나 손상된 데이터를 복구하는 메커니즘 없음 |
신뢰할 수 있는 통신을 희생시키면서 더 긴 대기 시간 | 신뢰할 수 없는 통신 비용으로 대기 시간 감소 |
애플리케이션의 서비스 요구 사항은 선택하는 프로토콜을 결정합니다. 예를 들어, 지불 시스템에는 안정적인 통신(TCP)이 필요하지만 비디오 스트리밍 서비스는 더 빠른 스트리밍(UDP)을 위해 일부 정보를 잃어도 괜찮습니다.
요약하면, 전송 계층은 애플리케이션 메시지를 청크로 분할하고 전송 계층별 정보를 포함하는 메시지로 캡슐화합니다. 조각은 메시지를 재생성하기 위해 수신 시스템에서 올바른 순서로 다시 배치되고 포트 번호를 사용하여 적절한 애플리케이션으로 전달됩니다.
내 웹 브라우저와 응용 프로그램 서버 간의 HTTP 예제 통신을 계속하겠습니다.
내 브라우저가 애플리케이션 서버에 대해 만드는 HTTP GET 요청을 나타내는 오른쪽 하단에서 디코딩된 바이트를 관찰할 수 있습니다. 이 패킷에서 HTTP 요청을 TCP 페이로드 필드로 봅니다.
또한 패킷은 순서 번호가 1인 상대적 순서에서 첫 번째입니다. 또한 내 웹 브라우저의 탭과 연결된 포트 번호(65012)와 애플리케이션 서버의 대상 포트 번호(80)도 포함합니다.
HTTP 응답의 처음 두 패킷(57 TCP 패킷)이 여기에 표시됩니다. 두 이미지의 오른쪽 하단에서 HTTP 관련 정보와 웹 페이지 ilovecookies.com에 해당하는 일부 HTML을 볼 수 있습니다.
또한 포트 번호 및 시퀀스 번호와 같은 전송 계층별 정보를 볼 수 있습니다. 요청 메시지 패킷과 비교하여 소스 및 대상 포트 번호가 뒤집혀 있음에 유의하십시오.
네트워크 계층
전송 계층과 달리 네트워크 계층은 두 끝 호스트 간의 논리적 통신을 제공합니다. 전송 및 네트워크 계층 서비스 간의 미묘한 차이에 유의하십시오.
네트워크 계층은 전송 계층에서 전송 패킷을 가져와 네트워크 패킷에 캡슐화합니다. 캡슐화는 네트워크 계층 프로토콜의 기능과 관련된 정보를 추가하는 데 유용합니다.
네트워크 계층은 두 호스트 간에 데이터를 이동하기 위해 최선의 서비스(타이밍, 상대적 순서, 최종 전달은 보장되지 않음)를 제공합니다. 최선을 다하는 서비스는 TCP 뒤에 있는 동기입니다. 네트워크 계층 프로토콜은 본질적으로 신뢰할 수 없기 때문에 TCP에는 안정적인 데이터 전송을 보장하는 추가 논리가 포함되어 있습니다.
네트워크 계층은 송신 호스트에서 수신 호스트로 패킷을 이동하는 역할을 합니다. 최종 호스트 외에도 네트워크 계층 프로토콜은 라우터에서도 실행됩니다. , 네트워크 코어의 일부입니다. 라우터는 패킷 전달을 담당하는 패킷 교환 장치입니다.
끝 호스트 1이 끝 호스트 2로 패킷을 보내려고 한다고 가정합니다. 끝 호스트 1은 패킷을 라우터로 전달합니다. 라우터는 네트워크 패킷의 정보를 보고 끝 호스트 2가 연결된 링크 2에서 패킷을 전달할 필요가 있음을 파악합니다.
모든 라우터에는 패킷에 대한 올바른 전달 링크를 해결하기 위해 RAM(동적으로 구축됨)에 저장된 전달 테이블이 있습니다. 예를 들어 위의 설정에 대한 라우팅 테이블은 다음과 같습니다.
주소 | 링크 |
---|---|
192.168.1.1 | 링크 1 |
168.134.1.1 | 링크 2 |
172.158.1.2 | 링크 3 |
라우터는 네트워크 패킷의 정보(대상 호스트 주소)를 사용하여 이 테이블에 인덱싱(비트별 XOR)합니다. 다음 명령을 실행하여 컴퓨터에서 라우팅 테이블을 볼 수 있습니다.
Mac: netstat -nrf inet
Linux: netstat -nr
Windows: Get-NetRoute -AddressFamily IPv4
기본 게이트웨이라고 하는 기본 또는 0.0.0.0 라우팅 테이블의 특정 항목을 확인하십시오. 대상 주소와 일치하는 항목이 없으면 패킷이 기본 게이트웨이로 라우팅됩니다.
인터넷에는 패킷을 전달하여 두 끝 호스트 간의 논리적 통신을 가능하게 하는 수많은 장치가 포함되어 있습니다.
모든 사람이 인터넷에서 데이터를 전달하는 라우터와 전선을 공유하기 때문에 라우터에는 나가는 패킷이 라우터에 의해 처리(/전달)될 때 들어오는 패킷을 보관하는 대기열이 있습니다. 대기열이 가득 차면 네트워크 계층 프로토콜에 비신뢰성이 도입되며 트래픽이 증가하면 꽉 찰 수 있습니다.
인터넷 네트워크 프로토콜을 인터넷 프로토콜(IP)이라고 합니다. 인터넷 네트워크 계층의 주요 구성 요소는 다음과 같습니다.
- IP:주소 지정 규칙(IPv4, IPv6), 패킷 형식, 패킷 처리 규칙 정의
- 라우팅 프로토콜:패킷이 소스에서 호스트로 가는 경로 결정
- ICMP:패킷의 오류를 보고하고 특정 네트워크 계층 정보에 대한 요청에 응답하는 기능
요약하면 네트워크 계층은 두 끝 호스트 간의 논리적 통신을 제공합니다. 네트워크 계층 프로토콜은 최종 호스트 및 라우터와 같은 네트워크 핵심 장치에서 실행됩니다. 라우터는 네트워크 패킷을 전달하여 두 끝 호스트 간의 논리적 통신을 형성하는 데 도움이 됩니다.
ilovecookies.com과의 커뮤니케이션 예제를 계속 진행해 보겠습니다.
우리는 내 웹 브라우저가 HTTP 요청 메시지(응용 계층 프로토콜)를 생성하고 전송 계층으로 전달하는 것을 보았습니다. 전송 계층은 내 웹 브라우저 응용 프로그램과 서버 응용 프로그램(ilovecookies.com) 간의 종단 간 통신을 위해 TCP 프로토콜을 사용합니다. ).
네트워크 패킷이 애플리케이션 패킷을 캡슐화하는 TCP 패킷을 캡슐화하는 것을 볼 수 있습니다. 녹색으로 강조 표시된 텍스트는 네트워크 패킷의 내용을 나타내고 노란색은 전송 패킷을 나타내며 GET에서 시작하는 나머지 텍스트는 응용 프로그램 패킷입니다.
네트워크 패킷 필드는 기능과 관련이 있습니다. 예를 들어 소스 주소는 내 컴퓨터의 IP 주소이고 대상 주소는 ilovecookies.com 서버 주소입니다.
패킷에 포함된 캡슐화 및 계층별 정보는 호스트와 호스트에서 실행되는 응용 프로그램 간의 논리적 통신 개념과도 관련이 있습니다.
예를 들어, 네트워크 패킷에는 최종 머신의 IP 주소가 포함되지만 전송 패킷에는 포트 번호만 포함됩니다. 전송 계층은 네트워크 계층에 의존하여 최종 머신 간에 데이터를 이동합니다. 데이터가 수신 장치에 도달하면 전송 계층이 전송 패킷에 포함된 포트 번호를 사용하여 패킷을 인계받아 올바른 애플리케이션으로 라우팅합니다.
링크 레이어
지금까지 본 계층과 비교하여 링크 계층은 범위가 더 좁습니다. 종단 간 경로의 개별 링크를 통해 패킷을 이동하는 서비스를 제공합니다.
예를 들어 링크는 빨간색 점선입니다(위 그림 참조). 링크 계층은 경로의 단일 링크를 통해 네트워크 계층 패킷의 노드 간 이동을 가능하게 합니다.
링크 계층 프로토콜은 다음을 정의합니다.
- 링크 끝에서 노드 간에 교환되는 패킷 형식
- 해당 노드가 패킷에 대해 수행한 작업
네트워크 어댑터는 링크 계층 프로토콜을 구현합니다. 네트워크 어댑터는 컴퓨터가 네트워크에 연결하고 정보를 교환할 수 있도록 하는 물리적 하드웨어를 구성합니다.
다음 명령을 실행하여 컴퓨터의 네트워크 어댑터 목록을 보십시오.
Mac: networksetup -listallhardwareports
Linux: lshw -class network -short
Windows: Get-NetAdapter -Name *
출력에서 각 장치에 MAC 주소라는 링크 계층 주소가 있음을 알 수 있습니다. 어댑터의 ROM에는 영구적인 것으로 간주되는 제조 시 할당된 MAC 주소가 포함되어 있습니다. 각 노드(호스트 및 라우터)는 경로를 따라 링크 계층 주소를 갖습니다.
앞서 우리는 장치의 식별자이기도 한 IP 주소에 대해 이야기했습니다. 상황은 집 주소와 주민등록번호와 같은 여러 식별자를 갖는 것과 유사합니다. 노드에 MAC 주소와 네트워크 계층 주소가 있는 데에는 여러 가지 이유가 있습니다.
- 다른 계층의 프로토콜은 대체 가능해야 합니다. 예를 들어, IPX는 네트워크 계층 주소를 사용하지 않습니다.
- IP 주소는 RAM에 저장되며 어댑터를 이동하거나 전원을 켤 때마다, 즉 임시로 재구성됩니다.
- 프로토콜이 MAC 주소를 생략한다고 가정합니다. 어댑터는 수신한 각 패킷을 프로토콜 스택 위로 전달해야 합니다. 네트워크 계층은 IP 주소 일치를 확인합니다. 하지만 너무 많이 수행하면 비효율적일 수 있습니다. 인터럽트는 비용이 많이 들 수 있는 패킷을 전달하는 데 도움이 됩니다.
요약하면, 계층이 네트워크 아키텍처에서 대체로 독립적인 빌딩 블록이 되려면 많은 계층에 주소 지정 체계가 있어야 합니다.
간단히 요약하자면, 우리는 지금까지 세 가지 유형의 주소를 발견했습니다.
- 응용 프로그램 계층의 호스트 이름(ilovecookies.com). DNS를 사용하여 해당 IP 주소로 변환됩니다.
- 네트워크 계층의 IP 주소
- 링크 레이어의 MAC 주소
호스트 이름에서 IP 주소를 확인하는 데 도움이 되는 도메인 이름 시스템과 마찬가지로 ARP(Address Resolution Protocol)는 IP 주소에서 (대상) MAC 주소를 결정하는 데 유용합니다.
ARP는 MAC 주소에 대한 IP 주소 매핑을 포함하는 RAM에 테이블을 만듭니다. 프로토콜에는 이 테이블을 자동으로 생성하기 위한 사양(예:특정 패킷)이 포함되어 있습니다.
네트워크 계층은 대상 노드의 패킷 및 MAC 주소(ARP 테이블에서)를 링크 계층으로 전달합니다. 링크 계층은 패킷을 링크 계층 패킷으로 캡슐화하고 링크를 따라 대상 노드로 이동합니다.
위의 설정에서 호스트 222.222.222.220이 다른 호스트 222.222.222.222로 패킷을 보내기를 원한다고 가정합니다. 네트워크 계층은 ARP를 사용하여 해당 MAC 주소를 49-BD-D2-C7-56-A2로 해석하고 패킷과 MAC 주소를 링크 계층으로 전달합니다. 링크 계층은 두 호스트 간의 링크를 통해 패킷을 이동합니다.
다음으로 호스트가 다른 네트워크의 다른 호스트에 패킷을 보내려는 보다 복잡한 시나리오를 고려하십시오. 예를 들어, 내 컴퓨터에서 ilovecookies.com으로 가는 패킷이 내 홈 네트워크에서 다른 네트워크로 이동합니다.
이 그림에서 주의할 점이 두 가지 있습니다. 먼저 라우터에는 두 개의 IP 주소가 있습니다. 라우터는 두 개의 다른 네트워크에 참여하므로 각 네트워크에서 라우터를 식별하려면 두 개의 IP 주소가 필요합니다. 자세한 내용은 여기를 참조하세요.
둘째, 두 개의 개별 네트워크를 서브넷이라고 합니다. 서브넷은 네트워크 장치 관리에 더 쉽게 액세스할 수 있도록 하는 네트워크 장치의 논리적 그룹입니다.
이 설정에서 호스트 222.222.222.222가 호스트 111.111.111.111에 패킷을 전송하기를 원한다고 가정합니다. 여기에는 네트워크 간 트립이 포함됩니다. 서브넷에서 대상 호스트(111.111.111.111)를 찾지 않고 패킷을 기본 게이트웨이(라우터)로 전달합니다.
네트워크 계층은 ARP 테이블을 사용하여 MAC 주소를 88-B2-2F-54-1A-0F로 확인합니다. 라우터는 라우팅 테이블을 사용하여 패킷을 다른 서브넷에 연결하는 링크로 전달합니다. 다시 한 번 ARP 테이블은 대상 호스트의 MAC 주소를 확인하는 데 도움이 되며 패킷은 링크를 따라 이동합니다.
요약하면 컴퓨터 하드웨어의 어댑터 부분은 링크 계층 프로토콜을 구현합니다. 링크 계층 프로토콜은 MAC 주소라는 주소 지정 체계를 정의하고 ARP는 IP 주소를 MAC 주소에 매핑하는 데 사용됩니다. 링크 계층은 네트워크 계층 패킷을 캡슐화하여 링크를 통해 이동합니다.
널리 사용되는 링크 계층 프로토콜 중 하나는 이더넷입니다. 예제(ilovecookies.com)를 계속하여 작동 중인 이더넷 프로토콜을 살펴보겠습니다.
이더넷 패킷에는 대상 및 소스 MAC 주소(생략)가 포함되어 있으며 IP 패킷을 캡슐화하는 것을 볼 수 있습니다.
요약
아래 그림을 사용하여 이 기사에서 본 내용을 요약해 보겠습니다.
서로 다른 두 시스템(호스트라고 함)에서 실행되는 컴퓨터 응용 프로그램은 프로토콜을 사용하여 통신합니다.
프로토콜은 두 호스트 간의 통신을 제어하는 규칙입니다. 프로토콜 스택은 네트워크 통신 문제를 해결하기 위해 여러 하위 문제를 해결합니다. 각 계층은 추상화 계층의 하위 계층에서 제공하는 서비스를 사용하여 하위 문제를 해결하는 데 중점을 둡니다.
응용 계층 프로토콜은 가장 높은 수준의 추상화에서 작동합니다. 애플리케이션은 애플리케이션 프로토콜(예:HTTP)의 규칙을 준수하는 메시지를 전송하여 통신합니다.
DNS는 호스트 이름(www.ilovecookies.com)을 IP 주소에 매핑하는 데 사용됩니다. 이러한 메시지는 소켓 인터페이스를 통해 푸시되어 전송 계층을 사용하여 네트워크를 통해 전송됩니다.
전송 계층은 서로 다른 호스트에서 실행되는 두 응용 프로그램 간의 논리적 통신을 노출합니다. 애플리케이션 메시지를 더 작은 조각으로 나누고 추가 정보(헤더)가 포함된 패킷으로 캡슐화합니다.
애플리케이션 메시지는 이러한 패킷에서 생성되고 패킷의 포트 번호를 사용하여 소켓 인터페이스를 통해 푸시됩니다. 이러한 패킷은 네트워크 계층에 의존하여 네트워크를 통해 전송됩니다.
다음으로 네트워크 계층이 인계받아 두 호스트 간의 논리적 통신을 제공합니다. 또한 네트워크 패킷에 전송 패킷을 캡슐화합니다.
인터넷에는 RAM에 저장된 라우팅 테이블을 사용하고 라우팅 프로토콜을 사용하여 동적으로 구축된 네트워크 패킷을 전달하는 패킷 교환 장치가 포함되어 있습니다. 네트워크 계층은 링크 계층에 의존하여 패킷을 이동합니다.
링크 계층은 개별 링크를 통해 패킷을 이동하는 역할을 합니다. 어댑터라고 하는 하드웨어 장치는 링크 계층 프로토콜을 구현하고 MAC 주소라고 하는 영구적인 주소가 연결되어 있습니다. MAC 주소는 이 계층의 식별자 역할을 합니다. ARP(Address Resolution Protocol)는 IP 주소를 MAC 주소에 매핑합니다.
마지막으로 링크 계층은 정보가 이동하는 와이어를 구성하는 물리적 계층으로 패킷을 전달합니다.
읽어 주셔서 감사합니다! 오늘 컴퓨터 네트워크에 대해 새로운 것을 배웠기를 바랍니다.