2017-02-25 1 views
3

나는 아래의 리소스를 통해 높은 수준의 이해를 얻었지만 TCP/IP를 통해 데이터 흐름을 실제 세계의 인터넷을 통해 데이터 흐름에 매핑 할 수 없었습니다.인터넷 흐름을 통한 TCP/IP 계층화 이해?

  1. TCP/IP layering video
  2. HTTP vs TCP/IP, send data to a web server

  3. Wiki OSI_model

는 요청과 응답은 TCP/IP 계층

을 통해 흐름을 어떻게, 내가 입력 www.google.com을 입력하고 공격 말할 수 있습니다

내 밑줄 : -

응용 프로그램 계층 : - 브라우저는 네트워크를 통해 호환되도록 올바른 형식으로 요청을 인코딩합니다. 마찬가지로 브라우저의 응답을 디코드합니다. 브라우저가 브라우저이므로 여기에서 주 행위자입니다.

전송 계층 : - 운영 체제 (OS)는 응답을 다시 매핑 할 수 있도록 로컬 포트 ​​/ 소켓을 연결합니다. 또한 일부 헤더를 사용하여 데이터를 풍부하게하고 TCP 또는 UDP와 같은 기본 프로토콜을 기반으로 처리합니다. 마찬가지로 OS는 응답을 다시 올바른 포트에 매핑합니다. 아마 그것은 또한 DNS 해상도를 수행하고 IP를 요청합니다. 또한 서버와의 연결을 설정하여 추가 데이터를 서버로 보낼 수 있습니다.

TCP (UDP와 대비)와 같은 프로토콜은 패킷이 올바른 순서로 전송되고 수신자로부터의 응답을 기대합니다. ack가 실패하면 다시 시도합니다. 매우 신뢰할 수 있습니다. 그래서 OS가 여기 주연입니다.

네트워크 계층 : - ISP는 인터넷 백본 (IB)으로 데이터를 추가로 전달합니다. IB는 최단 경로와 다른 것들을 결정할 것입니다. 응답을 위해 마찬가지로 . ISP와 IB는 두 가지 주체입니다.

데이터 링크 계층 : -이 계층은 요청을 오른쪽 컴퓨터 즉 MAC 주소로 매핑합니다. 그래서 나는 그것이 인터넷 서비스 제공자의 어딘가에있을 것이라고 생각한다. 사실 이 레이어의 역할과 주인공이 확실하지 않습니다.

물리 계층 : -이 레이어는 전자파와 같은 물리적 데이터를 처리합니다. 파이버 옵틱과 같은 // 케이블은 여기에서 주요한 역할을 할 수 있습니다. 비록 이것이 마지막 레이어 인 의 TCP/IP 레이어링으로 묘사되어 있지만, 나는 그것이 트랜스 포트 레이어에서 시작된 역할이라고 생각합니다.

내 의견이 정확합니까? 그렇지 않으면 누군가 그것을 현명하게 교정 할 수 있습니까?

+0

이것은 오랫동안 내 자신에게 묻고있는 아주 좋은 질문입니다. – samayo

+1

설명한 모든 작업은 로컬 컴퓨터에서 수행됩니다. ISP와 인터넷 백본은 아무 관련이 없습니다. DNS 확인은 전송 계층이 아닌 연결 전에 브라우저에서 수행합니다. 주제를 벗어. – EJP

+0

@EJP 네트워크 계층과 데이터 링크 계층 작업은 네트워크 수준이 아닌 로컬 컴퓨터에서도 수행됩니다 (일단 데이터가 로컬 컴퓨터를 떠나면)? –

답변

2

몇 가지 세부 사항을 생략 한 (기본?) 설명을 제공 할 것입니다.

응용 계층

귀하의 예제에서 응용 프로그램 계층이 포함 브라우저 및 제공하는 웹 서버 www.google.com의 DNS 시스템과 프로토콜과 HTTP 프로토콜입니다.

각 네트워크 응용 프로그램은 특정 전송 및 네트워크 계층을 사용하도록 프로그래밍되었으므로 브라우저 응용 프로그램과 웹 서버는 TCP/IP를 사용하도록 설계되고 코딩되었습니다. 응용 프로그램은 TCP/IP를 통해 운영 체제 (OS)에서 제공하는 API를 사용합니다. 대부분의 경우이 API는 케이스의 전부는 아니지만 Berkeley Sockets API (현재 소켓 API에서 제공됨)으로 알려져 있습니다. 이 API를 사용하면 웹 서버는 클라이언트 연결을 위해 특정 포트 (HTTP의 경우 80, HTTPS의 경우 443)에서 수신하도록 OS에 지시 할 수 있으며 새 연결이 설정되면 OS는이를 웹 서버 응용 프로그램에 "전달"합니다. 이와 동일한 API를 사용하여 브라우저는 인터넷의 원격 웹 서버에 새로운 연결을 설정하고 데이터를 보내고받습니다.

www.google.com을 입력하면 인터넷 통신이 호스트 이름을 사용하지 않으므로 브라우저에서 가장 먼저해야 할 일은 www.google.com의 IP 주소를 찾는 것입니다. 이 작업은 Domain Name System 또는 DNS를 사용하여 수행됩니다. 세부 사항을 생략하면 브라우저는 소켓 API를 사용하여 구성된 DNS 서버 IP 주소 및 포트 53에 UDP를 사용하여 DNS 쿼리를 전송하여 www.google.com에 대한 IP 주소를 얻습니다. DNS 서버는 UDP를 사용하여 브라우저에 응답을 보냅니다.

브라우저가 www.google.com의 IP 주소를 얻으면 HTTPS를 사용하는 경우 이전에 얻은 IP 주소로 소켓 API를 사용하고 443을 사용하여 새로운 TCP 연결을 설정합니다. 연결이 설정되면 브라우저는 웹 페이지, 이미지, 오디오 등과 같은 리소스를 얻기 위해 연결을 통해 웹 서버에 HTTP 요청을 보내고 웹 서버는 동일한 연결을 사용하여 브라우저에 응답을 다시 보냅니다. HTTP는 브라우저와 웹 서버간에 사용되는 응용 프로그램 수준 프로토콜입니다. 보기의 네트워크 관점에서

는 응용 프로그램 계층의 책임은 다음과 같습니다

  • 는 소켓 API를 사용하여 UDP를 통해 DNS 응용 프로그램 계층 프로토콜을 사용하여 IP 주소에 대한 호스트 이름을 번역.
  • 소켓 API를 사용하여 www.google.com, 포트 443에 대해 얻은 IP 주소로 TCP 연결을 설정하십시오.
  • HTTP 응용 프로그램을 사용하여이 연결을 통해 요청을 보내고 응답을 수신합니다 계층 프로토콜. 다시 HTTP는 브라우저 (웹 페이지, 이미지 등)를 요청하고 응답을 받기 위해 브라우저와 웹 서버간에 사용되는 프로토콜입니다.

응용 프로그램 계층은 응용 프로그램 계층 프로토콜 메시지 또는 데이터를 작성하고 소켓 API를 통해 설명한 것처럼 전송 계층과 상호 작용합니다. 이 API를 사용하면 응용 프로그램이 TCP에 원격 호스트 및 포트에 대한 새 연결을 설정하도록 지시하고 연결의 다른 끝에있는 응용 프로그램과 데이터를주고받습니다.

전송 계층

귀하의 예제에서 전송 계층은 UDP 및 중간 숙주를 포함하지 않는, 소스 및 대상 호스트에서 실행중인 TCP 프로토콜이 포함되어 있습니다.

전송 계층은 인터넷의 일부 특정 호스트에서 실행중인 특정 응용 프로그램을 브로드 캐스팅 할 때 두 개 이상 (여기서는 적용되지만 여기서는 적용되지 않음)간에 데이터를 전송하는 데 사용됩니다.

전송 계층에는 TCP의 경우 연결 설정 및 해체, 오류 감지 및 재전송, 주문한 배달, 흐름 제어 및 혼잡 제어 등 다른 책임이 있습니다. TCP 헤더의 일부 필드는 다음과 같습니다. 이러한 용도로 사용됩니다.

TCP 및 UDP는 응용 프로그램 데이터 (이 경우 DNS 또는 HTTP 요청 및 응답)를 원본 포트 번호와 대상 포트 번호가 포함 된 필드가있는 패킷으로 캡슐화 한 다음 IP 계층에 전달하여 대상 IP 주소를 배달합니다 .

네트워크 계층

당신의 예에서 네트워크 계층은 다른 것들 사이에서, 포함, 소스 및 대상 호스트에서 실행되는 IP 프로토콜뿐만 아니라 마지막에 길을 따라 각 홉에서 IP 프로토콜 계층 실행 목적지. 이러한 중간 홉은 인터넷에서 서로 다른 네트워크를 상호 연결하는 데 사용되는 라우터입니다.

IP 프로토콜은 인터넷에서 두 개의 특정 호스트간에 패킷을 전송하는 데 사용되는 비 연결적이고 최상의 노력을 제공합니다 (재전송 없음, 오류 수정, 중복 검색 없음).

네트워크 계층은 전송 계층과는 다른 책임이 있습니다. 주된 목적은 서로 다른 링크 계층 기술을 사용하고 라우터를 통해 상호 연결된 네트워크의 복잡한 네트워크 인 인터넷간에 호스트간에 패킷을 라우팅하고 다른 조직에서 관리하는 것입니다 . 네트워크 계층은 낮은 수준의 네트워크 세부 정보를 숨기고 호스트간에 전송 계층에 패킷 배달 서비스를 제공합니다.

우리의 경우 네트워크 계층 패킷 인 IP 데이터 그램에는 인터넷 내에서 올바른 호스트로 패킷을 라우팅하는 데 사용되는 원본 및 대상 IP 주소가있는 헤더가 포함되어 있습니다. 이 계층의 일부는 서로 다른 물리적 네트워크를 상호 연결하는 라우터와 특수한 목적의 네트워크 장비로, 목적지 주소와 경로 교환 프로토콜을 사용하여 동적으로 구축 된 라우팅 테이블 (OSPFBGP)을 포함합니다.

IP는 TCP 세그먼트를 다음을 포함하여 IP 데이터 그램으로 캡슐화합니다. protocol = TCP (이 필드는 대상 IP 계층에서 TCP 또는 UDP로 데이터 그램의 내용을 전달하는 데 사용됨), 소스 IP 주소 및 대상 IP 주소를 포함하는 필드가있는 필드가있는 헤더가 있으며 전달할 링크 계층으로 전달됩니다 목적지까지의 경로상의 다음 홉.

링크 계층

당신의 예에서 링크 계층은 여러 프로토콜을 포함 할 수있다. WI-FI (IEEE 802.11 무언가) 및/또는 이더넷 (IEEE 802.3 무언가)일지도 모르는 로컬 네트워크에서 ISP와 광대역 네트워크의 다른 네트워크 내부에있는 집과 ISP간에 사용되는 링크 계층 프로토콜도 포함됩니다 대상 ISP 또는 회사 및 최종 대상 호스트에 도달하는 데 사용됩니다. 사용하고있는 링크 계층 프로토콜 중 일부는 PPPFrame Relay입니다.

링크 계층은 호스트가 연결된 로컬 네트워크 세그먼트 (링크)에서만 작동하며 링크 계층 패킷은 다른 네트워크로 라우팅되지 않습니다. 이 계층의 책임은 동일한 네트워크에 연결된 두 호스트 사이의 물리 계층을 사용하여 데이터를 전송하는 것입니다. 이 레이어는 실제로 서로 다른 두 컴퓨터간에 비트를 전송하는 유일한 레이어입니다.

링크 계층은 EtherType = IP (이 필드는 프레임의 내용을 적절한 네트워크 계층에 전달하기 위해 대상 링크 계층에서 사용하는 필드), 원본 링크 계층 주소 및 목적지 링크 계층 어드레스 (예를 들어, MAC 어드레스)를 포함한다.

물리 계층

여러 프로토콜을 포함 할 수있다 당신의 예에서 물리 계층. 로컬 네트워크에서 Ethernet physical layers 일 수도 있지만 집과 ISP 사이에 사용되는 DSL과 같은 물리적 계층 프로토콜을 포함하여 ISP의 다른 네트워크 내부와 대상 ISP 또는 회사에 도달하는 데 사용되는 광역 네트워크 및 마지막으로 대상 호스트. 광역 네트워크에서 가장 많이 사용되는 물리 계층은 을 사용하여 전기 신호 또는 광 펄스로 비트를 변환하고 이러한 신호를 구리선, 마이크로파 또는 광섬유와 같은 물리적 매체를 통해 전송합니다. 물리 계층은 네트워크를 구축하기 위해 커넥터, 와이어, 장비, 안테나, 중계기 등과 같이 필요한 모든 하드웨어를 포함합니다.

구글의 웹 서버 IP 주소 = 10.0.0.1를 가지고 있으며, 여러분의 호스트 = 20.0.0.1을 IP 주소를 가지고 있다고 가정하자 구체적인 예. 또한 Google의 일부 네트워크 관리자가 DNS 서버에 www.google.com에 대한 항목을 설정하여 10.0.0.1에 매핑한다고 가정합니다. 또한 호스트가 IP = 30.0.0.1 인 DNS 서버를 사용하도록 구성되었다고 가정하십시오.

Google 웹 서버는 소켓 API를 사용하여 IP 10.0.0.1 및 443에서 클라이언트 (브라우저)의 연결을 수신합니다. 웹 서버 호스트 OS는 웹 서버 응용 프로그램에 10.0.0.1:443으로 새로운 TCP 연결을 각각 전달합니다.

브라우저에 IP 주소가 20.0.0.1 인 호스트에 www.google.com을 입력합니다.

귀하의 브라우저는 소켓 API를 사용하여 UDP를 사용하여 목적지 IP = 30.0.0.1 및 목적지 포트 = 53에 DNS 쿼리를 전송합니다. 해당 호스트와 포트에서 수신 대기하는 DNS 서버는 쿼리를 수신하여 일부 서버로 전달합니다 다른 DNS 서버는 Google DNS 서버 (도메인 google.com에 대한 권한)에 연락하여 www.google.com이 10.0.0.1임을 나타내는 DNS 응답으로 응답합니다. 이러한 쿼리가 UDP를 사용하여 DNS 서버 응용 프로그램에 전달되는 방식을 이해하고 응답이 응용 프로그램으로 다시 전송되는 방식을 이해하려면 아래의 세부 정보를 참조하십시오. UDP를 사용하는이 수준의 유일한 차이점은 데이터를 보내기 전에 연결이 설정되지 않는다는 것입니다.

귀하의 브라우저는 소켓 API를 다시 사용하여 대상 IP = 10.0.0.1 및 대상 포트 = 443에 대한 TCP 연결을 설정합니다. OS는 임의의 로컬 포트를이 연결에 할당합니다 (포트 = 10000). 지금 로컬 및 대상 엔드 포인트로 식별되는 TCP 연결이 있습니다.이 예는 20.0.0.1:10000, 10.0.0.1:443입니다.

www.google.com의 IP 주소를 얻으면 브라우저는 소켓 API를 사용하여 index.html 및 해당 페이지의 일부인 모든 자원을 요청하는 HTTP 요청을 보냅니다. Sockets API는 응용 프로그램 데이터를 TCP 계층으로 보냅니다.

호스트에서 실행중인 TCP 계층은 응용 프로그램 데이터를 로컬 포트 ​​= 10000 및 대상 포트 = 443으로 세그먼트로 캡슐화하고 IP 계층에 이러한 세그먼트를 대상 IP = 10.0.0.1로 보내도록 요청합니다.

호스트에서 실행중인 IP 계층은 로컬 라우팅 테이블과 대상 IP 주소를 사용하여 이러한 데이터 그램의 다음 홉을 찾습니다. 다음 홉이 호스트에 구성된 기본 게이트웨이가됩니다.

호스트에서 실행중인 IP 계층은 ARP이라는 프로토콜을 사용하여 다음 홉 (기본 게이트웨이)의 MAC 주소를 찾습니다.이 프로토콜은 동일한 로컬 네트워크에있는 지정된 대상 IP 주소에 대한 MAC 주소를 찾는 데 사용됩니다.

IP 계층은 TCP 세그먼트를 protocol = TCP, 원본 IP = 20.0.0.1 및 대상 IP = 10.0.0.1의 IP 데이터 그램으로 캡슐화하고 링크 계층에 다음 홉으로 이러한 IP 데이터 그램을 보내도록 요청합니다.

다음 홉 IP 주소는 컴퓨터에 설치된 네트워크 인터페이스에 매핑됩니다. 따라서 링크 계층은 EtherType = IP, 원본 MAC = (매핑 된 로컬 네트워크 인터페이스의 MAC 주소) 및 대상 MAC = (ARP를 사용하여 얻은 기본 게이트웨이의 MAC 주소)를 사용하여 IP 데이터 그램을 프레임으로 캡슐화 한 다음 올바른 네트워크 인터페이스 .

기본 게이트웨이 (라우터)와 도중에 모든 다른 라우터는이 프로세스를 반복 할 것이다 :

  • 링크 층은, 로컬 네트워크 인터페이스 중 일부의 MAC 어드레스로 향하는 프레임을 수신한다.
  • 링크 레이어는 프레임 필드 EtherType을 검사하고 값은 IP이므로 IP 계층에 데이터 그램을 전달합니다.
  • IP 레이어는 목적지 IP 주소를 검사 할 것이고 대상 IP 주소는 로컬 IP 주소가 아니기 때문에 최종 목적지 호스트까지 로컬 라우팅 테이블을 사용하여이 데이터 그램의 다음 홉을 찾을 것입니다.

최종 호스트 (Google 웹 서버 실행)는 동일한 단계를 수행하지만 대상 IP 주소가이 호스트의 로컬 IP 주소 중 하나와 일치하기 때문에 IP 계층은 IP 데이터 그램의 프로토콜 필드를 검사하고 그 이유는 TCP가 세그먼트를 TCP 계층으로 전달하기 때문입니다. TCP 레이어는 TCP 세그먼트에서 대상 포트 (이 예제에서는 443)를 검사하고 소켓 API를 통해 포트 443 (이 예에서는 Google 웹 서버)에서 수신 대기하는 응용 프로그램에 응용 프로그램 계층 데이터를 전달합니다. 이 소켓은 특정 원격 IP와 포트 (20.0.0.1:10000)에 바인딩되어 있으므로 웹 서버가이 소켓을 통해 응답을 다시 보내면 프로세스는 반복되지만 소스 IP = 10.0.0.1, 원본 포트 = 443, 대상 IP = 20.0.0.1 및 대상 포트 = 10000입니다.

+0

TLS도 응용 프로그램 계층에 있습니다. – EJP

+0

@ Luciano Afranllie 네트워크 및 링크 계층의 역할에 혼란 스럽습니다. 링크 계층의 경우 '이 계층의 책임은 동일한 네트워크에 연결된 두 호스트 사이의 물리적 계층을 사용하여 데이터를 전송하는 것입니다.'라는 의미는 데이터가 wifi를 통해 데이터를 가정용 라우터로 보낸 다음 wifi 라우터를 ISP 모두가 모두 같은 네트워크에 있기 때문입니다. 그렇다면 링크 계층이 네트워크 계층에 먼저 오게되는 이유입니다. 또한 네트워크 역할이 시작될 때 이것이 링크 계층의 역할 인 경우. Doe는 네트워크를 통해 서로 다른 두 ISP 사이에서 데이터를 라우팅 할 때 시작됩니까? –

+0

네트워크 계층 역할은 호스트에서 최종 대상까지 종단 간 데이터 그램을 전달하는 것입니다. IP 데이터 그램이 호스트를 떠나면 헤더의 대상 주소는 대상 호스트의 IP 주소이며 경로를 따라 변경되지 않습니다. 링크 계층은 로컬 네트워크를 넘어 패킷을 보낼 수 없습니다. 따라서 일반적으로 wifi, DSL, 프레임 릴레이 등의 최종 목적지까지의 경로에 따라 서로 다른 물리적 네트워크와 프로토콜이 포함됩니다. 이러한 각 네트워크에서 프레임 헤더는 다음 홉의 대상 주소를 가지며 항상 동일한 주소 물리적 네트워크. IP는 이러한 세부 정보를 상위 계층에 숨 깁니다. –