1. Ethernet이란?
컴퓨터 네트워크 기술의 하나로, 물리 계층과 데이터 링크계층으로 나뉜다.
물리 계층에서는 신호와 배선, 데이터 링크 계층에서 MAC패킷과 프로토콜의 형식을 정의한다.
지금 주목할 부분은 데이터 링크 계층이다.
헤더 구조.
Destination MAC (6 bytes) |
Source MAC (6 bytes) |
Type (2 bytes) |
Destination MAC (6 bytes) : 목적지 주소
Source MAC (6 bytes) : 출발지 주소
Type (2 bytes) : 상위 계층의 프로토콜 종류를 구분
(IP : 0x0800 , ARP : 0x0806 등등)
2. IP 란?
IP(Internet Protocol) 의 약자로 쉽게 말해 컴퓨터가 갖게 되는 주소인데, 이것은 와이파이가 다를때마다 얻는 주소가 달라진다.
예를들어, 전화번호를 생각해보자. 서울은 02로 시작하고 경기도는 031로 시작한다. 서울에서 우리 집전화기를 개통해서 얻는 전화번호 02-1234-1234 이다. 서울이라는 와이파이에서 할당 받은 IP주소는 02-1234-1234가 되는 셈이다. 그리고 이 번호는 다른 전화기와 중복되지 않는다. 컴퓨터로도 마찬가지이다. 그리고 경기도에서 우리 집전화기를 개통해서 얻는 번호는 031-456-4567 이다. 여기서 우리는 경기도라는 와이파이에서 할당받은 IP주소는 031-456-4567이 된다.
헤더 구조.
Version (4bits) : IP의 버전을 나타낸다. (IPv4/IPv6)
Header Length (4bits) : IP헤더의 길이를 알수있는 필드값이다. 헤더길이는 필드값 * 4 이다.
(일반적으로 길이값은 20이 나오지만 고정값이 아니니 주의하고 계산해야한다.)
Type-of-Service Flags (1byte) : 서비스의 우선 순위를 제공한다.
Total Packet Length (2bytes) : Eth패킷과 패킷끝에 필요없는 부분?을 제외한 IP부터 패킷의 끝의 총 길이.
Fragment identifier (2bytes) : 분열이 발생 했을때 원래의 데이터를 식별하기 위해서 사용한다.
Fragmentation Flags (3bits) :
x - 항상 0으로 설정
D - 분열 여부를 나타냄 0 : 분열 가능, 1 : 분열방지
M - 분열되 조각이 더 있는지 판단 0 : 마지막 조각 , 1 : 조각 더 있음
Frgmentation Offset (13bits) : 8바이트 오프셋으로 조각에 저장된 원래 데이터의 바이트 범위를 나타냄
Time-to-live (1byte) : 데이터을 전달할 수 없는 것으로 판단되어 소멸되기 이전에 데이터가 이동할 수 있는 단계의 수를 나타냄
Protocol Identifier (1byte) : 상위계층 프로토콜 표시 (TCP : 6, UDP: 17)
Header Checksum (2bytes) : IP헤더의 체크섬을 저장
Source IP Address (4bytes) : 출발지 IP 주소
Destiantion IP Address (4bytes) : 목적지 IP 주소
3. TCP 란?
데이터를 송수신하기 위해 IP를 사용하는 프로토콜 이다. 데이터를 세그먼트 단위로 쪼개어 전송후 재조립 하는 과정을 거친다.
예를 들어 설명하자면, 완전한 데이터를 완성된 퍼즐이라고 생각해보자. 퍼즐을 완전히 분해하여 조각을 하나씩 전송하고 도착지에서 퍼즐을 다시 완성하는 방식이다.
헤더 구조.
Source Port (2bytes) : 데이터를 전송하는 곳의 포트 번호
Destination Port (2bytes) : 목적지의 포트번호 (80 : HTTP, 443 : HTTPS)
Sequence Number (4bytes) : 데이터 바이트의 고유한 일련번호, 순서가 어긋나게 도착해도 이를 이용하여 올바르게 재배열 한다
Acknowledgement Number (4bytes) : 다음 세그먼트 수신준비가 되었다는 여부와 수신이 완료되었다는 확인 메세지를 전달 한다
Header Length (4ytes) : 필드값 * 4 = Tcp header 길이 값
Reserved (6 bits) : 차후 사용을 위한 예약 필드
Control Flags (6 bits) :
-C : 혼잡 윈도우 크기 감소
-E : 혼잡을 알림
-U : 필드가 가르키는 세그먼트 번호까지 긴급 데이터를 포함한다는 것을 알림(0이라면 무시)
-A : 확인 응답 메세지
-P : 데이터를 포함한다는 것을 말함
-R : 수신거부 할때 사용
-S : 확인 메세지 전송
-F : 연결을 종료하고자 할때 사용
Window Size (2bytes) : 송신 시스템의 가용 수신 버퍼의 크기를 바이트 단위로 나타냄
Checksum (2bytes) : TCP 세그먼트 내용이 유효 및 손상여부 검사
'Logs' 카테고리의 다른 글
[Ubuntu] 우분투 도커 다운받기, 도커 에러 (0) | 2020.11.08 |
---|---|
[Ubuntu] 우분투 버전 확인하기 (0) | 2020.11.07 |
MariaDB 설치부터 계정 생성, 권한부여 서버 연결까지 (*속성) (0) | 2020.11.06 |
아이디, 패스워드 Database 생성하기 (0) | 2020.08.14 |
[ C ] pcap으로 패킷 캡쳐하기 (0) | 2019.05.20 |