IPv4 프로토콜
다른 네트워크의 특정 대상을 찾는 IPv4 프로토콜
데이터가 정확하게 전달될 것을 보장하지 않는다. (4 계층에서 보장해 줌)
IP 헤더는 IP 패킷의 앞부분에 위치하며 IP 주소를 비롯한 각종 제어 정보를 담고 있다. IPv4 헤더는 고정 부분 20 바이트와 가변 부분 0~40바이트로 구성되어 있다. 옵션을 지정하지 않았을 때는 최소 크기는 20바이트이다.
버전 : 버전(Version)은 IP의 버전을 나타내는 영역이다. IPv4이므로 4이다.
헤더 길이 : 헤더 길이(Header Length)는 4바이트를 기본 단위로 헤더의 길이를 규정하는 영역이다. IPv4에서는 헤더 길이가 가변이므로 이를 규정하는 영역이 필요하다. 기본값은 5로서, 최소 크기는 20 바이트이고, 옵션 영역을 사용하면 60바이트까지 확장할 수 있다.
DS : DS(Differentiated Service, 차등 서비스)는 IP 패킷 전송 시 우선순위와 혼잡 알림을 위한 8비트의 영역이다. 앞의 6비트는 요구되는 서비스 질에 따른 차등 서비스를 나타내는 DS 필드로 사용되고, 뒤의 2비트는 혼잡 정도를 알리는 ECN(Explicit Congestion Notification) 필드로 사용된다. DS 필드에는 서비스 품질 유형을 나타내는 DSCP(Differentiated Service Code Point) 값이 들어간다.
전체 길이 : 전체 길이(Total Length)는 헤더와 데이터를 합한 IP 패킷 전체 길이를 바이트 단위로 나타낸다. 최댓값은 65,535바이트이다.
식별자 : 식별자(Identification)는 IP 패킷을 식별하기 위해 사용된다. 이 영역의 값을 참조하면 어느 원본 패킷으로 분할되었는지를 알 수 있다.
플래그 : 플래그(Flags)는 패킷의 분할 여부에 대한 정보를 나타내는 3비트의 영역이다. 첫 번째 비트는 예비용을 항상 0으로 설정하며, 두 번째 비트는 DF(Don't Fragment), 세 번째 비트는 MF(More Fragment)이다. DF는 데이터를 단편화할 것인지 판단하는 역할을 하며, 0이면 분할이 가능하고 1이면 분할하지 말라는 의미이다. MF는 단편이 더 있는지 판단하는 역할을 하며, 0이면 마지막 단편이라는 뜻이고 1이면 아직 수신되지 않은 단편이 있다는 의미이다.
단편 오프셋 : 단편 오프셋 (Fragment Offset)은 분할된 패킷을 재조립할 수 있도록 원래 위치를 알려주는 영역으로, 바이트를 8로 나눈 값을 사용한다.
TTL : 수신지에 도착하지 못한 패킷이 네트워크에 남으면 결과적으로 네트워크의 자원을 심각하게 잠식할 수 있다. TTL(Time to Live, 패킷 수명)은 이를 방지하는 옵션으로, 라우터를 지날 때마다 TTL 값을 하나씩 감소시키고 값이 0이 된 패킷을 받으면 폐기하도록 한다. 폐기된 패킷을 수신하면 전송지에 이를 알리는 메시지를 보낸다.
프로토콜 유형 : 프로토콜 유형(Protocol Type)은 데이터에 어떤 상위 계층 프로토콜이 포함되어 있는지를 나타낸다.
헤더 체크섬 : 헤더 체크섬(Header Checksum)은 네트워크를 통해 패킷이 전송될 때 발생한 오류를 검출하기 위해 사용하는 영역이다. 데이터 전체가 아닌 헤드의 오류만 검출하며, 오류가 검출되면 복구하지 않고 폐기한다. 헤더를 2바이트씩 모두 잘라 더하고, 발생한 올림 영역까지 더한 후 1의 보수 연산을 수행해 계산한다.
전송지 주소 : 전송지 주소(Source Address)는 패킷을 전송하는 호스트의 주소를 나타내는 영역이다.
수신지 주소 : 수신지 주소(Destination Address)는 패킷을 수신하는 호스트의 주소를 나타내는 영역이다.
ICMP/IPv4 와이어 샤크로 살펴보기
ping 8.8.8.8
ICMP 프로토콜의 모습이다. 간단한 8바이트 뒤에 임의의 알파벳이 붙어 있다.
IPv4의 모습이다.
ip 버전 정보가 4인 것을 확인할 수 있다.
그다음 헤더길이는 20 byte / 4 = 5 인 것을 확인할 수 있다.
DS 값은 쓰이지 않는다. 따라서 0 값을 가진다.
총길이가 60 byte 인 것을 확인할 수 있다.
페이로드 길이 (ICMP 8 byte + 32바이트 (abcd~) ) + 본인 헤더까지 (20byte) = 60 byte
id 값은 조각화가 되었을 때 의미가 있다.
플래그 값은 조각화 여부를 알려주는 값이다. 총 3비트이다. 잘 쓰이지 않는다.
More fragments는 본인 뒤에 조각화된 값이 있다는 것을 알려주는 용도이다. 큰 데이터를 보내지 않았으므로 큰 데이터가 조각화 되지 않아 0인 값이다
offset 은 데이터가 처음으로부터 얼마만큼 떨어져 있냐는 것으로 알려주는 필드로 현재 조각화되지 않아 0으로 세팅되어 있다.
TTL 은 아무 네트워크를 지났지 않았으므로 128로 세팅되어 있다.
protocl 은 상위 프로토콜을 나타내고 있다.
마지막으로 출발지와 목적지의 ip 주소가 나타나있다.
라우팅
라우팅(Routing) 은 네트워크에서 데이터(패킷)를 보낼 때 최적의 경로를 선택하는 과정이며 라우터가 이를 수행한다.
데이터는 보통 출발지에 목적지로 가는 동안 여러 개의 라우터를 거치며 여러 번의 라우팅을 수행한다. (라우팅은 보통 초당 수백만 번 일어남)
라우터 (Router)는 네트워크 사이에서 데이터를 전달하는 장치이며 보통 둘 이상의 서로 다른 네트워크를 연결한다.
데이터(패킷)를 목적지로 보낼 때 최적의 경로를 결정하고 경로가 결정되면 해당 경로로 데이터를 넘겨주는 일(라우팅)을 수행한다. 라오투넌 라우팅 테이블을 기반으로 데이터를 다음 목적지에 전달한다.
라우팅 테이블
라우팅 데이블은 IP 주소를 기반으로 라우터의 위치를 저장한 테이블 또는 데이터 베이스이며 다양한 네트워크에 대한 정보와 해당 네트워크에 연결하는 방법이 포함되어 있다.
라우팅 테이블(지도)에 없으면 해당 값을 찾아갈 수 없다.
맨 첫 줄은 기본값으로 세팅해 주는 값이다. 네트워크 대상에 없으면 일단 게이트웨이를 타고 나가게 설정되어 있다.
게이트웨이가 설정되어 있지 않으면 모르는 네트워크 대역을 찾아나갈 수 없게 된다.
다른 네트워크 대역을 찾아갈 수 있는 경로에 대한 지도라고 생각하면 된다.
다른 네트워크와 통신하는 과정
내 컴퓨터에서 보낸 패킷이 다른 네트워크의 컴퓨터까지 어떻게 이동하는가?
4개의 네트워크 대역이 있고 A 가 B에게 통신을 하려 한다.
A 은 자신의 라우팅 테이블을 확인해 본다. B에 네트워크 대역이 A에 라우팅 테이블에 있어야 통신이 가능하다,
위치 확인 후 프로토콜을 작성하여 통신을 한다.
ICMP로 통신확인만 해보려 한다.
ICMP 요청 프로토콜 작성 : ICMP는 8byte로 이루어져 있고 요청인 08번인 것을 확인할 수 있다.
요청 프로토콜 작성 후 IP 프로토콜을 작성한다.
버전, 헤더길이, tos , 데이터 길이 플래그, TTL , 상위 프로토콜(ICMP 이므로 01) , 출발지 IP , 목적지 IP로 세팅된다.
A 가 B에게 보낼 때 이더넷 프로토콜의 목적지 맥 주소는 뭐가 될까?
최종 목적지 주소는 B이지만 이더넷은 LAN에서 통신할 때 쓰이는 프로토콜이다.
가까운 곳에서 갈 수 있는 곳만 적어놓으므로 C 가 세팅된다.
초반부에 A 라우팅 테이블을 확인할 때 B의 주소로 가기 위해서는 A의 게이트 위치를 알려주고 있다.
따라서 이더넷 프로토콜 작성 시 게이트웨이의 맥주소(C)가 세팅된다.
스위치에서 2 계층까지만 확인해 본다. 스위치가 목적지 필드를 보고 CC로 전달해 준다
라우터로 이동후 2 계층을 확인해 본다. 본인에게 온것이 맞다는 것을 확인하고 3계층을 확인해본다.
목적지 IP 가 주소가 본인이 아닌 것을 확인하고 본인의 라우팅 테이블을 살펴본다.
20번대 대역은. 2로 끝나는 옆의 라우터로 가라고 되어있다.
확인 후 이더넷 프로토콜을 다시 만든다.
목적지와 출발지 맥주소를 본인의 옆 네트워크 대역과 통신할 수 있는 것으로 변경한다.
다음 라우터로 이동 후 3 계층 장비이므로 3 계층까지 열어본다.
목적지 맥주소까지 확인 후 본인의 라우팅 테이블을 확인한다.
라우팅 테이블을 기반으로 다시 이더넷 프로토콜을 만든다.
인터넷 프로토콜은 네트워크 대역이 바뀔 때마다 새로 작성된다. 다음 라우터로 이동후 네트워크 이동을 위해 이더넷 프로토콜은 재작성된다.
최종적으로 패킷이 도착한 B는 패킷을 가본 후 ICMP 요청(08)이 왔다는 것을 확인 후 ICMP 응답(00) 프로토콜을 만들어 반대로 다시 보내준다.
응답을 받은 A는 B와 통신이 되었음을 확인할 수 있다.
만약 라우터에서 해당 맥 주소를 모르면 arp 프로토콜로 맥주소를 알아와서 이더넷 프로토콜을 바꿔서 보낸다.
'Network' 카테고리의 다른 글
TCP/IP 네트워크 이해하기 (2) - 2계층에서 하는 일 (0) | 2025.01.24 |
---|---|
TCP/IP 네트워크 이해하기 (1) (0) | 2025.01.24 |
HTTP 특징 (Stateless, connectionless) (1) | 2025.01.13 |
DB와 WAS 간 TCP 통신: 효율적인 커넥션 관리와 흐름, 혼잡 제어 (0) | 2025.01.12 |