뭉크테크
IPv4란 무엇인가, 패킷의 생성과 소멸 과정 본문
Ipv4 주소
IP주소란 함은 인터넷에서 호스트, 즉 PC를 구분하기 위한 고유 식별자이다. 형태는 위 사진과 같으며, 점을 기준으로 각각 8비트씩 부여된다. 8비트를 통해 나올 수 있는 경우의 수는 총 256가지(10진수 기준 0~255) 이다.
IP 주소를 특정 사무실의 주소라고 생각해보면 쉽다. 그리고 인터넷을 고속도로라고 생각해보고, IP 주소가 있는 패킷을 택배라고 생각해보자. 택배를 많이 받아보면 알 수 있는 것이 바로 물류 센터이다. 각 물류 센터들은 특정 도, 시, 특정 구, 특정 동 을 커버하는 각각의 물류센터들이 있을 것이다. 그 택배물들이 무수히 많이 쏟아져 나올테고, 그 사이에서 그 택배물들을 특정 지역으로 옮기기위해 택배물들을 분류할 것이다. 택배 물류 센터들은 해당 택배들이 정확히 어디에 배송되는지는 알 수 없지만, 어느 동네로 가는 택배차에 옮겨 담아야할 것이다.
인터넷도 똑같다. 인터넷 안에 떠 돌아다니는 패킷을 옮기는 라우터들이 해당 패킷이 정확히 어느 호스트에 가는지는 알 수는 없겠지만, 어느 동네 즉, 어느 네트워크로 가는지는 라우팅 테이블을 통해 알 수 있다. 이때 활용하는 것이 바로 IP 주소의 네트워크 ID이다. 그러다 결국 그 동네, 즉 해당 네트워크 대역으로 진입하게 되면 그제서야 그 패킷 목적지(호스트 PC)에게로 가게된다.
네트워크 ID와 호스트 ID를 구별하는 방법은 서브넷 마스크를 활용하면 되는데, 이는 밑에서 자세히 설명하겠다.
L3 Packet
Packet 이라는 말은 L3단의 하나의 단위 데이터이다. 기본적인 구조는 크게 Header와 Payload로 되어있고, 최대 크기는 MTU 이다. MTU란 Maximum Transmition Unit 이다. MTU는 특별한 이유가 없다면, 1500bytes 이다. 그러나 이 패킷 하나의 크기는 매우 작다. 이를 현실로 비유하면, 퍼즐 하나, 컴퓨터 부품을 택배로 보낼 때 부품 하나하나 보내는 상황에서 그 택배물 중 하나라고 보면된다. Header에서 가장 중요한 것은 출발지와 목적지 주소이다. 물론 다른 정보들도 중요하겠지만, 제일 중요한 것은 저것이라고 한다.
이러한 IP 패킷은 wireshark 라는 툴을 이용하면, 아주 기쁘게 감상할 수 있을 것이다. 실제로 와이어샤크를 이용해 패킷을 분석해본 악성코드 분석 관련 보고서 관련 내용이 아래 링크를 타면 있다. 심심하면 읽어보는 것도 나쁘지 않다.
https://monktech.tistory.com/27
악성코드 샘플 분석 3
목차분석 개요VirusTotalExeinfoPeinfoPEviewBintextProcess ExplorerProcess Monitorcportwiresharksnortautorunssystem explorer악성코드 분석 보고서 분석 개요2009년 11월 6일에 제작되었다. 해당 악성코드는 사용자가 웹사이
monktech.tistory.com
Encapsulation 과 Decapsulation
Encapsulation 말 그대로 캡슐화 시켰다고 한다. 그럼 무엇을 캡슐화시켰냐, TCP/IP 계층 모델 기억하는가? 데이터를 전송할 때 상위단에서 하위단으로 내려오면서 무언가를 감싸게되는다. 그게 아까 언급한 Header이다. 이 Header를 payload 라는, 상위단에서 내려온 데이터를 감싸게된다. 그렇게 상위단에서 내려오면서 하나 하나씩 감싸게된다.
예를 들어, 택배물을 보낼 때, 마냥 그 물건을 보내는 것이 아니라 포장 이라는 행위를 하지 않던가? 그거랑 똑같다고 보면된다.
그런데 OSI 7 Layer에서도 Encapsulation 이라는 행위가 나오는데, 그럼 4계층이상부터도 계속 Header 안에 Payload 라는 패턴이 반복되는가? 그건 아니다. TCP 단 이상 넘어가게되면, Stream 이라는 단위로 넘어가게 되는데 이걸로 인해 상황이 바뀌게된다.
패킷의 생성과 소멸
철수가 영희에게 택배를 보내는 모습을 상상해보면, 인터넷에 대해 더욱 알기 쉽다. 철수가 택배를 보내기 위해선 일단 우체국에 들러서 책을 상자에 넣고, 택배 송장을 작성하고 택배회사로 보내게되면, 택배 물류 센터는 적혀진 주소에 따라 도시, 동네를 기준으로 택배를 분류하게되고, 그 동네에 해당하는 택배 회사로 또 보내게되면, 택배물은 어느덧 영희네 집에 도착할 것이고, 만약 영희가 있다면, 그 상자를 받아 상자를 열어보고 물건을 확인할 것이다. 인터넷 상황도 똑같다.
철수라는 프로세스가 영희라는 프로세스에게 데이터를 보낸다고 했다면, 해당 패킷 데이터는 자신의 집 입구, 우체국 입구 등의 gateway를 거쳐 택배 회사라는 라우터를 통해 택배물이라는 패킷들이 스위칭되고, 결국 영희 집이라는 PC에 도착하여 영희 라는 프로세스 포트 번호로 도착하게될 것이다.
어플리케이션단에서 네트워크 접근 계층까지 데이터의 흐름을 살펴보면, 프로세스상에서 정해준 연속적인 데이터가 Socket 타고 아래 계층으로 내려가는데 이를 Stream 이라고 한다. Stream은 시작은 정해져 있지만, 그 끝은 알 수 없다. 그 끝은 프로세스가 정해준다. 그리고 그 밑에 TCP 단에는 Segment 라는 단위의 데이터들이 있고, IP 단에는 Packet 이라는 단위의 데이터들이 있다. 그리고 이들의 Maximum 사이즈는 각각 1460bytes, 1500bytes 정도 한다.
그런데 Stream 데이터는 끝을 알 수 없어서, 앞서 언급한 크기들보다 훨씬 클 수가 있다. 그래서 stream 데이터가 Socket 타고 kernel 영역 즉, tcp 단으로 내려가게되면 OS가 그 stream 데이터들을 TCP 단의 데이터 크기에 맞게 하나하나 싹둑 자르게 된다. 그러면 여러개의 데이터들 즉, Segment들은 각각 1460bytes로 이루어진채 아랫단 L3 계층으로 흘러내려가게된다.
여기에 더붙여 설명한다면, 세그먼트 mss가 1460 bytes 인 이유는 패킷의 최대 크기가 1500 bytes이기 때문에, 그 크기에 맞춰 헤더도 붙여줘야 하므로 패킷 mtu 사이즈보다 살짝 작은 1460bytes가 된 것이다. 그래서 이 1460 bytes에 tcp 헤더(20bytes)와 IP 헤더(20bytes) 붙여 총 1500bytes 패킷 사이즈를 형성하게된 것이다. 아래 링크를 타서 들어가서 확인해보면 알 것이다.
https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-mss/
L3는 얘기할 게 많아서 다음 챕터에서 이어하도록 한다.
출처
외워서 끝내는 네트워크 핵심이론 - 기초 강의 | 널널한 개발자 - 인프런
널널한 개발자 | TCP/IP에서 HTTP까지! 네트워크에 대한 기본 이론이 부족한 분들이 '외워서'라도 전공 이론을 이해하고자 희망하는 분들을 위해 준비한 강의입니다. 할 수 있습니다!, 네트워크, 외
www.inflearn.com
'네트워크' 카테고리의 다른 글
IPv4 헤더 형식 (0) | 2025.01.08 |
---|---|
TCP/IP 송수신 구조 (0) | 2025.01.08 |
L2 수준에서 알아야할 것들 (0) | 2025.01.06 |
네트워크 안에서 데이터들은 어떻게 이동하는가 (0) | 2025.01.06 |
컴퓨터는 3층 집, 그리고 그 안에서 동작하는 TCP/IP (0) | 2025.01.06 |