"네트워크 프로그래밍" 네트워크 계층 프로토콜_IP 프로토콜 학습_및 심층 이해

"서문" 기사의 내용은 네트워크 계층의 IP 프로토콜에 대한 설명입니다.

'속성 열'네트워크 프로그래밍

'홈페이지 링크'개인 홈페이지

"저자" Mr. Maple Leaf (fy)

1. IP 프로토콜 소개

IP는 인터넷 프로토콜(Internet Protocol)을 의미하며 Internet Protocol의 약어로 TCP/IP 시스템의 네트워크 계층 프로토콜입니다.

IP 프로토콜은 네트워크 계층에 위치
여기에 이미지 설명을 삽입하세요.

네트워크 계층이 해결하는 문제

  • 전송 계층: 두 호스트 간의 데이터 전송을 담당합니다. 대표 프로토콜: TCP 프로토콜, 데이터신뢰성 소스 호스트에서 타겟 호스트로 전송 보장
  • 전송 계층의 데이터는 계속해서 네트워크 계층으로 전달됩니다.
  • 네트워크 계층: 주소 관리 및 라우팅을 담당합니다. 대표 프로토콜 : IP 주소를 통해 호스트를 식별하고, 라우팅 테이블을 통해 두 호스트 간의 데이터 전송 회선(라우팅)을 계획하는 IP 프로토콜
  • TCP는 전송 계층 제어 프로토콜로서 데이터 전송의 신뢰성을 보장하지만 TCP는 데이터 전송 전략만 제공하며 , 네트워크는 전송 계층 아래의 계층과 링크 계층은 실제로 네트워크의 데이터 전송을 담당합니다.

네트워크 계층이 해결해야 할 문제는:네트워크를 통해 한 호스트에서 다른 호스트로 데이터를 보내는 것, 즉 데이터 라우팅(경로 선택)

  • IP 주소의 핵심 기능은호스트를 찾는 것입니다
  • IP에는 네트워크를 통해 호스트 A에서 호스트 B로(호스트에서 호스트로) 데이터를 보내는 기능이 있습니다.
  • 능력이 있다고 해서 할 수 있는 것은 아닙니다. 예를 들어 장산(Zhang San)은 수학 시험에서 150점을 얻을 수 있는 능력이 있지만 매번 150점을 얻을 것이라고 보장할 수는 없습니다. 능력이 있다는 것은 매우 높은 점수를 의미합니다. 완료할 확률.
  • TCP는 데이터 전송 전략을 제공하고, IP는 동작(데이터 전송) 제공을 담당합니다.
  • 즉, 네트워크 계층은 데이터가 매번 다른 호스트로 성공적으로 전송될 수 있다고 보장할 수 없지만 TCP가 제공하는 신뢰성 정책의 보장 하에서 네트워크 계층은 결국 데이터를 안정적으로 다른 호스트로 보낼 수 있습니다. 다른 호스트.

기본 사상

  • 호스트: 각 호스트에는 IP 주소가 있지만 라우팅 제어를 수행하지 않는 장치(현재는 라우팅 제어를 수행하지 않는 장치가 거의 없음)
  • 라우터: IP 주소가 있고 라우팅 제어가 가능합니다(네트워크 계층에서 작동하며 일부 현재 라우터에는 이미 애플리케이션 계층 기능이 있음)
  • 노드: 호스트와 라우터의 총칭

경로 선택

데이터의 네트워크 전송은 일반적으로 네트워크를 통해 이루어지며 라우터는 여러 네트워크를 연결하는 하드웨어 장치이므로 데이터는 네트워크를 통해 전송될 때 하나 이상의 라우터를 통과해야 합니다.
여기에 이미지 설명을 삽입하세요.

  • 예를 들어, 호스트 B는 호스트 C로 데이터를 보냅니다. 호스트 C의 주소(대상 IP)를 결정한 후 데이터를 라우팅할 수 있습니다(대상 IP가 경로를 결정하는데, 다른 경로 대신 이 경로를 선택하는 이유는 무엇입니까?)
  • 그러나 데이터 자체는 "경로를 모르기" 때문에 라우팅 시 데이터가 자체 경로를 선택할 수 없습니다.
  • 라우터는 길을 가는 방법을 알고 있으며 라우팅 테이블에 "경로 인식 경험"을 기록합니다.
  • 따라서 라우터는 라우팅 테이블을 조회하여 특정 노드까지의 최단 경로를 찾을 수 있습니다.
  • 따라서 데이터가 라우팅될 때 계속해서 라우터를 통해 경로를 선택하여 단계적으로 대상 네트워크 또는 대상 호스트에 가까워집니다.

2. IP 프로토콜 헤더

IP 프로토콜 헤더 형식은 다음과 같습니다.
여기에 이미지 설명을 삽입하세요.

  • 4자리 버전 번호(version): IP 프로토콜의 버전을 지정합니다. IPv4의 경우 4입니다.
  • 4비트 헤더 길이(header length): IP 헤더의 길이를 4바이트 단위로 나타냅니다. IP 헤더는 60바이트, 기본 헤더 길이는 20바이트)
  • 8비트 서비스 유형(Type Of Service): 3비트 우선순위 필드(지원 중단됨), 4비트 TOS 필드 및 1비트 예약된 필드(0으로 설정해야 함) 4자리 TOS는 각각 최소 지연, 최대 처리량, 최대 신뢰성 및 최소 비용을 나타냅니다. 이 네 가지는 서로 충돌하며 하나만 선택할 수 있습니다. 예를 들어, ssh/telnet과 같은 애플리케이션의 경우 최소 지연이 더 중요하고, ftp와 같은 프로그램의 경우 최대 처리량이 더 중요합니다.
  • 16비트 전체 길이(total length): 각 IP를 결합하는 데 사용되는 IP 패킷(IP 헤더 + 페이로드)의 전체 길이입니다. 패킷 별도의 텍스트
  • 16비트 식별자(id): 호스트가 보낸 메시지를 고유하게 식별합니다. 데이터가 IP 계층에서 조각화된 경우 각각 샤드에 해당하는 ID는 모두 동일합니다
  • 3자리 플래그 필드: 첫 번째 비트가 예약되어 있습니다. 예약되어 있다는 의미는 현재 사용되지 않지만 향후 사용할 수 있지만 아직 결정되지 않았다는 의미입니다. 아직. 두 번째 비트는 조각화가 금지됨을 나타내며, 패킷 길이가 MTU를 초과하면 IP 프로토콜이 패킷을 삭제할 것임을 나타냅니다. 세 번째 비트는 "더 많은 조각"을 나타냅니다. 메시지가 조각화되지 않은 경우 이 필드는 0으로 설정됩니다. 메시지가 조각화된 경우 마지막 조각화된 메시지를 제외하고 나머지 조각은 0으로 설정됩니다. 패킷은 모두 0으로 설정됩니다. 1(마지막 조각난 패킷의 이 필드는 0입니다. 종료 플래그와 유사하며 '\0'으로 끝나는 C 언어 문자열과 유사함)
  • 13비트 슬라이스 오프셋(framegament offset): 원본 데이터의 시작 부분을 기준으로 한 슬라이스의 오프셋으로, 현재 슬라이스가 원본 데이터에 있습니다. 오프셋 위치, 실제 오프셋 바이트 수는 이 값으로 구해집니다× 8. 따라서 마지막 메시지를 제외한 다른 메시지의 길이는 8의 정수배여야 합니다. 그렇지 않으면 메시지가 연속되지 않습니다.
  • 8비트 생존 시간(Time To Live,TTL): 데이터그램이 대상에 도달하기 위한 최대 홉 수, 일반적으로 매번 64 경로를 통과합니다.TTL -= 1 0에 도달하지 않을 때까지 감소하면 폐기됩니다. 이 필드는 주로 라우팅 루프를 방지하는 데 사용됩니다.
  • 8비트 프로토콜: 상위 계층 프로토콜의 종류를 나타냅니다.
  • 16비트 헤더 체크섬: 데이터그램의 헤더가 손상되었는지 확인하기 위해 CRC를 사용하지만 데이터 부분은 확인되지 않습니다.
  • 32비트 소스 IP 주소(Source IP Address): 데이터그램을 보낸 소스 호스트의 IP 주소를 나타냅니다.
  • 32비트 대상 IP 주소(Destination IP Address): 데이터그램을 수신하는 대상 호스트의 IP 주소를 나타냅니다.
  • 옵션 필드: 가변 길이, 최대 40바이트(논의되지 않음)

헤더와 페이로드를 분리하는 방법은 무엇입니까? ? 즉, 포장을 푸는 방법

IP 프로토콜의 헤더는 TCP 프로토콜의 헤더와 유사하며, IP가 하위 계층으로부터 메시지를 획득할 때 IP는 헤더의 구체적인 길이를 알지 못하더라도 IP 메시지의 처음 20바이트가 기본 헤더입니다. IP이며, 이 20바이트 바이트에는 4비트 헤더 길이가 포함됩니다.

IP 언패킹 과정은 다음과 같습니다.

  • IP는 하위 계층으로부터 메시지를 획득한 후 먼저 메시지의 처음 20바이트를 읽고 4비트 헤더 길이를 추출하며, 이때 IP 헤더의 크기를 획득한다.
  • 메모: IP 기본 헤더의 길이는 20바이트이며, 20바이트는 브레인 없이 읽을 수 있다.
  • IP 헤더의 4비트 헤더 길이는 4비트에 불과합니다. 즉, 4비트 헤더 길이의 값 범위는0000 ~ 1111즉, 최대 길이입니다. 는 15이고, 헤더 길이가 4비트이기 때문에 길이의 기본 단위는 4바이트이므로 15*4=60바이트
  • 즉, IP 헤더의 최대 길이는 60바이트이고, 기본 길이는 20바이트이다. 즉, 헤더의 값 범위는[20 ~ 60]
  • 헤더에는 전체 길이가 16비트인 필드도 있습니다. 즉, IP 메시지의 전체 길이(IP 헤더 + 페이로드)입니다.
  • 헤더 길이를 얻은 후 페이로드에서 직접 분리할 수 있습니다.

메모: 프로토콜 계층마다 데이터 패킷의 이름이 다릅니다. 전송 계층에서는 이를 데이터 세그먼트(segment)라고 하고, 네트워크 계층에서는 데이터그램이라고 합니다. (datagram), 링크 계층에서 데이터 프레임(frame)이라고 함

IP는 페이로드를 전달할 상위 계층 프로토콜을 어떻게 결정합니까? 즉, 사용법은

  • IP 헤더에는 8비트 프로토콜이라는 필드가 있는데, 이 필드(프로토콜 번호)는 상위 계층 프로토콜의 종류를 나타내며, IP는 이 필드를 사용하여 분리된 페이로드를 어떤 상위 계층 프로토콜로 전달해야 하는지 결정합니다.
  • 참고: 각 프로토콜에는 특정 번호가 있습니다.

포장을 풀고 분리하는 방법은 해결되었으며, 캡슐화는 그 반대입니다.

8비트 TTL(Time to Live)

  • 네트워크 전송 과정에서 패킷이 라우팅되는 과정에서 루프 라우팅(Loop Routing)이 발생하는 등의 이유로 패킷이 대상 호스트에 도달하지 못하는 경우가 있으며, 이때 해당 패킷은 폐기된 쓸모없는 패킷이 됩니다.
  • 네트워크에서 수많은 쓸모 없는 패킷(쓸모 없는 패킷은 전달될 때마다 라우터 리소스를 낭비함)을 방지하기 위해 IP 헤더에 8비트 생존 시간이라는 필드가 나타납니다.
  • 8비트 생존 시간은 패킷이 목적지에 도달하기까지의 최대 홉 수를 나타내며, 패킷이 경로를 통과할 때마다 여기서 생존 시간은 1씩 감소하고, 생존 시간이 0이 되면 패킷은 라우터는 자동으로 패킷을 삭제하고 패킷은 네트워크에서 소멸됩니다.

32비트 소스 IP 주소 및 32비트 대상 IP 주소

  • 32비트 소스 IP 주소와 32비트 대상 IP 주소는 라우팅 및 포워딩 프로세스(경로 선택)에서 중요한 역할을 합니다.
  • 라우터는 이 두 주소를 사용하여 패킷을 전달할 방법을 결정합니다. 라우팅 테이블을 조회하여 소스 주소에서 대상 주소로 패킷을 보내는 가장 좋은 경로를 찾습니다. 이 프로세스를 라우팅 및 전달이라고 합니다.
  • 라우터는 소스 IP 주소와 대상 IP 주소를 통해 데이터 패킷의 시작점과 끝점을 결정하고 전달을 위한 최상의 경로를 선택하여 데이터 패킷이 빠르고 정확하게 목적지에 도달할 수 있도록 할 수 있습니다.

마지막으로 16비트 식별(id), 3비트 플래그 필드, 13비트 슬라이스 오프셋에 대해 이야기해 보겠습니다.

3. IP 네트워크 세그먼트 분할(서브넷 분할)

IP 주소의 구성

IP 주소는 네트워크 번호와 호스트 번호의 두 부분으로 구성됩니다.

네트워크 번호: 서로 연결된 두 네트워크 세그먼트의 ID가 서로 다른지 확인하세요.
호스트 번호 : 동일한 네트워크 세그먼트에서 호스트는 동일한 네트워크 번호를 가지지만, 호스트마다 호스트 번호는 달라야 합니다.

P 프로토콜에는 IPv4와 IPv6의 두 가지 버전이 있습니다. 포스트스크립트에서 IP 프로토콜에 대한 언급은 별도로 지정하지 않는 한 기본적으로 IPv4를 의미합니다(IPv4는 IPv6와 호환되지 않음).

  • IPv4의 경우 IP 주소는 4바이트, 32비트 양의 정수(32비트)입니다.
  • IP 주소 뒤에 /를 추가하고 / 뒤에 数字를 추가합니다. 이는 처음부터 끝까지의 숫자를 의미합니다. 번호는 네트워크 식별(네트워크 번호)에 속합니다

예를 들어 아래 그림의 라우터는 두 개의 네트워크 세그먼트(서브넷)를 연결합니다.

  • 네트워크 레이블의 경우 동일한 네트워크 세그먼트에 있는 호스트의 네트워크 번호는 동일하며 다른 네트워크 세그먼트에 있는 호스트의 네트워크 식별자는 다릅니다.
  • 호스트 번호의 경우, 동일한 네트워크 세그먼트에 있는 호스트의 호스트 번호는 다르며, 다른 네트워크 세그먼트에 있는 호스트의 호스트 번호는 동일할 수 있습니다.

여기에 이미지 설명을 삽입하세요.

  • 서로 다른 서브넷은 실제로 동일한 네트워크 번호를 가진 호스트를 하나로 묶습니다.
  • 서브넷에 새로운 호스트가 추가되는 경우, 해당 호스트의 네트워크 번호는 해당 서브넷의 네트워크 번호와 동일해야 하지만, 호스트 번호는 서브넷에 있는 다른 호스트의 네트워크 번호와 동일해서는 안 됩니다.
  • 라우터는 최소 두 개의 서브넷에 걸쳐 있습니다.

IP 네트워크 세그먼트를 나누어야 하는 이유는 무엇입니까? ? (서브넷팅을 하는 이유는 무엇입니까?)

  • 네트워크를 통해 한 호스트에서 다른 호스트로 데이터를 보낼 때 IP 주소를 선형적으로 순회하는 대신 대상 호스트가 있는 네트워크로 먼저 데이터를 보낸 다음 상대방의 대상 네트워크로 데이터를 보낸 다음 데이터를 다음으로 보냅니다. 대상 호스트
  • IP 주소를 선형적으로 순회하지 않는 이유는 극도로 비효율적이기 때문인데, IPv4 기준으로는 약 42억 개의 IP 주소가 있다.
  • 호스트를 찾는 과정은 본질적으로 제거 과정이며, 대상 호스트를 찾는 목적이 처음부터인 경우 검색 과정에서 한 번에 하나의 호스트만 제외할 수 있습니다.
  • 그리고 먼저 대상 네트워크를 찾으려는 경우 검색 프로세스 중에 대상 호스트와 동일한 네트워크 세그먼트에 있지 않은 많은 수의 호스트를 한 번에 제외할 수 있습니다. 이는 검색 효율성 대폭 향상

예를 들어:

  • 예를 들어, 학생 ID 번호는 신중하게 설계되었으며 각 필드는 다른 의미를 나타냅니다.
  • 각 학교에는 여러 개의 단과대학이 있는데, 컴퓨터공학부 번호는 001, 이과대학 번호는 002, 전자정보학부 번호는 003, 화학공학부 번호는 004라고 가정해 보겠습니다. .
  • Zhang San은 컴퓨터과학과 동급생입니다. Zhang San은 자신의 학생 번호만 적힌 지갑을 보았습니다0030115. Zhang San은 학생 번호를 인식하지 못했습니다. Zhang San은 계속해서 찾아온 반 친구들에게 물어보십시오. 학생 번호가 무엇입니까...
  • 학교에 20,000명의 사람이 있는데 운이 좋지 않다고 가정하면 Zhang San은 20,000명 모두에게 물어봐야 하는데 이 효율성은 매우 감동적입니다.
  • 이 순간 장산(Zhang San)의 머릿속에는 어떤 생각이 떠올랐습니다. 거기에 대학 번호가 있지 않습니까? 그는 이를 대학 행정관에게 직접 전달했고, 대학 행정관이 이를 전달했습니다. 학생 번호가 0030115인 대학의 관리자가 학생 번호가 있는 학생에게 이를 제공합니다 0030115. 검색 효율성이 크게 향상되지 않나요

여기에 이미지 설명을 삽입하세요.

  • 장산은 그 학생 번호가 어느 대학 출신인지 모르지만,
  • 그런데 컴퓨터 관리를 보니 전자정보학부에서 나온 것이 아니어서 그냥 전자정보학부 관리자에게 넘겨줬습니다.
  • 이러한 종류의 검색 과정은 실제로는 제거 과정이며, 서로 다른 숫자(네트워크 세그먼트)에 따라 n개의 대학 그룹(네트워크 세그먼트)을 한 번에 제외할 수 있으므로 검색 효율성이 크게 향상됩니다.
  • 대학의 관리자는 라우터에 해당하며, 각 대학은 서브넷에 해당합니다.

따라서 데이터 라우팅 검색의 효율성을 높이기 위해 IP 주소를 IP 네트워크 세그먼트로 분할(서브넷 분할)합니다.

DHCP

호스트 번호와 네트워크 번호를 올바르게 설정하면 상호 연결된 네트워크에 있는 각 호스트의 IP 주소가 서로 다른지 확인할 수 있습니다.

  • 과거에는 IP를 수동으로 관리해야 했고, IP ​​주소를 수동으로 관리하는 것이 매우 번거로웠으며, 서브넷에 새로운 호스트가 추가되면 IP 주소를 할당받아야 했고, 서브넷에 속한 호스트가 네트워크 연결을 끊었을 때 , 해당 IP 주소를 할당해야 하며, 이후에 새로 추가되는 호스트에 할당할 수 있도록 주소가 재활용됩니다.
  • DHCP 프로토콜은 나중에 등장했습니다.
  • DHCP(Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜)는 UDP 프로토콜을 사용하는 LAN 네트워크 프로토콜이며 두 가지 주요 용도가 있습니다. 내부 네트워크 또는 네트워크 서비스 공급자 IP 주소에 대한 자동 할당입니다. 모든 컴퓨터를 중앙에서 관리하는 수단으로 사용자 또는 내부 네트워크 관리자에게 제공
  • DHCP는 UDP 기반의 응용 계층 프로토콜로, 일반적으로 라우터에는 DHCP 기능이 있으므로 라우터도 DHCP 서버로 간주할 수 있습니다.

장치가 Wi-Fi에 성공적으로 연결되면 라우터가 자동으로 장치에 IP를 할당합니다. 그러면 장치는 IP 주소를 갖게 되며 인터넷에 액세스할 수 있습니다(인터넷에 연결되지 않은 장치에는 IP 주소가 없습니다).

서브넷팅은 누가 합니까? ?

  • 인터넷은 설계된 세계이며 IP 주소도 설계되었습니다.
  • 우리나라의 경우 통신 사업자(차이나 모바일, 차이나 텔레콤, 차이나 유니콤)가 서브넷 분할 실행자이자 기본 네트워크 설계자입니다.

네트워크 세그먼트를 나누는 방법은 무엇입니까? ? (서브넷 방법)

과거에는 네트워크 번호와 호스트 번호를 나누는 솔루션이 제안되었는데, 이는 모든 IP 주소를 5개 범주로 나누는 것이었습니다.

아래 그림과 같습니다.
여기에 이미지 설명을 삽입하세요.
따라서 다양한 IP 주소의 값 범위는 다음과 같습니다.

  • A 类:0.0.0.0도착127.255.255.255
  • B 类:128.0.0.0도착191.255.255.255
  • C 类:192.0.0.0도착223.255.255.255
  • D 类:224.0.0.0도착239.255.255.255
  • E 类:240.0.0.0도착247.255.255.255

IP 주소가 속한 네트워크 유형을 확인하려면 IP 주소의 첫 번째 바이트(처음 8비트)를 보면 알 수 있습니다.

CIDR(클래스 없는 도메인 간 라우팅)

그러나 네트워크의 급속한 발전으로 인해 이러한 분할 방식의 한계가 곧 명백해졌습니다.

  • 예를 들어, 클래스 B 주소를 신청하는 경우 이론적으로 하나의 서브넷에 65,000개 이상의 호스트가 허용될 수 있지만, 클래스 A 주소의 경우 서브넷의 호스트 수는 훨씬 더 많습니다.
  • 그러나 실제 네트워크 구축에서는 하나의 서브넷에 그렇게 많은 수가 존재하지 않습니다. 따라서 많은 수의 IP 주소가 낭비됩니다.

이런 상황을 피하기 위해 CIDR(Classless Interdomain Routing)이라는 새로운 분할 방식이 제안되었습니다. CIDR은 IPv4 주소를 보다 효과적으로 활용하기 위한 IP 주소 할당 및 라우팅 전략입니다.< /span>

  • 원래의 5가지 유형의 네트워크를 기준으로 계속해서 서브넷을 분할하는데, 이는 호스트 번호의 여러 비트를 빌려와 네트워크 번호 역할을 해야 함을 의미합니다. 이때 네트워크를 구별하려면 IP 주소 번호에 호스트 번호와 호스트 번호를 입력하여 서브넷 마스크(subnet mask) 개념을 도입했습니다.
  • 각 서브넷에는 자체 서브넷 마스크가 있습니다. 서브넷 마스크는 실제로 32비트 양의 정수이며 일반적으로 "0" 문자열로 끝납니다.
  • 현재 네트워크의 IP 주소와 서브넷 마스크를 사용하여 "按位与" 작업을 수행하여 현재 네트워크의 네트워크 번호를 가져옵니다.
  • 여기서 네트워크 번호와 호스트 번호의 구분은 IP 주소가 클래스 A, 클래스 B 또는 클래스 C인지 여부와 관련이 없습니다.

이때, 네트워크는 보다 세밀하게 작은 서브넷으로 나누어지는데, 지속적인 서브넷 분할을 통해 서브넷의 IP 주소에 해당하는 호스트 번호가 점점 짧아지므로 서브넷에서 사용 가능한 IP 주소의 개수가 늘어나게 됩니다. IP 주소의 양은 점점 더 작아질 것이며, 이는 IP 주소의 대량 낭비를 방지할 것입니다.

서브넷의 예는 다음과 같습니다.

  • IP 주소와 서브넷 마스크를 비트 단위로 AND하여 네트워크의 네트워크 번호를 얻습니다.
  • 모두 0부터 모두 1까지의 호스트 번호가 서브넷의 주소 범위입니다.
    여기에 이미지 설명을 삽입하세요.
    여기에 이미지 설명을 삽입하세요.
    또 다른 예:
    여기에 이미지 설명을 삽입하세요.
    여기에 이미지 설명을 삽입하세요.

서브넷팅은 한 번만 할 수 있는 것이 아니라 분할된 서브넷을 기반으로 계속해서 할 수도 있다는 점에 유의해야 한다.

  • 일반적으로 서브넷에서 해당 서브넷의 IP를 관리하는 장치는 일반적으로 라우터입니다.
  • 대상 네트워크, 서브넷 마스크 및 서브넷의 호스트는 모두 라우터에 의해 관리됩니다.
  • 대상 네트워크와 서브넷 마스크가 라우터에 구성되어 있습니다.

4. 특수 IP 주소

모든 IP 주소를 호스트 IP 주소로 사용할 수 있는 것은 아니며 일부 IP 주소 자체에는 특별한 목적이 있습니다.

  • IP 주소의 모든 호스트 주소를 0으로 설정합니다. 이는 이 LAN을 나타내는 네트워크 번호가 됩니다. 예를 들어, 위 그림의 140.252.40.0 또는 140.252.40.64는 이 주소는 네트워크 번호를 나타내며 호스트에 할당될 수 없습니다.
  • IP 주소의 호스트 주소를 모두 1로 설정하면 브로드캐스트 주소가 되어 동일한 링크로 연결된 모든 호스트에게 데이터 패킷을 보내는 데 사용됩니다. 예를 들어 위 그림의 140.252.40.255 또는 140.252.40.79는 이 주소는 브로드캐스트 주소를 나타내며 호스트에 할당할 수 없습니다.
  • 127.*의 IP 주소는 기본 루프백(loop back) 테스트에 사용되며 일반적으로 127.0.0.1

방송 주소

  • 브로드캐스트 주소는 동일한 링크에 연결된 호스트 간에 패킷을 보내는 데 사용됩니다(동일한 서브넷에 있는 모든 호스트에 브로드캐스트).
  • 브로드캐스트 주소는 네트워크(일반적으로 동일한 서브넷)에 있는 모든 워크스테이션에 동시에 전송하도록 설계된 주소입니다.
  • 호스트 번호가 모두 1이면 네트워크의 브로드캐스트 주소를 나타냅니다.
  • 예를 들어, 수업 중에 모니터에서 “교실 여러분, 일어서세요!”라고 외치면, 그 소리를 듣고 교실에 있던 학생들이 모두 일어서는 이 명령은 방송이라는 의미를 갖습니다.

로컬 루프백

  • 로컬 루프백은 일반적으로 내부 통신 및 네트워크 장치 관리에 사용되는 특수 네트워크 인터페이스입니다.
  • 로컬 루프백 인터페이스는 루프백 주소라고 하는 특별한 IP 주소 범주에 속하며 일반적으로 127.0.0.0/8 네트워크 세그먼트로 지정되며 가장 일반적인 것은 127.0.0.1입니다.
  • 로컬 루프백 원격 관리 및 문제 해결뿐만 아니라 네트워크 서비스 및 내부 통신 테스트에도 사용할 수 있습니다.

5. IP 주소 개수 제한

IP 주소(IPv4)는 4바이트 32비트 양의 정수이므로 총 2^32 IP 주소가 있으며 이는 거의 43억 개의 IP 주소입니다. 그러나 TCP/IP 프로토콜은 각 호스트에 IP 주소가 필요하다고 규정합니다.

  • 현재 전 세계 인구는 70억 명이 넘고, 그 중 절반이 스마트폰을 갖고 있지 않더라도 IP 주소가 필요한 스마트폰은 여전히 ​​30억 대 이상입니다.
  • 기술이 발전함에 따라 우리가 사용하는 컴퓨터, 스마트 시계, 스마트 냉장고, 스마트 세탁기 및 기타 장치도 인터넷에 액세스하려면 IP 주소가 필요합니다.
  • 또한 IP 주소는 호스트 수에 따라 구성되지 않으므로 호스트에는 여러 개의 IP 주소가 필요할 수 있습니다. 또한 네트워크에는 IP 주소가 필요한 라우팅 장치가 많으며 일부 특수 IP 주소를 사용할 수 없습니다. .

따라서 43억 개의 IP 주소는 실제로 오랫동안 부족하기 때문에 분할된 5가지 유형의 네트워크를 계속해서 서브넷화하여 IP 주소의 낭비를 줄이기 위한 CIDR 솔루션이 제안되었습니다. 그 이유는 IP 주소가 본질적으로 충분하지 않기 때문에 더 이상 낭비할 수 없기 때문입니다.

CIDR은 IP 주소의 활용도를 높이고 낭비를 줄여 IP 주소 부족 문제를 어느 정도 완화하지만, IP 주소의 절대 상한선은 증가하지 않았으며 여전히 43억 개 정도입니다.

IP 주소를 확인하는 세 가지 방법

  • 동적 IP 주소 할당: 네트워크에 연결된 기기에만 IP 주소를 할당합니다. 따라서 동일한 MAC 주소를 가진 기기는 인터넷에 연결할 때마다 다른 IP 주소를 받게 됩니다. . IP 주소가 특정 기기에 강제로 바인딩되지 않도록 동일해야 합니다
  • NAT 기술: 두 개의 동일한 IP 주소가 서로 다른 LAN에 동시에 존재할 수 있도록 허용합니다. NAT 기술은 IP 주소 부족 문제를 해결할 뿐만 아니라 효과적으로 네트워크가 네트워크에 진입하는 것을 방지 외부 공격, 네트워크 내부의 컴퓨터를 숨기고 보호
  • IPv6: IPv6은 16바이트와 128비트를 사용하여 IP 주소를 표시하므로 IP 주소 부족 문제를 크게 완화할 수 있습니다. 하지만 IPv6는 IPv4의 단순한 업그레이드 버전이 아닙니다. 서로 관련이 없는 두 프로토콜이며 서로 호환되지 않습니다. 따라서 IPv6는 아직 대중적이지 않습니다.

우리나라는 현재 IPv6를 비교적 잘 활용하고 있지만, IPv4와의 비호환으로 인해 추진이 늦어지고 있습니다. IPv4가 OS에 내장되어 있고 기본 기능이 IPv6와 호환되지 않기 때문에 IPv6를 승격시키기가 어렵습니다.

NAT 기술의 출현으로 인해 IP 주소 부족 문제는 해결되었으나, IP 주소의 절대 상한선은 증가하지 않았습니다. (NAT 기술은 아직 이 문제를 완전히 해결하지 못했습니다.)

NAT 기술의 출현으로 인해 IPv6 개발이 저해되었지만 우리나라의 IPv6 활성화에도 도움이 되었습니다. NAT 기술을 통해 IPv6 주소를 IPv4 주소로 변환할 수 있습니다. 현재 우리나라 대부분의 인터넷 회사의 인트라넷 환경은 국가는 IPv6입니다

미국도 IPv6에 참여하고 있지만 동기가 없습니다. (할 일도 없는데 왜 IPv4를 뒤집어야 합니까?)

IP 주소 부족 문제를 완전히 해결하려면 여전히 IPv6에 의존해야 합니다.

6. 개인 IP 주소 및 공용 IP 주소

조직이 내부적으로 LAN을 구축하면 IP 주소는 LAN 내부 통신에만 사용되며 인터넷에 직접 연결되지는 않습니다.이론적으로는 어떤 IP 주소라도 사용할 수 있지만 RFC 1918에서는 LAN 구축에 사용되는 개인 IP 주소를 규정하고 있습니다. 랜:

  • 10., 처음 8자리는 네트워크 번호이며 총 주소는 16,777,216개입니다.
  • 172.16. ~172.31., 처음 12자리는 네트워크 번호, 총 1,048,576개 주소
  • 192.168., 처음 16자리는 네트워크 번호이며 총 65,536개 주소입니다.
  • 이 범위에 포함되는 것을 사설 IP(사설 IP, 인트라넷 IP)라고 하고, 나머지를 공인 IP(또는 글로벌 IP)라고 합니다.

호스트의 IP를 확인하세요

ifconfig: 이 명령은 네트워크 인터페이스 정보를 표시하고 구성하는 데 사용됩니다.

예를 들어 Linux 서버를 구입한 경우 다음 명령을 입력합니다.

  • eth0표시: 일반적으로 시스템의 첫 번째 이더넷 인터페이스를 나타냅니다. LAN이나 인터넷에 연결하는 데 사용되는 물리적 네트워크 인터페이스입니다. eth0은 시스템 설정 및 네트워크 하드웨어에 따라 유선 또는 무선 이더넷 인터페이스가 될 수 있습니다.
  • lo은 루프백 주소라고도 알려진 로컬 루프백 인터페이스(loopback interface)입니다. 시스템 내부 통신에 사용되는 가상 네트워크 인터페이스입니다. lo 인터페이스의 IP 주소는 일반적으로 127.0.0.1이고 서브넷 마스크는 255.0.0.0입니다. 물리적 네트워크 인터페이스를 통하지 않고 시스템 내 프로세스와 서비스 간의 통신을 허용합니다.
  • 사진에서eth0, 해당 주소inet 인터페이스192.168.0.213는 개인 IP입니다

여기에 이미지 설명을 삽입하세요.
Linux 서버에 접속하는데 사용되는 IP를 공인 IP라고 합니다
여기에 이미지 설명을 삽입하세요.
참고: Windows에서 사용 명령어를 확인하세요ipconfig

왜 우리는 운영자에게 비용을 지불해야 합니까? ?

우리가 즐기는 것은 Douyin 검색, Taobao에서 물건 구매 등 인터넷 회사가 제공하는 서비스입니다... 하지만 우리는 인터넷 회사에 돈(인터넷 접속 비용)을 지불하지 않고 운영자에게 돈을 넘겨줍니다. 우리가 돈을 내는 걸까요? 인터넷 업체 대신 사업자에게 줍니다. 우리는 당연히 인터넷 업체가 제공하는 다양한 서비스를 즐기고 있죠? ?

  • 사업자는 네트워크 통신 인프라를 구축하는 주체로, 우리가 인터넷에 접속할 때 각종 데이터(요청 및 응답 데이터)가 사업자를 거쳐야 합니다.
  • 즉, 서버에 접속하기 위한 우리의 데이터 요청은 해당 서버로 직접 전송되는 것이 아니라 데이터가 최종적으로 해당 서버에 도달하기 전에 다양한 기지국과 사업자가 구축한 다양한 라우터 및 클러스터를 통해 전달되어야 합니다.
  • 해당 서버가 우리에게 응답하는 데이터도 운영자를 거쳐 최종 응답이 클라이언트에 도달하기 전에 운영자에 의해 전달되어야 합니다.
  • 사업자에게 네트워크 요금을 지불하는 것은 실제로 네트워크 접속 라이센스(인터넷 접속 가능)를 구입하는 것과 동일합니다. 왜냐하면 사업자가 제공하는 통신 인프라를 사용해야 하고, 이를 사용하지 않으면 인터넷에 접속할 수 없기 때문입니다. .

예를 들어, 휴대폰 번호가 연체된 상태에서 계속 인터넷에 접속하고 싶은 경우, 교환원을 경유하면 교환원은 귀하의 계정을 인증한 후 연체되었음을 확인하고 귀하의 요청을 직접 폐기하고 에게 전달하지 않습니다. 해당 당사자 서버
여기에 이미지 설명을 삽입하세요.

  • 반대로, 인터넷 회사가 인터넷에 접속하려면 운영자에게 수수료를 지불해야 하며, 그렇지 않으면 인터넷에 접속할 수 없습니다. 즉, 서버의 데이터가 고객에게 전송될 수 없습니다.
  • 운영자는 양 당사자에게 비용을 청구하는 중개자 역할을 하는 것과 같습니다.
  • 소위 네트워크 분할과 서브넷 분할은 실제로 사업자가 수행합니다.
  • 사업자가 제공하는 이러한 인프라가 없다면 소위 인터넷 기업은 탄생할 수 없습니다. 인터넷 기업은 네트워크 통신을 기반으로 탄생하기 때문입니다.
  • 마찬가지로 우리의 데이터그램은 반드시 운영자를 거쳐야 하기 때문에 운영자는 우리의 데이터 패킷을 탐지할 수 있습니다. 요청한 URL이 불법 URL이거나 해당 데이터 패킷이 Google, Twitter, 등의 경우 운영자는 귀하의 요청을 직접 포크하고 데이터 패킷을 전달하지 않습니다.

즉, 사용자가 인터넷에 접속하기 위해 사용하는 데이터는 먼저 사업자의 해당 네트워크 장비를 거쳐야 해당 인터넷 회사의 서버로 전송될 수 있습니다. 운영자에게 비용을 지불해야 합니다.

라우터 기능

  1. 데이터 전달
  2. DHCP 및 LAN(서브넷) 설정
  3. NAT

라우터는 홈 라우터와 기업 라우터로 구분됩니다.

  • LAN 설정에 사용되는 IP는 반드시 사설 IP이어야 하며, 공인 IP는 사용할 수 없습니다.
  • 가정용 버전 라우터: 저전력, 일상적인 사용에 적합. LAN 구축에 사용되는 개인 IP는 일반적으로 192.168.
  • 엔터프라이즈 수준 라우터: LAN을 구축하는 데 사용되는 개인 IP는 일반적으로 10. 또는 172.16. ~ 입니다.172.31.

해당 서버로 데이터를 보내는 방법

라우터는 두 개 이상의 서브넷을 연결하는 하드웨어 장치입니다. 라우터에는 두 개의 네트워크 인터페이스, 즉LAN口WAN口가 있습니다.< / 아>

  • LAN口(Local Area Network): 로컬 네트워크에 연결된 포트를 의미하며, 주로 홈 네트워크의 스위치나 허브, PC에 연결됩니다.
  • WAN口(Wide Area Network): 테이블은 일반적으로 인터넷을 지칭하는 공용 네트워크에 연결하는 인터페이스로 이해될 수 있습니다.

LAN 포트의 IP 주소를 LAN 포트 IP(내부)라고 하며 서브넷 IP라고도 하며, WAN 포트의 IP 주소를 WAN 포트 IP라고 하며 외부 IP(외부)라고도 합니다.

우리가 사용하는 컴퓨터, 홈 라우터, 통신사 라우터, WAN 및 액세스하려는 서버 간의 관계는 대략 다음과 같습니다.
여기에 이미지 설명을 삽입하세요.

  • 다른 라우터는 동일한 서브넷 IP를 갖습니다(일반적으로 192.168.1.1). 서브넷 내의 호스트 IP 주소는 반복될 수 없지만, 서브넷 간의 IP 주소는 반복될 수 없습니다. 반복할 수 있습니다.
  • 모든 홈 라우터는 실제로 운영자 라우터의 서브넷에 있는 노드입니다. 이러한 운영자 라우터는 여러 수준을 가질 수 있습니다. 가장 바깥쪽 운영자 라우터의 WAN 포트 IP는 공용 네트워크 IP입니다.
  • 우리가 직접 구현한 서버 프로그램을 공용 네트워크에서 액세스할 수 있도록 하려면 외부 네트워크 IP가 있는 서버에 프로그램을 배포해야 하며 이러한 서버는 Alibaba Cloud/Tencent Cloud에서 구입할 수 있습니다.

메모:사설 IP는 공용 네트워크에 나타날 수 없습니다.

공용 네트워크에 개인 IP가 표시되지 않는 이유는 무엇입니까?

  • 사설망 IP는 반복될 수 있습니다. 즉, 서로 다른 LAN에서 동일한 IP 주소를 사용할 수 있어 IP의 단점을 완화할 수 있습니다.
  • 즉, 사설 IP 주소는 전역적으로 고유하지 않으며, 공용 네트워크에서 직접 사용하게 되면 라우팅 혼란을 야기하게 된다. 따라서 사설 IP 주소가 외부 네트워크에 접속하려고 하면 라우터를 거쳐 주소 변환을 수행하여 사설 IP(근거리 통신망 고유)를 공용 IP(세계 고유)로 변환합니다.

개인 IP는 공용 네트워크에 나타날 수 없으므로:

  • 따라서 서브넷의 호스트가 외부 네트워크와 통신할 때 라우터는 데이터 패킷의 IP 헤더에 있는 源IP地址을 라우터의 <로 계속 교체합니다. a i=2 > 이렇게 단계별로 교체하면 최종 데이터 패킷의 소스 IP 주소가 공용 네트워크 IP가 되며, 이 기술은 (, 네트워크 주소 변환, 개인 주소를 법적 IP 주소로 변환)WAN口IPNATNetwork Address Translation

데이터 전달의 일반적인 프로세스는 다음과 같습니다.

  • 패킷이 다음과 같이 될 것이라고 가정합니다.122.77.241.3/24
  • 데이터 패킷이 자체 호스트에서 홈 라우터로 전송된 후 라우터는 대상 IP가 더 이상 자체 서브넷에 없음을 발견합니다.
  • 은 이때 源IP라우터에 의해WAN口IP교체된 후 자체에 직접 연결된 다른 서브넷으로 전달됩니다
  • 전달된 데이터 패킷이 사업자의 라우터에 도달하고 다단계 전달(사업자의 여러 서브넷을 통과)을 거쳐 최종적으로 데이터 패킷의 대상 IP가 자신의 서브넷 내에 있지 않다는 것을 발견했다고 가정합니다.
  • 이번에는 로 바꾼 다음 데이터 패킷을 공용 네트워크로 직접 전달源IP을 라우터WAN口IP
  • 그런 다음 공용 네트워크에서 해당 대상 IP로 전달됩니다.

그림과 같이:
여기에 이미지 설명을 삽입하세요.
데이터 패킷이 어떻게 다시 돌아오는지는 나중에 이야기하겠습니다

7. 라우팅

데이터 패킷 라우팅 과정 (하나씩 방향을 묻는 과정과 유사)

  • 라우팅 프로세스 중에 데이터 패킷은 실제로 "방향을 묻는" 프로세스와 유사하게 홉 단위로 이동합니다.
  • 소위 "원 홉"은 데이터 링크 계층의 간격입니다. 특히 이더넷에서는 源MAC地址에서 目的MAC地址 간격

여기에 이미지 설명을 삽입하세요.
IP 데이터 패킷의 전송 과정은 길을 묻는 것과 동일하며, IP 데이터 패킷의 전송 과정에서 많은 라우터를 만나게 됩니다.

이러한 라우터는 데이터 패킷을 라우팅하고 전달하는 데 도움이 되며, 데이터 패킷이 라우터를 만날 때마다 해당 라우터는 데이터의 대상 IP 주소를 확인하고 데이터의 다음 홉이 어디에 있어야 하는지 알려줍니다.

  • IP 데이터 패킷이 라우터에 도달하면 라우터는 먼저 대상 IP를 확인합니다.
  • 라우터는 데이터 패킷을 대상 호스트로 직접 보낼 수 있는지 아니면 다음 라우터로 보내야 하는지 결정합니다(라우팅 테이블 확인).
  • 대상 IP 주소에 도달할 때까지 순서대로 반복합니다.

현재 데이터 패킷을 어디로 보내야 하는지 어떻게 결정합니까?

  • 이는 내부적으로 라우팅 테이블을 유지 관리하는 각 노드(라우터)에 의존합니다.
  • 라우팅 테이블을 확인하면 데이터 테이블을 누구에게 보내야 하는지 알 수 있습니다.

目的IP IP 패킷에서 라우터 라우팅 테이블의 검색 결과는 다음 세 가지 유형을 가질 수 있습니다.

  • 라우팅 테이블을 쿼리한 후 라우터는 데이터의 다음 홉이 어느 서브넷으로 이동해야 하는지 알아냅니다.
  • 라우터는 라우팅 테이블을 쿼리한 후 일치하는 서브넷을 찾지 못하며 이때 라우터는 데이터를 기본 경로(기본 게이트웨이)로 전달합니다.
  • 라우터는 라우팅 테이블을 조회한 후 데이터의 대상 네트워크가 현재 네트워크임을 알게 되며, 이때 라우터는 데이터를 현재 네트워크의 해당 호스트로 전송합니다.

라우팅 테이블 보기

라우팅 테이블은route 명령을 사용하여 볼 수 있으며, 현재 시스템의 라우팅 테이블을 표시할 수 있습니다.
여기에 이미지 설명을 삽입하세요.
입력 부분 설명:< /span>

  • Destination: 대상 네트워크 또는 호스트의 IP 주소
  • Gateway: 다음 홉 게이트웨이, 즉 대상 네트워크나 호스트로 패킷을 보내는 다음 홉 라우터의 IP 주소입니다.
  • Genmask: 대상 네트워크 또는 호스트의 넷마스크
  • Flags: 라우팅 테이블 항목의 상태와 속성을 나타내는 데 사용되는 플래그 비트입니다. 공통 플래그 비트에는 U(라우팅 테이블 항목 사용 가능), G(라우팅 테이블 항목이 게이트웨이에 의해 지정되어 이 항목의 다음 홉 주소가 라우터의 주소임을 나타냄), H(라우팅 테이블 항목이 있음을 나타냄)가 포함됩니다. 호스트 라우팅)
  • Iface:인터페이스, 패킷이 전송될 네트워크 인터페이스를 나타냅니다.

이러한 필드의 의미는 다음과 같습니다.

  • default: 이것이 기본 경로(게이트웨이)임을 나타냅니다. 즉, 시스템이 일치하는 대상 네트워크나 호스트를 찾을 수 없는 경우 이 라우팅 테이블 항목이 사용됩니다.
  • 0.0.0.0: 대상 네트워크 또는 호스트가 임의의 네트워크 또는 호스트임을 나타냅니다.
  • UG: 이것이 기본 라우팅 테이블 항목이고 게이트웨이 필드가 유효함을 나타냅니다. G 플래그가 없는 항목은 대상 네트워크 주소가 로컬 인터페이스에 직접 연결된 네트워크이며 라우터에 의해 전달될 필요가 없음을 나타냅니다.

라우팅 테이블을 확인하는 과정

  • IP 데이터 패킷이 라우터에 도달하면 라우터는 데이터 패킷의 대상 IP 주소를 확인하고 라우팅 테이블의 서브넷 마스크와 "비트 단위 AND"를 수행합니다.
    Genmask (라우팅 테이블을 통과하여) 그 결과를 서브넷 마스크에 해당하는 대상 네트워크 주소Destination와 비교합니다. 일치하면 데이터 패킷의 다음 홉이 다음 홉으로 점프해야 함을 의미합니다. 이 서브넷. , 데이터 패킷은 해당 전송 인터페이스를 통해 전송됩니다Iface

  • 패킷의 대상 IP 주소와 서브넷 마스크를 "비트 AND"한 후에도 일치하는 대상 네트워크 주소가 없으면 라우터는 패킷을 기본 경로로 보냅니다. 라우팅 테이블의 대상 네트워크 주소에 default 기본 경로의 해당 FlagsUG임을 알 수 있는데, 이는 실제로 데이터를 다른 라우터로 전송하고 데이터가 다른 라우터에서 계속되도록 허용합니다.

  • 데이터 패킷은 라우터를 통해 지속적으로 라우팅된 후 결국 대상 호스트가 있는 대상 네트워크에 도달하게 되는데, 이때 데이터 패킷은 더 이상 대상 IP 주소의 네트워크 번호를 기반으로 라우팅되지 않고 기반으로 라우팅됩니다. 대상 IP 주소의 호스트 번호 라우팅을 수행하고 마지막으로 데이터 패킷에 해당하는 호스트 번호에 따라 데이터를 대상 호스트로 보낼 수 있습니다.

라우팅 테이블은 네트워크 관리자가 수동으로 유지 관리하거나(정적 라우팅) 일부 알고리즘을 통해 자동으로 생성될 수 있습니다(동적 라우팅).

라우팅 테이블 생성 알고리즘: 거리 벡터 알고리즘, LS 알고리즘, Dijkstra 알고리즘 등

알아채다:네트워크 계층의 IP 프로토콜은 데이터 라우팅에 대한 결정을 제공합니다. 데이터는 데이터 링크 계층(실제로 작업을 수행하는 계층)에 의해 전달됩니다.

마지막으로 위에서 언급하지 않은 16비트 식별(id), 3비트 플래그 필드, 13비트 슬라이스 오프셋을 추가합니다.

8. 조각화 및 조립

다음은 16비트 식별(id), 3비트 플래그 필드 및 13비트 슬라이스 오프셋에 대해 설명합니다.
여기에 이미지 설명을 삽입하세요.
여기에는 데이터 링크 계층 문제가 포함됩니다

  • IP는 네트워크를 통해 한 호스트에서 다른 호스트로 데이터 패킷을 보낼 수 있습니다. 데이터 패킷이 네트워크를 통해 전송되면 최종적으로 대상 호스트에 도달하기 전에 라우터에 의해 라우팅되고 전달되어야 합니다.
  • 따라서 IP가 네트워크를 통해 데이터 패킷을 전송한다는 전제는한 노드에서 자신에 연결된 다음 노드로 데이터 패킷을 먼저 전송해야 한다는 것입니다., 이 문제는 실제로 IP 하의 데이터 링크 계층에 의해 해결되는데, 여기서 데이터 링크 계층의 대표적인 프로토콜은 MAC 프레임 프로토콜입니다
  • 즉, 데이터 링크 계층은 인접한 노드 간 통신을 담당하고, 데이터 패킷을 프레임으로 캡슐화하여 물리적 매체를 통해 전송하는 역할을 담당합니다.
  • 두 노드가 직접 연결된다는 것은 두 노드가 동일한 LAN에 있다는 것을 의미하므로 인접한 두 노드의 데이터 전송을 논의할 때 실제로 논의되는 것은 LAN 통신 문제입니다.

최대 전송 단위 MTU

  • MAC 프레임은 데이터 링크 계층 프로토콜로, IP에서 전송되는 데이터를 데이터 프레임으로 캡슐화하여 네트워크로 전송합니다.(데이터 프레임은 네트워크 케이블을 통해 실행됩니다.) 그러나 MAC 프레임 프로토콜은 크기에 제한이 있습니다. , 데이터 프레임 전송 시 이 값을 초과할 수 없으며, 이 값을 최대 전송 단위인 MTU라고 합니다.
  • 최대 전송 단위(Maximum Transmission Unit,MTU)는 네트워크 통신에서 데이터 링크 계층이 전송할 수 있는 최대 데이터 프레임의 크기를 의미합니다. MTU의 크기는 일반적으로 네트워크 장치나 네트워크 프로토콜에 의해 지정되며 한 번에 전송할 수 있는 데이터 양을 제한합니다.
  • 기본 MTU 크기는 일반적으로 1500바이트입니다.

Linux에서 ifconfig 명령을 사용
여기에 이미지 설명을 삽입하세요.

  • MAC 프레임 프로토콜은 1500바이트보다 큰 데이터를 보낼 수 없습니다.
  • 따라서 IP 계층에서 전달되는 데이터 패킷의 길이는 1500바이트를 초과할 수 없으며,IP报头+有效载荷 <= 1500字节
  • 1500바이트보다 크면 MAC 프레임 프로토콜이 데이터를 보낼 수 없습니다.
  • IP 계층에서 전송할 데이터가 1500바이트를 초과하는 경우 먼저 IP 계층에서 데이터를 조각화한 후 하위 계층 MAC 프레임으로 전달하여 전송해야 합니다.
  • IP 프로토콜은 전송되는 메시지의 크기를 제어할 수 없기 때문에 전송되는 메시지의 크기는 전송 계층 프로토콜(TCP 또는 UDP)에 의해 제어됩니다.

단편화가 있기 때문에 조립도 있어야 합니다. 단편화와 조립은 IP 계층에서 완료됩니다. 단편화와 조립은 순전히 IP 프로토콜의 작업이며 상위 전송 계층 및 하위 데이터 링크 계층과는 아무런 관련이 없습니다.

알아채다:IP 단편화 및 조립은 주류 상황이 아니며, IP 단편화 및 조립은 특수 상황입니다., 주류 상황은 다음에서 논의됩니다. 다음 기사 기사: 데이터 링크 레이어에 대해 다시 이야기합시다

어떻게 자르고 조립하나요? ?

조각화 및 조립은 다음 세 가지 필드를 사용하여 완료할 수 있습니다.

  • 16비트 식별자(id): 호스트가 보낸 메시지를 고유하게 식별합니다. 데이터가 IP 계층에서 조각화된 경우 각각 샤드에 해당하는 ID는 모두 동일합니다
  • 3자리 플래그 필드: 첫 번째 비트는 예약되어 있습니다. 예약되어 있다는 것은 현재는 사용되지 않지만 나중에 사용될 수 있다는 의미입니다. 두 번째 비트는 조각화가 금지됨을 나타내며, 패킷 길이가 MTU를 초과하면 IP 프로토콜이 패킷을 삭제할 것임을 나타냅니다. 세 번째 비트는 "더 많은 조각"을 나타냅니다. 메시지가 조각화되지 않은 경우 이 필드는 0으로 설정됩니다. 메시지가 조각화된 경우 마지막 조각화된 메시지를 제외하고 나머지 조각은 0으로 설정됩니다. 패킷은 모두 0으로 설정됩니다. 1(마지막 조각난 패킷의 이 필드는 0입니다. 종료 플래그와 유사하며 '\0'으로 끝나는 C 언어 문자열과 유사함)
  • 13비트 슬라이스 오프셋(framegament offset): 원본 데이터의 시작 부분을 기준으로 한 슬라이스의 오프셋으로, 현재 슬라이스가 원본 데이터에 있습니다. 오프셋 위치, 실제 오프셋 바이트 수는 이 값으로 구해집니다× 8. 따라서 마지막 메시지를 제외한 다른 메시지의 길이는 8의 정수배여야 합니다. 그렇지 않으면 메시지가 연속되지 않습니다.

알아채다: 조각난 패킷은 IP 헤더로 다시 캡슐화되어야 합니다.

IP 패킷이 조각화되었는지 어떻게 알 수 있나요?

  • 3비트 플래그 필드의 세 번째 플래그 비트는 "더 많은 조각화"를 나타냅니다. 메시지가 조각화되지 않은 경우 이 필드는 0으로 설정됩니다. 메시지가 조각화된 경우 마지막 조각화된 메시지를 제외하고 다음으로 설정된 패킷을 제외합니다. 0이면 다른 조각난 패킷은 1로 설정됩니다.

동일한 메시지의 조각을 어떻게 식별할 수 있습니까?

  • 16비트 식별을 통해 조각난 패킷의 16비트 ID는 동일합니다.

어떤 조각화된 패킷이 첫 번째이고 마지막인지 확인하는 방법은 무엇입니까?

  • 마지막 조각화된 메시지는 세 번째 플래그 비트, 더 많은 조각 및 조각 오프셋을 통해 알 수 있습니다. 즉, 변경은多分片标志位为0 && 片偏移>0 마지막 조각난 메시지를 나타냅니다 a>
  • 첫 번째 조각화된 메시지는多分片标志位为1 && 片偏移 == 0에 의해 판단됩니다. 만족하면 첫 번째 조각난 메시지입니다

조각난 패킷이 수집되었는지 어떻게 알 수 있나요? 어떤 조각난 메시지가 먼저 나오고 어떤 조각 메시지가 마지막에 나오는지 어떻게 조립하나요?

  • 조각난 메시지가 완전히 수신되었는지 여부는 13비트 조각 오프셋(현재 시작 위치 + 자신의 길이 == 다음 조각난 메시지에 채워지는 오프셋 크기)으로 판단하며, 조각난 메시지가 불완전하면 바로 폐기하고 피어에게 허용합니다. TCP는 전체 메시지를 다시 보냅니다.
  • 어떻게 조합할지 역시 13비트의 슬라이스 오프셋에 따라 결정되는데, 조각난 메시지의 슬라이스 오프셋을 오름차순으로 정렬하면 된다.

조립된 메시지가 올바른지 확인하는 방법은 무엇입니까?

  • 16비트 헤더 검사 및 판정 통과
  • 상위 레이어 TCP/UDP로 전달되면 TCP/UDP도 TCP/UDP 자체의 16비트 헤더 검사 및 판단에 의해 판단됩니다.
  • 확인에 실패하면 패킷이 바로 삭제됩니다.

데이터 조각화 및 조립은 IP 계층에 의해 완료됩니다.

  • 데이터의 조각화 및 조립은 IP 계층에서 완료되며 상위 전송 계층과 하위 링크 계층은 신경 쓰지 않습니다.

샤딩이 좋은가요?

대답은 확실히 좋지 않다는 것입니다. 전송 계층은 IP 계층의 조각화 문제를 신경 쓰지 않지만 조각화는 전송 계층에도 영향을 미칩니다.

  • 네트워크 전송 중에 데이터 조각이 조각화되면 수신 측에서 조각난 메시지를 모두 수신하고 성공적으로 조립한 경우에만 상대방이 해당 데이터를 안정적으로 수신한 것으로 간주합니다.
  • 그러나 여러 조각난 메시지 중 하나가 손실되면 수신측에서는 메시지를 성공적으로 조립할 수 없으며, 이때 수신측에서는 수신된 조각난 메시지를 모두 폐기합니다. 전송 계층 TCP는 메시지(전체)를 다시 보냅니다.
  • 조각화로 인해 패킷 손실 가능성이 높아집니다.
  • 패킷 손실이 없을 확률은99.99%이라고 가정합니다. 메시지는 IP 계층에서 조각화되어 3개의 조각난 메시지로 나누어집니다. 이때 패킷 손실 확률은 다음과 같습니다. 증가,99.99%*99.99%*99.99% < 99.99%

샤딩을 줄이는 방법은 무엇입니까?

실제 데이터 조각화의 근본적인 이유는 전송 계층이 한 번에 너무 많은 데이터를 전달하여 IP가 MAC 프레임으로 직접 데이터를 전달할 수 없기 때문입니다. 시간이 너무 크지 않으면 당연히 IP 계층에서 데이터를 조각화할 필요가 없습니다.

  • 따라서 TCP는 전송 제어 프로토콜로서 한번에 하향으로 전달되는 데이터가 특정 임계값을 초과할 수 없도록 제어해야 하며, 이 임계값을 MSS(Maximum SegmentSize, 최대 세그먼트 길이)라고 하며, 통신 당사자는 MSS를 설정할 때 협상합니다. TCP 연결.
  • MAC 프레임의 최대 페이로드는 MTU이고, TCP의 최대 페이로드는 MSS입니다.
  • 일반적으로 MSS의 값은 MTU에서 IP 및 TCP 프로토콜 헤더의 길이를 뺀 값과 같습니다. 이는 IP 및 TCP 프로토콜 헤더의 길이가 일반적으로 20바이트이기 때문입니다. MAC 프레임의 MTU는 일반적으로 1500바이트MSS = MTU - 20 - 20이므로 MSS 값은 일반적으로 1460바이트입니다
  • 따라서 데이터 조각화를 방지하기 위해 MSS 크기 내에서 전송되는 데이터를 TCP에서 제어하는 ​​것이 좋습니다.
  • 그러나 서로 다른 네트워크 링크의 MTU는 다를 수 있으며, 데이터가 전송 중에 더 작은 MTU를 가진 네트워크를 통과하는 경우 여전히 조각화되어야 할 수 있습니다.

정리하면, 데이터 조각화의 실제 원인은 전송 계층이 한 번에 너무 많은 데이터를 전달하기 때문이며, 데이터 조각화를 방지하려면 TCP에서 전송되는 데이터의 크기를 MSS 내에서 제어해야 합니다.

샤딩 과정

IP 계층이 3000바이트의 데이터(IP 헤더 + 페이로드)를 전송하려고 한다고 가정하면 데이터가 MAC 프레임에 지정된 MTU(1500)를 초과하므로 IP는 데이터를 먼저 조각화한 다음 하나씩 조각화해야 합니다. 조각은 전송을 위해 MAC 프레임으로 전달됩니다.

IP 계층에 의해 추가된 IP 헤더의 길이가 20바이트이고 데이터가 다음과 같이 조각화되어 세 개의 조각화된 메시지를 형성한다고 가정합니다.

조각난 메시지 총 메시지 바이트 수 IP 헤더 바이트 유효 탑재량 16비트 식별자 더 많은 샤드 플래그 13비트 슬라이스 오프셋
1 1500 20 1480 111이라고 가정하자 1 0
2 1500 20 1480 111 1 185
60 20 40 111 1 370

알아채다: 13비트 슬라이스 오프셋에 기록된 바이트 수는 원본 데이터의 시작 부분에 있는 현재 슬라이스의 오프셋 바이트 값입니다.÷ 8< a i =2> 대부분의 어셈블리 문제는 위에서 논의되었으므로 자세히 설명하지 않겠습니다. 다음 기사에서는 데이터 링크 계층의 MAC 프레임 프로토콜에 대해 설명하겠습니다.
여기에 이미지 설명을 삽입하세요.

「 作者 」 枫叶先生
「 更新 」 2023.10.14
「 声明 」 余之才疏学浅,故所撰文疏漏难免,
          或有谬误或不准确之处,敬请读者批评指正。

추천

출처blog.csdn.net/m0_64280701/article/details/132096716