전체 글
[Network] ICMP Header 구조
ICMP(Internet Control Message Protocol)란? - 패킷을 목적지에 도달시키는게 목적인 IP을 보조하기 위해 사용된다. - 호스트가 꺼져 있거나, 단선인 경우와 같은 비정상적인 경우에 오류보고 메시지와 진단/정보를 전달한다. - 패킷이 대상 호스트에 도달하고 돌아오는지 확인할 때 사용한다. (ping test) ICMP 헤더 구조 Type - 패킷의 종류와 용도를 의미한다. (3 : 수신처 도달 분가 / 4 : 발신 제한 / 5 : 라우트 변경 / 11 : 시간 초과) Code - Type 부분의 세부 내용을 나타내며 Type과 조합을 이루어 ICMP 패킷의 목적을 나타낸다. Checksum - ICMP 패킷의 이상 유무를 확인한다. ICMP 헤더 C언어 구조체 구현
[Network] UDP Header 구조
UDP(User Datagram Protocol)란? - TCP와는 다르게 수신지에서 데이터를 받던 말던 상관하지 않고 데이터를 전송한다. - 수신된 패킷에서 오류를 탐지하면 폐기하는 정도의 오류제어 기능만 제공한다. - 위와 같은 이유때문에 TCP보다 빠르다. UDP 헤더 구조 Source Port - 2byte - 송신지 포트번호 Destination Port - 2byte - 수신지 포트번호 Length - 2byte - 헤더와 데이터를 합한 사용자 데이터그램의 전체 길이를 정의한다. - 최소값은 헤더만 포함한다면 8byte이고, 최대값은 IP 수용 제한에 따라 달라진다. - 65,507byte = 65,535byte - UDP 헤더(8byte) - IP 헤더(기본적으로 20byte)이다. Chec..
[Network] TCP Header 구조
TCP(Transmission Control Protocol)란? - 서버와 클라이언트간에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜이다. - 데이터를 여러 개의 패킷으로 나누고 도착지에서는 패킷을 재조립한다. - 패킷의 분실이나 중복, 순서가 바뀌는 문제를 해결해주기 때문에 신뢰성 있다. TCP 헤더 구조 Source Port - 2byte - 송신지 포트번호 Destination Port - 2byte - 수신지 포트번호 Sequence Number - 4byte - TCP 세그먼트 안에 데이터의 송신 바이트 흐름의 위치를 가리킨다. - 세그먼트는 서로 다른 경로를 거치면서 순서가 뒤 바뀔 수가 있다. 이를 수신 측에서 재조립하기 위해 사용되는 번호이다. Acknowledgment Numbe..
[Network] IP Header 구조
IP(Internet Protocol)란? - 인터넷에 연결된 모든 장치들을 식별할 수 있도록 장비마다 부여되는 고유 주소이다. (각 장치의 주민등록번호와 같은 역할) - IPv4와 IPv6가 있으며 현재는 IPv4를 사용한다. - 32비트 방식으로 8비트씩 4자리, 각 자리는 온점으로 구분한다. IP 헤더 구조 1. Version - 4bit - 현재는 IPv4를 사용한다. -> 4 2. IHL(Header Length) - 4bit - 32비트 단위로 IP 헤더의 길이를 나타낸다. 최소 5부터 15까지의 값이다. - 대부분의 IP 헤더의 길이는 20byte(4 * 5 = 20)이다. 3. Type of Service (TOS) - 16bit - 패킷의 우선 순위를 제공한다. 4. Total Lengt..
[Network] Ethernet II 프레임 구조
ethernet 이란? - 컴퓨터 기술의 하나로, LAN에서 가장 많이 활용되는 기술 규격. - OSI Layer 1(물리 계층)에서 신호와 배선, OSI Layer 2(데이터 링크 계층)에서 MAC패킷과 프로토콜의 형식을 정의한다. - IEEE 802.3 규약으로 표준화되었다. Layer 2 : 데이터 링크 계층 (Date-Link Layer) - 패킷 맨 앞에 14byte - 물리적으로 같은 네트워크이며, IP의 서브넷마스크가 동일하면 무조건 통신이 가능하다. Ethernet Type II Frame 1. 목적지 MAC 주소 (Destination MAC Address) - 6byte - 수신자의 MAC 주소를 나타낸다. 2. 출발지 MAC 주소 (Source MAC Address) - 6byte -..
[Network] ARP Header 구조
ARP(Address Resolution Protocol)란? - IP주소(OSI Layer 3)를 MAC주소(OSI Layer 2)로 변환해주는 프로토콜 - 동일 네트워크(LAN)에서 통신하기 위해 IP주소를 이용해서 MAC주소를 알아온다. ARP 헤더 구조 1. 하드웨어 타입 (Hardware type) - 2byte - 사용중인 하드웨어 주소의 타입을 나타내는 필드이다. - ethernet : 1 / IEEE 802(Wi-fi) : 6 / HDLC : 17 2. 프로토콜 타입 (Protocol type) - 2byte - 상위 프로토콜을 정의 한다. (IPv4 : 0x0800) 3. 하드웨어 주소 길이 (Hardware Address Length) - 1byte - MAC 주소의 크기를 나타낸다. ..
[C, C++] #pragma pack의 개념과 사용방법
#pragma pack의 사용이유와 사용방법에 대해서 알아볼 것이다. 먼저 일반적인 구조체 선언 코드를 보자.#includetypedef struct test{ char a; // 1byte int b; // 4byte}test;이때 구조체 변수 a는 char형이므로 1byte일 것이고, 변수 b는 int형으로 4byte일 것이다.하지만 구조체의 크기 할당에는 크기가 가장 큰 자료형을 기준으로 배수만큼 커지게 된다. 실제로 구조체의 크기를 출력하는 코드를 통해서 직접 확인해보자.#includetypedef struct test{ char a; int b;}test;int main(){ test s1; printf("s1.a size : %d byte\n",sizeof..