본문 바로가기
Hacking/Hacking Beginner Class (normaltic)

[해킹 비기너 클래스] 2주차 정리 (네트워크에 대해)

by st-og 2023. 7. 21.

2주 차에선 기본적인 네트워크에 대해 알아봤다.

 

멀리 떨어져 있는 사람과 대화를 하기 위해서 우리는 편지라는 것을 사용해 대화를 한다.

보내는 사람, 받는 사람, 내용, 우편방법, 등기로 보내는지 또는 기본 우편으로 보내는지 등..

여러 정보를 적은 다음 편지를 전송하면 상대방에게 도착하게 된다.

 

컴퓨터도 이것과 비슷하게 편지를 주고받는다 

컴퓨터에서 이러한 편지를 패킷이라 하며, 컴퓨터가 편지를 주고받을 수 있게 하는 것을 네트워크라 한다.

 

컴퓨터가 패킷을 보내기 위해 단계별로 하는 일에 대해 약속해 둔 것이 있는데 그걸 우리는 osi 7 layer라고 한다.

현재는 tcp/ip 5 layer로 사용하지만 개념은 비슷하니 좀 더 세부적인 osi 7 layer로 개념을 읽히는 것이 좋다.

 

osi 7 layer는 말 그대로 7 계층이 있다. 각 계층은 이렇게 약속되어 있다.

애플리케이션 계층
프레센테이션 계층
세션 계층
트랜스포트 계층
네트워크 계층
데이터 링크 계층
물리 계층

네트워크 통신은 1 계층부터 4 계층까지 일어나기에 1~4 계층까지만 알아볼 것이다.

해당 계층들을 편지에 비유해 보며 알아보자.

● 4 계층   트랜스포트 계층 (등기로 보내기 or 기본 우편으로 보내기) [TCP/UDP]

우리는 편지를 상대방에게 보낼 때 어떤 방식으로 보낼지 고민해야 한다.

느리지만 확실하게 상대방에게 보낼 수 있는 등기로 보낼지

아니면 빠르긴 하지만 상대방이 받을지는 모르는 기본 우편으로 보낼지

 

두 개 다 뭐가 더 좋다고 확정 지을 수는 없다.

그저 전달이 더 우선이 된다면 등기를, 속도가 우선이 된다면 기본 우편을 고르면 된다.

 

패킷 전달도 등기와 우편을 고를 수 있다.

패킷에서 등기는 TCP라 불리고, 기본 우편은 UDP라 불린다.

 

 

TCP

TCP는 속도가 느린 대신 상대방과의 연결이 확실하게 됐을 때 데이터를 전송한다.

TCP가 상대방과의 연결을 확인하는 방법은 3 way handshake라는 것을 사용하는데

말 그대로 3번 악수한다는 뜻이다

 

컴퓨터 A와 B가 TCP통신한다고 예를 들어보자

 

1. 컴퓨터 A가 처음에 악수를 신청할 것이다. A는 B를 처음 보니까 "잘 지내?"라는 말을 건넨다.

    이때 "잘 지내?"라는 내용의 패킷을 SYN패킷이라 한다.

 

2. B는 A의 질문에 대한 대답으로 "응 잘 지내!"라고 답을 하며 B도 A에게 똑같이 "잘 지내?"라는 말을 건넨다.

   이때 "응 잘 지내!"라는 대답을 ACK패킷이라 한다.

 

3. A는 B에게 "잘 지내?"라는 질문을 받았으니 "응 잘 지내!"라고 다시 답을 해주게 되고

    A와 B는 연결을 성공할 수 있게 됐다.

 

해당 과정을 3 way handshake라고 부른다.

https://www.techopedia.com/definition/10339/three-way-handshake

 

TCP는 주로 중요한 정보를 전송하거나, 신뢰성이 필요한 전송을 할 때 사용되며 파일 전송, 웹 브라우저 등에 사용된다.

 

UDP

UDP는 상대방과의 연결 없이 데이터를 보내는 프로토콜이다. 

우리가 상대방에게 일반 우편으로 편지를 보내면 상대방이 받았는지 안 받았는지 확인할 수 없다.

하지만 특별한 과정이 없기 때문에 등기보다 빠르게 보낼 수 있다.

UDP도 그러하다. TCP만큼의 과정이 없이 그저 데이터를 보내기 때문에 훨씬 빠른 속도로 전송할 수 있다.

 

UDP는 신뢰성은 없지만 전송 속도가 빠르기 때문에 실시간 영상 서비스나 인터넷 전화 등에 사용된다.


● 3계층   네트워크 계층 (받을 사람 주소 적기) [IP Adress]

편지를 어떤 방식으로 보낼지 정했으면 받는 사람의 주소를 적어야 한다.

예를 들어 A라는 사람이 주소가 경기도 성남시 분당구 1호에 사는 B라는 사람에게 편지를 보내게 되면

제일 먼저 경기도를 찾아 간 다음 성남시로 가서 분당구를 찾고 1호를 찾아서 전달을 해야 한다.

 

컴퓨터에서는 주소를 경기도 성남시... 이렇게 사용하지 않고 IP라는 것을 통해 표현한다.

IP는 8비트씩 4자리로 표현되며 도,시,구,처럼 구분 되는 것을 .으로 표현한다

ex)
경기도   성남시  분당구  1호
  192 .       168.         0.     1
(              지역             ) (동네)

 

우리는 위의 주소를 보면 "분당구에 가서 1호의 B를 찾으면 되겠네?"라고 생각할 수 있지만

컴퓨터는 어디까지가 지역을 나타내고 1호를 어디서 찾아야 하는지 모른다.

그렇기에 우리는 받는 사람 주소와 넷마스크라는 것을 함께 첨부해 지역과 동네를 구분지을수 있게 해 준다.

 

넷마스크란?

넷마스크란 네트워크의 규모를 알 수 있게 해주는 것으로 IP와 동일하게 8비트씩 4자리로 표현되며

2진수 변환 시 앞에서부터 연속되는 1의 모양을 하고 네트워크 대역(지역)은 1, 호스트 대역(동네)은 0으로 표현된다

넷마스크와 IP 주소를 AND 연산을 해 나오는 값으로 네트워크 대역을 확인할 수 있다.

ex)
192.168.0.1  255.255.255.0
(      IP      )     (넷마스크)

255.255.255.0 -------> 11111111 . 11111111 . 11111111 . 00000000
                                     (                    지역               )     (   동네   )
AND 연산 시)
192.168.0.1 ---------->   11000000 . 10101000 . 00000000 . 00000001
255.255.255.0 ------->   11111111  .  11111111  . 11111111   . 00000000
------------------------------------------------------------------------------------------------
192.168.0.0 <--------     11000000 . 10101000 . 00000000 . 00000000

넷마스크와 AND연산 후 192.168.0.0 네트워크 대역인 것을 확인할 수 있다.


2 계층 데이터 링크 계층 (동네에서 받을 사람 찾기) [MAC Adress]

우리가 편지를 전달하러 간다고 생각해 보자. 우리는 3 계층에서 지역을 알아냈기에 해당 지역까지는 갈 수 있다.

하지만 우리가 분당구까지 갔다 하더라도 1호의 B라는 사람을 찾기란 쉽지 않을 것이다.

우리가 B를 찾기 위해 할 수 있는 방법이 뭐가 있을까?

주변 사람들에게 "B는 어디에 있어요?"라고 물어보면 언젠가 나오지 않을까?

 

컴퓨터에서도 이러한 일이 일어난다. 192.168.0.0 네트워크 대역에서 모든 PC에게 "192.168.0.1이 어디에 있어요?"라고

물어보면 될 것이다. 하지만 아무도 192.168.0.1이 어디에 있는진 모를 것이다.

왜냐하면 같은 네트워크대역 안에서는 MAC주소라는 것을 통해 서로를 식별한다.

그렇기에 우리는 192.168.0.1의 IP를 가진 MAC주소를 알아내야 하는 것이다.

이때 사용되는 것이 ARP이다.


ARP란?

ARP란 쉽게 말하면 IP주소를 가지고 MAC주소를 알아내기 위해 사용되는 패킷이다

각 PC의 MAC주소는 스위치의 MAC Adress Table에 저장되어 있는데 저장되어 있지 않는 ip가 요청되면

해당 네트워크 대역에 "누가 192.168.0.1이야? 너 MAC주소 좀 알려줘!"라는 내용의 패킷이 뿌려지게 된다

그럼 192.168.0.1의 PC에서는 "내가 192.168.0.1이야! 내 MAC주소는 02:05:24:.... 이야!"라고 답장을 스위치에게 보내게 되고 스위치는 해당 정보를 MAC Adress Table에 저장하게 된다.


 

1 계층● 물리 계층 (전달하기)

상대방의 위치를 정확히 알게 됐으니 이제 직접 가서 주기만 하면 된다.

컴퓨터에서는 인터넷 선을 통해 전기 신호로 전송하는 것과 같다.


정리

계층 실제 편지 PC 패킷
트랜스포트 계층 등기 or 일반 우표 TCP or UDP
네트워크 계층 경기도 성남시 분당구 192.168.0.0
데이터링크 계층 1호에 사는 B씨 192.168.0.1의 MAC Adress
물리 계층 직접 전달 전기 신호 전송