TCP/IP 개요와 기본 개념

이 문서를 주의 깊게 읽으면 TCP/IP에 대한 이해를 크게 높일 수 있을 것입니다.

* 알게 될 주제
1) IP 주소, 서브넷 마스크, 게이트웨이의 의미
2) ARP 캐시 테이블의 이해
3) DNS 캐시 테이블의 이해
4) UDP 방식과 TCP 방식
5) 데이터 전송 단위 (페이로드와 헤더)
6) TCP/IP 방식의 5단계 계층적 구조 - 응용 계층
7) TCP/IP 방식의 5단계 계층적 구조 - 전송 계층
8) TCP/IP 방식의 5단계 계층적 구조 - 네트워크 계층
9) TCP/IP 방식의 5단계 계층적 구조 - 데이터 링크 계층
10) TCP/IP 방식의 5단계 계층적 구조 - 물리 계층
11) TCP/IP 방식에 따른 완전한 전송 과정
12) LAN/WAN 영역의 이해
13) TCP/IP 네트워크 공격 유형
14) TCP/IP 계층별 취약점 기반 공격 유형
15) 보안 알고리즘
16) VPN 기법
17) IPv6 헤더의 이해

-> 시작
1) IP 주소, 서브넷 마스크, 게이트웨이의 의미
* IP 주소 - 인터넷 공간에서 호스트 장비를 유일하게 구별하기 위한 식별자. 클라이언트 관점에서는 데이터를 송신하는 주체이기 때문에 출발지 IP 주소라고 간주하는 것이 타당.
* 서브넷 마스크 - IP 와 쌍으로 사용. 서브넷 개념을 알아야 함. 특정 영역대에 속한 IP 라는 것을 설명하는 것으로 서브넷 마스크를 사용하여 네트워크 ID와 호스트 ID를 구분한다. 예를 들어 168.126.63.1의 서브넷 마스크가 255.255.0.0이면 앞 168.126이 호스트 ID. 역사적으로는 IP 체계는 전화 국번 체계에서 유래했는데 예로 들어 123-1414란 전화번호는 대시 기호를 구분으로 국번과 번호로 이루어진 구조고 123 교환기에서 0000-9999의 전화번호가 할당될 수 있는데 1414란 전화번호가 임의로 할당 된 것. 여기서 국번이 네트워크 ID이고 번호가 호스트 ID라고 볼 수 있다. 이를 쓰는 이유는 IP에 대한 전반적인 이야기를 풀어야 하는데 ARP 유니캐스트를 줄이기 위해 물리적으로는 같은 네트워크이나 상이한 LAN영역으로 논리적으로 구분해놓은 것. LAN 영역이란 같은 네트워크 ID를 공유하는 장치들의 집합 공간. 무수한 LAN 영역들에서 자기 LAN 영역을 구분하는 주소가 네트워크 ID이고, 해당 LAN 영역 속한 호스트를 구분해내기 위한 식별자가 호스트 IP. 
* 게이트웨이 - 소프트웨어 측면을 강조할 때 게이트웨이라고 하고 물리적 측면을 강조할 때 라우터라고 한다. 본질적으로 같은 의미. 가정의 경우 공유기. 곧 게이트웨이란 인터넷으로 접속하기 위한 일종의 관문 역할을 하는 장비. 서브넷 마스크의 개념을 기반으로 게이트웨이(라우터)를 다시 살펴보면 서로 다른 네트워크 ID를 사용하는 LAN 영역을 연결해주는 장비. 출발지와 도착지가 다른 네트워크 ID를 사용하면 라우팅이 필요하다. 출발지와 도착지가 네트워크 ID가 동일하다면 즉, 같은 LAN 영역에 있으면 이 경우 스위칭이 일어난다고 한다.

2) ARP 캐시 테이블의 이해
* 맥 주소(48비트 체계)도 IP처럼 기업 고유 식별자 OUI(24비트)와 일련 번호(24비트)로 구분한다. OUI도 IEEE에서 관리한다. 중복을 방지하기 위해.
* 이더넷 기술은 LAN 영역의 사실상의 표준 기술이고, 이더넷 통신은 맥 주소에 기반해 LAN 영역에서 내부 통신을 구현하는 기술이다(IEEE 802).
종류
국제 표준
특징
원시 이더넷

버스 토폴로지 구조에 따른 CSMA/CD 방식
구식 이더넷
IEEE 802.3
UTP 선로 및 최초의 허브 장비
패스트 이더넷(FE)
IEEE 802.3u
스위치 장비
기가비트 이더넷(GE)
IEEE 802.3z
UTP 8가닥 모두 사용(802.3ab) 1000 BASE-T 구성
10GE
IEEE 802.3ae
메트로 이더넷(MAN) 등장. 더이상 LAN 영역 집선 장치로 허브를 사용할 수 없고 전송매체도 UTP 대신 오직 광선로만 사용.
100GE
IEEE 802.3ba

이제 이더넷 어댑터 로컬 영역 연결의 진정한 의미를 알겠는가?

* ARP(Address Resolution Protocol) - IP와 맥 주소를 연결해 주는 기능. LAN 동작을 이해하는데 아주 중요.
* ARP 캐시 테이블 - IP와 맥 주소 대응 관계를 저장한 테이블. PC와 함께 스위치나 라우터 같은 장비에서도 볼 수 있다.
* ARP 캐시 테이블이 비어 있는 상태에서 IP 주소 출발지와 목적지가 있을 때 네트워크 명령이 시작 되는 순간 즉시 운영체제는 자신이 사용하는 서브넷 마스크를 가지고 각각 출발지 네트워크 ID와 목적지 네트워크 ID가 같은지 비교한다. 다르다면 다른 LAN 영역에 있다는 의미다. 그러면 목적지 IP를 라우터 IP로 변경한다.  이제 목적지 맥 주소를 알아야 한다. 그러면 이제 출발지 호스트는 라우터 IP 맥 주소를 알기 위해 자신과 동일한 네트워크 ID를 사용하는 모든 호스트에 즉 자신이 속한 LAN 영역 전체를 대상으로 ARP 질의 요청을 브로드캐스트 한다. 자신과 동일한 네트워크 ID의 모든 호스트에 전송한다. 출발지 호스트가 속한 LAN 영역의 모든 호스트는 ARP 질의를 받고 이 중에서 게이트웨이가 자신의 맥 주소를 ARP 응답을 유니캐스트(브로드캐스트와 반대)한다. 이제 ARP 캐시 테이블 목적지 맥 주소가 채워지면 운영체제는 ARP 캐시 테이블을 참조해 유니캐스트 방식에 따라 데이터를 전송한다. 이후부터는 라우터가 IP 주소에 기반한 라우팅 통신을 통해 전송한다.
* 스위칭 - 맥 주소에 기반해 내부 통신이 가능한 공간.
* ARP 요청, 응답을 정확히 이해하기 위해서는 ARP 헤더를 알아야 한다.

3) DNS 캐시 테이블의 이해
* DNS 동작 우선 순위 - 1) hosts 검색 2) DNS 캐시 테이블 검색 3) DNS 요청과 응답 4) DNS 캐시 테이블에 목적지 IP 반영

4) UDP 방식과 TCP 방식
* TCP 3단계 연결 설정(3-way Handshake) - 송신 데이터가 생기면 SYN 일종의 동기화 신호 전송. ACK/SYN 응답. 수신 측에서 역으로 SYN 동기화. 호스트가 수신 측으로 ACK/SYN를 받으면 Established 후 수신 측으로 ACK를 전송. -> 수신 측 ACK 받으면 Established. 이후 데이터 주고 받음. 이후에도 비슷함. 데이터 전송 후 ACK 신호 받을 때까지 대기. ACK 신호가 없다면 오류가 발생했다고 판단하고 데이터를 다시 전송. ACK를 받으면 다음 데이터 전송. Close 할 때도 마찬가지로 3단계 연결 종료(3-way Terminate). FIN 전송. 수신 측에서 ACK/FIN 전송. 호스트가 받으면 Closed 상태가 되고 ACK 전송. 수신도 ACK 받으면 Close. 단 차이가 있다면 아직 수신 측에서 처리할 게 남았다면 ACK를 먼저 보내고 처리가 끝난 다음 FIN 전송. 이런 경우 4-way Terminate라고 함.
* 소켓은 운영체제가 논리적인 방식에 따라 두 호스트를 연결해 주는 인터페이스. 또한 소켓 생성은 운영체제에서 통신에 필요한 내부 자원 할당을 의미하기도.

5) 데이터 전송 단위 (페이로드와 헤더)
* 운영체제가 생성하는 데이터는 [페이로드]-[헤더1]-[헤더2]-[헤더3] 형태와 같다. 페이로드로만 이루어진 데이터 전송 단위를 메시지라고 한다.
* 헤더1 - 첫번째 헤더 핵심 정보는 출발지 포트 번호와 목적지 포트 번호. 데이터그램 또는 세그먼트. [UDP/TCP 페이로드]-[데이터그램 또는 세그먼트 헤더]. 단편화는 TCP만 있다. 단편화는 페이로드를 여러 조각으로 조각낸 뒤 전송한다. 전송 효율성, 기밀성 등. 단편화가 없는 UDP는 페이로드 앞에 헤더가 붙은 걸 데이터그램, 단편화가 있는 TCP 페이로드 앞에 헤더가 붙었을 때 세그먼트라고 한다.
* 헤더2 - 데이터그램이 완성되면 패킷 헤더가 붙는다. 패킷 헤더의 핵심 정보는 출발지 IP 주소와 목적지 IP 주소이다. 패킷 헤더가 붙은 단위를 패킷이라고 부른다.
* 헤더3 - 마지막 프레임 헤더가 패킷 헤더 뒤에 붙는다. 프레임 헤더에는 맥 주소가 붙는다. 이러한 전송 단위를 프레임이라고 부른다. 스위치 장비가 스위칭을 수행할 때 참조하는 부분이 프레임 헤더다. 프레임 헤더는 스위칭 통신 영역과 라우팅 통신 영역에 있을 때 담는 정보가 다르다. WAN 영역에서는 맥 주소 자리에 다른 무언가로 채워진다(WAN 프로토콜에 대한 정보). 데이터그램 헤더와 패킷 헤더의 주소는 변하지 않는다. 
* 경우에 따라서 데이터 전송 단위 전체를 단순히 패킷이라고 칭하기도 한다.
* 페이로드에 일련의 헤더를 붙이는 과정을 인캡슐레이션이라고 한다. 마찬가지로 헤더를 떼 내는 과정을 디캡슐레이션이라고 한다. 즉, 운영체제가 데이터를 송신하는 과정은 메시지에서 데이터그램으로, 데이터그램에서 패킷으로, 패킷에서 프레임으로 변환하는 인캡슐레이션이고 수신하는 과정은 그 반대이다. 라우터는 패킷 헤더만 읽을 수 있을 뿐 세그먼트/데이터그램 이하는 읽을 수 없다. 스위치 또한 오직 프레임 헤더만 읽을 수 있다.

6) TCP/IP 방식의 5단계 계층적 구조 - 응용 계층
* ISO가 막대한 비용과 시간을 투자해 OSI 7계층을 만들었지만 오늘날 인터넷에서 표준으로 사용되고 있는 건 TCP/IP 4계층(+물리까지 5계층)이다.
계층 구분
데이터 전송 단위
해당 계층에 속하는 프로토콜
응용
메시지
FTP, SSH, TELNET, SMTP, DNS, DHCP, HTTP, POP3 ...
전송
데이터그램/세그먼트
UDP, TCP
네트워크
패킷
IP, ICMP, IGMP, ARP, RARP
데이터 링크
프레임
이더넷, PPP
물리
비트

* TCP/IP는 한 단계 아래로 내려갈수록 물리적이고 구체적인 속성이 강해지고(반대 방향은 논리적 추상적) 헤더를 추가한다. 이런 과정을 인캡슐레이션.
* 응용 계층 - 전송하고자 하는 데이터, 정확히 말해 페이로드를 생성해주는 계층.
* 응용 계층의 무수한 프로토콜을 포트 번호로 구분한다. 포트 번호에는 발생하는 정보가 흐르는 가상의 통로라는 의미도 있다. 0 ~ 1023포트까지를 잘 알려진 포트 번호라고 하며 주로 서버에서 사용한다. 1024 ~ 49151은 클라이언트, 49152 ~ 65535는 사설 또는 동적 포트 번호로 클라이언트에서 사용한다.

7) TCP/IP 방식의 5단계 계층적 구조 - 전송 계층
* UDP와 TCP - 주요 차이는 단편화와 버퍼링 유무이다. TCP 처리 방식을 따라가 본다. 응용계층에서 1024바이트의 페이로드가 생성되었다고 가정한다. 3단계 연결 설정으로 연결된다. 1024바이트 크기의 페이로드를 버퍼에 저장하고 SYN 세그먼트를 1개 생성한다. 
[SYN 신호 세그먼트 헤더]-[IP 패킷 헤더]-[이더넷 프레임 헤더]
[ACK/SYNC 신호 세그먼트 헤더]-[IP 패킷 헤더]-[이더넷 프레임 헤더]
[ACK 세그먼트 헤더]-[IP 패킷 헤더]-[이더넷 프레임 헤더]
연결이 수립되면 운영체제는 비로소 응용 계층에서 생성된 페이로드를 전송 계층으로 넘긴다. 전송 계층은 응용 계층에서 넘어온 페이로드를 단편화 한다. 여러개로 나누고 조각난 페이로드 앞에 출발지 포트와 목적지 포트 번호 등이 담긴 헤더가 붙으면서 조각 개수만큼 세그먼트가 생성된다. 각 세그먼트는 다음 단계인 네트워크로 넘어가 패킷을 생성한다.

* UDP 헤더 - 8바이트. 출발지 포트, 목적지 포트, 길이, 오류 검사
* TCP 헤더 - 20바이트. 혹은 그 이상 가변적(TCP options 헤더 항목). UDP와 마찬가지 포트와 버퍼링과 단편화를 위한 헤더로 복잡하다. 1) 일련번호와 확인번호는 3단계 연결 설정 등과 관련. 3-way Handshake를 할 때 세그먼트 연속성을 보장받기 위해서 필요. 단편화한 세그먼트를 순서대로 재조립할 때도 필요.
2) 오프셋 - 헤더의 길이. TCP 헤더는 가변적이기 때문에. 일반적으로 20.
3) 플래그 - TCP 수행의 제어 정보. SYN이나 FIN 같은 신호가 여기 들어간다. 총 8개의 신호가 있다. CWG(혼잡 윈도우 크기 감소 신호), ECN(혼잡 발생 신호), URG(긴급 데이터 신호), ACK, PSH(TCP 페이로드 포함 신호), RST(상대방과 연결 강제 종료 신호), SYN, FIN
4) 윈도우 - 흐름 제어 기능과 관련. 플래그와 밀접한 관계가 있다. 송신자는 수신자의 확인 응답에 따라 전송할 양을 조절하는데 이를 혼잡 윈도우(Congestion window)라고 하며, 송신자가 전송할 수 있는 동적인 양을 슬라이딩 윈도우라고 한다.

8) TCP/IP 방식의 5단계 계층적 구조 - 네트워크 계층
* IP 헤더 - 각 세그먼트 앞에 IP 주소를 주요 정보로 하는 헤더를 추가하면서 IP 패킷을 생성한다. TCP 헤더와 더불어 중요하게 간주하는 헤더이다. TCP 헤더처럼 가변적이다. 일반적으로 20바이트를 사용하지만 IP options 항목을 이용해 21바이트 이상으로 사용할 수 있다.
1) 버전 - IPv4라면 4가 들어가고 IPv6라면 6이 들어간다.
2) 헤더 길이 - 헤더의 크기. 일반적으로 20.
3) 서비스 종류(ToS) - 해당 패킷의 전송 우선순위. 회선이 혼잡할 때 우선적으로 전송.
4) 전체 길이 - IP 헤더를 포함한 패킷 전체 길이.
5) ID, IP 플래그, 프래그먼트 오프셋 - MTU(최대 전송 단위)에 따른 패킷 분할 정보. 예를 들어 이더넷 방식에서 MTU는 1500바이트이고 만약 5900바이트 패킷이 발생하면 이 항목을 사용해 이더넷 구간을 통과한다. 이런 과정을 패킷 분할이라고 한다.
6) TTL(생존 시간) - 라우팅 루프가 일어난 구간에서 패킷을 폐기하기 위한 용도. 해당 패킷이 통과할 수 있는 라우터의 개수 정보를 담는 항목. 예를 들어 TTL이 10이면 10대의 라우터를 통과할 수 있고 그 이상은 통과할 수 없다. tracert 명령어는 TTL 속성을 이용해 구현한다.
7) 헤더 체크섬 - 비활성
8) 출발지 IP 주소, 목적지 IP 주소 - 각각 32비트. 모든 비트가 0인 경우 네트워크 ID 주소(즉 .0) 모든 비트가 1인 경우 브로드캐스트 IP 주소(즉 .255). 이는 운영체제에서 사용하기 때문에 따라서 실제 사용  가능한 IP 주소 범위는 1 ~ 254번까지 254개(리눅스의 경우는 ICMP 설정을 바꾸면 브로드캐스트 IP 주소를 사용할 수도 있음. 이처럼 브로드캐스트 IP 속성을 악용한 공격을 ICMP 스머핑 공격이라고 함).
* 사설 IP 주소는 LAN 영역에서 전용으로 사용할 수 있는 주소임에도 실제 인터넷 접속이 가능한데 NAT라는 기법을 사용하기 때문. NAT는 출발지 사설 IP 주소를 공인 IP 주소로 바꾸는 기법. 라우터에서 NAT 기능을 수행. 공유기가 그런 장치. Network Address Translation.

* ICMP 질의는 네트워크 계층에서부터 페이로드를 생성한다. [ICMP 페이로드]-[ICMP 헤더]-[IP 헤더]

9) TCP/IP 방식의 5단계 계층적 구조 - 데이터 링크 계층
* 패킷을 기반으로 프레임 전송 단위를 형성하는 계층. 엄밀히 말하면 순수한 TCP/IP는 아니나 LAN/WAN 기술이 발전하면서 새롭게 구성한 계층.
* 스위칭 통신을 구현하는 LAN 영역에서 사용하는 프로토콜 - 이더넷 방식이 LAN 영역에서 사실상 표준으로 자리 잡았다. (다른 종류는 토큰 링, FDDI, ATM 방식 등)
* 라우팅 통신을 구현하는 WAN 영역에서는 HDLC, PPP, X.25, 프레임 릴레이, ATM 방식 등 - LAN과 다르게 사실상 표준 프로토콜이 없기 때문에 상대방 라우터와 연동 시 프로토콜 설정에 주의.
* ARP 헤더 - 페이로드 영역이 없고 오직 헤더로만 이루어졌다. 28바이트. 출발지 IP 주소/맥 주소, 목적지 IP 주소/맥 주소. 운영체제 ARP 캐시 테이블에서 목적지 맥 주소가 없다면 맥 주소를 구하기 위해 네트워크 계층에서 ARP 헤더를 생성한다. 맥 주소를 모르는 목적지에 00-00-00-00-00-00 처럼 채워진다. 이 때 ARP 헤더의 연산 코드는 ARP 요청이라는 의미의 1 이다. ARP 헤더는 데이터 링크 계층으로 넘어가고 14바이트인 이더넷 방식의 프레임 헤더가 붙는다. 프레임 헤더 주요 정보는 출발지/목적지 맥 주소인데 모르기 때문에 ff:ff:ff:ff:ff:ff 처럼 채워진다. 브로드캐스트로 전송하겠다는 의미다. ARP 브로드캐스트 요청을 수행하기 위한 프레임을 완성하면 ARP 브로드캐스트 질의를 수행한다. 동일한 네트워크 ID를 공유하는 모든 호스트에 전달된다. ARP 브로드캐스트 요청을 받은 호스트에는 인터럽트가 일어난다. 이어 자신의 맥 주소 요청이라는 사실을 알면 출발지와 목적지를 바꿔 자신의 맥 주소를 담아 ARP 헤더 연산 코드는 ARP 응답 의미인 2로 유니캐스트 응답을 전송한다. 이후 일정 시간 동안 해당 맥 주소를 참조하는 일이 없다면 ARP 캐시 테이블에서는 해당 맥 주소를 삭제한다(DNS 캐시 테이블에서도 이런 일이 일어난다).

10) TCP/IP 방식의 5단계 계층적 구조 - 물리 계층
* 모든 전송 단위는 물리 계층에서 비트 단위로 변환한다. TCP/IP 환경에서 알아야 할 3대 네트워크 장비는 허브, 스위치, 라우터이다.
1) 허브 - 비트 단위로 들어온 신호를 들어온 포트를 제외한 모든 포트로 비트 단위를 플러딩한다. 허브는 수신한 비트를 디캡슐레이션하는 과정이 없기 때문에 이론상 가장 빠르다.
2) 스위치 - 데이터 링크 계층에서 프레임 단위를 처리한다. 비트로 수신한 신호를 프레임으로 디캡슐레이션한다. 프레임 헤더에 담긴 목적지 맥 주소가 자신의 스위칭 테이블에 있는지 검색한다. 있다면 프레임을 다시 비트로 변환하여 특정 포트로만 포워딩 한다. 만약 맥 주소를 스위칭 테이블에서 검색할 수 없거나 ARP 요청이라면 허브처럼 플러딩한다.
3) 라우터 - 패킷 단위를 처리하는 장치. 비트를 프레임으로 변환해 자신의 맥 주소와 프레임 헤더의 목적지 맥 주소를 비교한다. 일치할 경우 프레임을 패킷으로 변환한다. 그 다음 패킷 헤더에 담긴 목적지 IP 주소가 자신의 라우팅 테이블에 있는지 여부를 검색한다. 있다면 패킷을 프레임으로 변환한 뒤 프레임 헤더를 이더넷 헤더가 아닌 PPP 헤더로 변환한다. PPP 정보를 담은 프레임은 비트로 변환한 뒤 경유지 인터페이스를 타고 목적지 라우터로 흘러간다. 만약 패킷 헤더의 목적지 IP 주소에 해당하는 네트워크 ID 대역이 라우팅 테이블에 없다면 라우터는 라우팅 불가로 판단해 해당 패킷을 폐기하고 송신자에게 ICMP 방식을 이용해 이 사실을 통보한다. 스위치가 목적지를 모를 경우 LAN 영역 전체에 플러딩하는 경우와 다르다. 
* OSI 방식의 계층적 구조에 따르면 허브를 L1 장비, 스위치를 L2 장비, 라우터를 L3 장비라고 부른다.

11) TCP/IP 방식에 따른 완전한 전송 과정 정리
* abc.com 주소로 데이터 전송의 예
1) DNS 검색(hosts, DNS 캐시 테이블) -> 2) DNS 서버 IP 주소를 검색 -> 3) 서브넷 마스크로 DNS 서버 IP의 네트워크 ID가 상이하기 때문에 ARP 캐시 테이블에서 라우터의 맥 주소 검색 -> 4) 라우터의 맥 주소가 없다면 네트워크 계층에서 ARP 헤더를 생성해 데이터 링크 계층으로 넘김 -> 5) ARP 헤더에 이더넷 프레임을 생성해 물리 계층으로 넘김 -> 6) ARP 요청 브로드 캐스트, 라우터가 ARP 응답 유니캐스트 전송 -> 7) 라우터로 ARP 응답이 오면 라우터 맥 주소 ARP 캐시 테이블에 반영 -> 7) 응용 계층에서 UDP 속성의 도메인 네임 질의 정보를 담은 DNS 페이로드를 생성 한 뒤 전송 계층으로 DNS 페이로드 넘김 -> 8) DNS 페이로드 앞에 UDP 헤더를 추가해 UDP 데이터그램을 네트워크 계층으로 넘김 -> 9) UDP 데이터그램에 IP 헤더를 추가해 IP 패킷을 생성한 뒤 데이터 링크 계층으로 넘김 -> 10) IP 패킷 앞에 이더넷 헤더를 생성해 물리 계층으로 넘김 -> 11) 이더넷 프레임을 라우터로 전송 -> 12) 목적지 DNS 서버로부터 DNS 질의 응답이 오면 DNS 캐시 테이블에 반영 -> 12) 응용 계층에서 TCP 속성의 페이로드를 생성 한 뒤 전송 계층으로 넘김 -> 13) 페이로드를 버퍼에 저장 -> 14) SYN 플래그를 설정한 TCP 헤더를 생성해 TCP 헤더를 넘김 -> 15) TCP 헤더 앞에 IP 헤더를 추가해 IP 패킷을 생성한 뒤 데이터 링크 계층으로 넘김 -> 16) ARP 캐시 테이블을 참조해 IP 패킷에 이더넷 헤더를 추가해 물리 계층으로 이더넷 프레임을 넘김 -> 17) 이더넷 프레임을 비트로 변환해 라우터로 비트를 유니캐스트 전송 -> 18) 목적지 서버로부터 ACK/SYN 플래그가 오면 전송 계층에서 ACK 플래그를 설정한 TCP 헤더를 생성해...(후략) -> 19) 3-way Handshake를 마치면 버퍼에 저장했던 페이로드를 추출한 다음 페이로드를 여러개로 단편화. 조각난 페이로드 각각에 TCP 헤더를 추가해 TCP 세그먼트 생성 후 네트워크 계층으로 TCP 세그먼트를 넘김. -> 20) 각각의 TCP 세그먼트에 IP를 추가해 IP 패킷을 생성한 뒤 데이터 링크 계층으로 넘김 -> 21) ARP 캐시 테이블을 참조해 IP 패킷 앞에 이더넷 프레임을 생성한 뒤(후략)

12) LAN/WAN 영역의 이해
* 맥 주소가 없으면 플러딩 방식으로 전송할 수 밖에 없다. 스위치가 허브로 전락한다. 이러한 상황을 인위적으로 유발하게 하는 공격을 맥 플러딩 공격. 스위치의 또 다른 기능은 VLAN을 구현한다. 1개의 LAN 영역에서 여러개의 ARP 영역으로 분할하는 기법. ARP 영역은 ARP 질의를 요청하는 구역. 클래스 A의 경우 호스트 개수가 2^24개가 나온다. 이론상 2^24번 ARP 요청과 응답이 일어난다. 무수한 ARP 요청 응답에 따라 라우팅이 불가능할 수 있다. VLAN 기법은 대규모 ARP 영역을 ARP 영역 크기를 줄이는 기능이다. 예를 들어 192.168.10.0/24 를 2개의 대역으로 구분하면 192.168.10.0/25(서브넷 마스크 255.255.255.128), 192.168.10.128/25. 물리적으로는 같은 공간에 있지만 논리적으로는 다른 LAN 영역. 경우에 따라 스위치에서 VLAN 구현도 하고 라우팅 엔진을 적재해 VLAN 사이를 라우팅으로 연결해주기도 한다. 이러한 라우팅을 L3 스위칭이라고 부른다(또는 인터 VLAN 라우팅).

* 상이한 네트워크 ID(즉 상이한 LAN 영역 사이)를 연결하는 구간을 WAN 영역이라고 부른다. WAN 영역에서 수행하는 일련의 기능을 라우팅이라고 부른다. 라우팅 알고리즘 - 거리 계산 알고리즘에 기반해 출발지에서 목적지까지 가장 빠른 경로를 계산하는 알고리즘. 벨만-포드 알고리즘에 기반한 방식은 RIP(홉 카운트)/BGP(경로 속성), 다익스트라 알고리즘에 기반한 방식은 TCP/IP에 적합하도록 설계된 건 OSPF 방식(경로 척도 대역폭 기반의 코스트). EIGRP는 RIP 방식과 OSPF 방식을 혼합. OSPF는 최상의 경로만 계산하지만 EIGRP는 최상과 차선을 동시에 계산해 복구를 빠르게 수행한다.

13) TCP/IP 네트워크 공격 유형
* 스캐닝 공격, 스니핑/스푸핑 공격, 플러딩 공격 등이 있다.
1) 스캐닝 - 포트 스캔. 어떤 포트를 사용 중인지 사전 정찰
2) 스니핑 - 패킷 분석이라고도 함. 스니핑이 가능한 이유는 TCP/IP는 근본적으로 암호화 기능이 없기 때문. 때문에 제 3자가 페이로드를 볼 수 있다.
3) 스푸핑 - 출발지 주소를 은폐하거나 변경하는 기법. ARP 캐시 테이블과 DNS 캐시 테이블 주소를 조작.
4) 플러딩 - 출발지 IP 주소를 수시로 변경하면서 부하 유발. 흔히 DDoS라고 함.

14) TCP/IP 계층별 취약점 기반 공격 유형
* 데이터 링크 계층 - 맥 플러딩 공격, ARP 스푸핑 공격, VLAN 홉핑 공격, DHCP 고갈 공격, DHCP 스푸핑 공격
* 네트워크 계층 - IP 스푸핑 공격, LAND 공격, ICMP 플러딩 공격, ICMP 스머핑 공격, 티어드롭 공격
* 전송 계층 - TCP SYN 공격(SYN 플러딩), 봉크/보잉크 공격
* 응용 계층 - 무수한 공격이 있다. HTTP GET 플러딩 공격, 슬로우리스 공격, Rudy 공격

15) 보안 알고리즘
* 대칭 암호 알고리즘 - DH 알고리즘(DES/AES)
* 비대칭 암호 알고리즘 - RSA 알고리즘
* 무결성 알고리즘 - MD, SHA, NTLM

16) VPN 기법
* TCP/IP 방식은 모든 페이로드와 헤더가 평문이다. 기밀성 위협 요소에 대응하기 위한 기법이 TCP/IP 방식의 전송 단위 대상으로 암호 알고리즘 적용한 VPN 기법.
* 응용 계층 - SSH VPN, SSL/TLS VPN, PGP VPN, 오직 페이로드 영역만을 암호화->모든 헤더 정보는 읽을 수 있다. 예 SSH 데이터의 경우 페이로드는 읽을 수 없지만 헤더 정보는 읽을 수 있다.
* 네트워크 계층 - IPSec VPN. 네트워크 계층 기반 가장 대표적.

17) IPv6 헤더의 이해
* IPv4와 비교하면 헤더의 구조가 단순하게 보인다. IPv4의 많은 항목들이 빠졌기 때문. 가변적인 v4와 달리 v6 헤더는 40바이트로 고정이다. v6 헤더의 트래픽 클래스 항목은 v4 헤더 ToS 항목과 유사하다. v6 플로우 라벨 항목은 v6 고유 기능이며 서비스 전체에 대한 우선 순위 정보를 저장한다. v6 페이로드 길이 항목은 v4 전체 길이 항목과 유사하다. v6 홉 제한 항목은 v4 TTL 항목과 유사하다. v6는 출발지/목적지 주소 128비트.

더보기



Retrieved from http://hyacinth.byus.net/moniwiki/wiki.php/TCP/IP에 대해
last modified 2023-04-03 19:16:43