카테고리 없음

네트워크 간단정리2

20308박동진 2023. 7. 6. 01:25

스위치란?
- 2계층(데이터링크)에서 동작
- MAC주소를 확인하여 적절한 포트로 전달
- 새로운 정보 수신시 MAC주소와 포트정보를 학습하고 이를 MAC-table에 저장
스위치의 기능
a. 플러딩
- 데이터를 모든 포트로 내보내는 기능, MAC테이블에 수신한 데이터의 정보가 없을 때 수행
b. 포워딩
- 데이터를 특정 포트로 내보내는 기능, MAC테이블에 수신한 데이터의 정보가 있을 때 수행
c. 필터링
- 포워딩이 수행되는 포트를 제외한 나머지 포트를 차단

회선 이중화란?
- 하나의 회선에 장애가 발생하더라도 다른 회선을 통해 데이터 통신을 보장할 수 있도록 토폴로지를 구성하는 것
- 이처럼 언제든지 사용자가 서비스를 이용할 수 있도록 하는 것을 가용성(Available)이라고 함
회선 이중화의 문제점
- 루프(loop)문제가 발생할 수 음(4개의 스위치가 사각형 형태로 묶여있는 경우 각각 무한 루프가 발생함 ex) 1반 -> 2번, 3번 -> 4번 -> 2번,3번 -> 1번 ...)
- 브로드 캐스팅된 데이터로 인해 생겨난 루프는 Broadcast storm이라 칭함
회선 이중화의 문제점 해결(STP프로토콜)
- 루프문제 해결을 위해 쓰이며, 스위치의 특정 포트를 차단하는 역할을 함
- 만약 토폴로지에 장애가 생긴다면, stp로 차단되었던 포트가 재가동되어 기능을 수행함

Vlan이란?
- 일반적으로 각기다른 네트워크(lan)는 3계층(네트워크)장비인 라우터가 관리하지만, 비용의 한계가 있어, 논리적으로 브로드캐스트 영역을 구분하여, 서로 다른 가상의 lan을 구성
- PC들을 하나의 lan에 속하게, 즉 스위치로 묶어놓으면, 같은 브로드캐스트 영역에 포함되는데, 이는 보안상으로 취약함 = 자신의 데이터가 다른 PC에 실수로 전달될 수 있기 때문
- 라우터를 사용하면 서로 다른 브로드캐스트 영역에 포함되며, 간섭없이 데이터 통신을 진행할 수 있고, 필요에 따라 라우터의 중계를 통해 다른 lan으로 데이터 전송 가능

스위치 재밍(Switch Jamming)이란?
- MAC테이블의 용량이 모두 사용되면, 일반 허브(연결다리)처럼만 사용됨 = 플러딩만 사용, 이러한 스위치의 특징을 악용하여, 의도적으로 MAC테이블을 포화시키는 공격
- 스위치 재밍을 통해 상대방의 데이터를 은밀하게 감청하는 공격 기법을 스니핑(Sniffing)이라고 함
- 스위치 재밍은 "1. 스위치가 주변 장치들의 정보를 학습 -> 2. 공격자가 아무 패킷을 위조생성하여 스위치에 전송 -> 3. 해당 스위치가 해당 패킷을 학습하여 MAC테이블이 포화상태가 됨 -> 4. 모든 데이터를 플러딩함" 의 순서를 가진다.
스위치 포트 시큐리티(Switch Port Security)
- 특정 포트에 접근할 수 있는 MAC주소를 사용자가 직접 등록하여 이 외의 다른 MAC주소는 학습하지 못하게함

--------------------------------------

라우터란?
- 3계층(네트워크)에서 동작
- 데이터의 IP주소를 확인하여 목적지 네트워크로 향하는 최적의 포트로 전달하는 장비
- 설정된 라우팅 프로토콜(rip, ospf, eigrp 등)에 의해 라우팅 테이블에 최적의 경로 정보가 저장
ACL(Access Control List)란?
- 라우터에서 송/수신되는 패킷에 대한 특정 조건 설정 -> 패킷 전송 허용/거부하여 트래픽을 관리
a. Standard ACL : 패킷을 보낸 송신측 IP주소만을 검사
b. Extended ACL : 패킷을 보낸 송신측 IP주소 뿐만 아니라, 수신측 IP주소, 프로토콜, 포트번호 등을 검사

--------------------------------------

라우터 VS 스위치
- 스위치는 2계층 주소인 MAC주소를 사용하지만, 라우터는 3계층 주소인 IP주소를 사용
- 스위치는 하나의 lan안에서의 데이터 전달을 담당(Vlan사용시 여러개의 lan사용 가능)하지만, 라우터는 서로 다른 lan간의 데이터 전달을 담당
- 스위치는 MAC테이블의 학습에 의해 데이터가 전달되지만, 라우터는 미리 최적의 경로를 계산하여 이에따라 데이터를 전달함  

--------------------------------------

방화벽(Firewall)이란?
- 내부 내트워크와 외부 네트워크 중간에 위치, 해당 위치를 기준으로 들어오거나 나가는 데이터를 검사하여,  미리 정해둔 보안 규칙에 따라 접근을 허용/거부하여 트래픽을 필터링 = ACL
- 방화벽의 종류는 각각 Packet filtering 방화벽, Application Gateway 방화벽, Stateful inspection 방화벽 이 있으며 그 의미와 사용처는 다음과 같음
a. Packet Filtering 방화벽(1세대) : 
- 3계층(네트워크)와 4계층(전송)에서 동작
- 접근한 패킷의 IP주소와 포트번호를 검사
- 처리속도가 빠르지만, 3계층과 4계층의 헤더만을 검사하여 데이터의 내용(=Payload)를 대상으로 한 공격은 차단하지 못함
b. Application Gateway 방화벽(2세대) : 
- 3계층에서 7계층(응용)까지 동작
- 피킷의 헤더 뿐만 아니라 내용까지 검사하여 응용계층의 서비스 까지도 필터링 수행 가능
- 필터링 범위가 확장됨에 따라 동작이 많아져 네트워크에 더 많은 부하를 줄 수 있음
c. Stateful inspection 방화벽(3세대) : 
- 1세대 방화벽과 2세대 방화벽의 장점만을 혼합하여 모든 계층에서 사용 가능

--------------------------------------

TCP/IP 모델이란?

- 5. 응용(HTTP, DNS) : 메시지 = 데이터 자체
- 4. 전송(TCP, UDP) : 세그먼트 = 전송 계층 헤더(포트번호) + 데이터
- 3. 네트워크(IP, ARP, ICMP) : 패킷 or 데이터그램 = 네트워크 계층 헤더(IP주소) + 데이터
- 2. 데이터링크(Etehrnet) : 프레임 = 데이터링크 계층 헤더(MAC주소) + 데이터 + 데이터링크 계층 트레일러(오류검출)
- 1. 물리 : 비트열 = 01101001....
++
모든 계층에서 PDU를 패킷으로 통용하기도 하는데 사실 그냥 패킷이라고 부르는 거지 진짜 패킷은 아님/ 그냥 PDU를 패킷이라고 부르는 거

--------------------------------------

포트 번호(Port Number)
- 정확한 목적지로 데이터를 전송하기 위해서는 IP주소, MAC주소, 포트번호가 모두 필요함
- MAC주소는 복적지를 가는데 거치게 되는 중간 장치(MIddle Point)를 식별할 때 사용하고, IP주소는 목적지인 종단 장치(End Point)를 식별할 때 사용
- 포트 번호는 16비트의 크기를 가졌으며, 0~65535의 값을 가짐
- 포트 번호는 3가지로 나뉘며, 각각 Well-known Port, Registered Port, Dynamic Port로 나뉨
a. 잘 알려진 포트(Well-known Port) : 0~1023, 서버가 사용, HTTP서버는 80, DNS서버는 53처럼 고유한 값의 포트 번호가 부여됨
b. 등록된 포트(Registered Port) : 1024~49151, 특정 기관 및 사업가들이 사용
c. 동적 포트(Dynamic Port) : 49156~65535, 클라이언트가 사용, 서버와 달리 통신 할 때마다 바뀜 

--------------------------------------

HTTP란?
- 인터넷(웹)을 통해 데이터를 주고받기 위해 사용되는 프로토콜로 "클라(Request) - 서버(Response)" 형태를 띔
- 전송 계층 프로토콜인 TCP를 사용하며, 신뢰성을 중시하는 연결 지향형 프로토콜임
- 통신 이전에 3hand-shaking(syn(request), ack+syn(response), ack(request))을 통해 우선 클라와 서버 간 연결을 설정 한 후, 4hand-shaking(fin(request), ack(response), fin(response), ack(request))을 통해 현결을 해제
** syn : 연결 요청
** ack : 요청 수락
** fin : 연결 해제 요청
++ HTTP는 Scheme : 자원에 접근하기 위해 사용 , Host : 서버의 주소(도메인 혹은 IP), Path : 구체적인 주소 로 나누어져 있으며 각각 "https://", "www.naver.com", "/blog/view?seq = 40"과 같음

HTTP Request메시지
- 시작줄, 헤더, 공백줄, 바디로 이루어져있으며, 공백줄은 꼭 있어야함
a. 시작줄 : 클라이언트가 요청하는 서비스에 대한 정보
1. 메서드 부분 : Get, Post로 나뉘며, 각각 서버의 데이터를 보고싶은 경우, 데이터를 보내고 싶은 경우로 나뉨
2. 경로 : 요청하는 자원의 경로
3. 버전 : 현재 사용하는 HTTP의 버전
b. 헤더 : HTTP통신에 관련된 부가적인 요소인 서버의 주소, 데이터의 크기등이 나타남
c. 공백줄 : 헤더와 바디를 구분하기위해 사용, 없어서는 안됨
d. 바디 : 실질적으로 전송되는 데이터로 get메서드를 사용한다면 아무내용도 작성되지 않지만, post를 사용하면 작성가능
 
HTTP Response메시지
- 시작줄, 헤더, 공백줄, 바디로 이루어져있으며, 공백줄은 꼭 있어야함
- request와 시작줄만 다르고 비슷함
a. 시작줄 : 서버가 응답하는 서비스에 대한 정보
1. 버전 : HTTP의 버전
2. 상태코드 : 현재 응답한 자원의 상태를 나타내는 3자리 번호(200은 요청의 성공, 404는 소실을 나타냄)
3. 상태 문구 : 상태코드에 대한 간단한 설명(200 ok, 403 forbidden, 404 not found)

--------------------------------------

DNS란?
- 도메인 이름만 입력해도 자동으로 IP주소로 바꾸어 도메인 주소만으로도 해당 서버에 접속할 수 있도록 도와주는 프로토콜
- UDP의 지원을 받아 통신이 이루어지며, TCP의 신뢰성 기반이 아닌,속도 중심의 비연결형 프로토콜이기 때문에 3/4 way hand-shaking과 세션 연결 과정이 존재하지 않음

--------------------------------------

TCP란?
- 신뢰성 및 안정성이 보장되는 데이터 통신을 지원하는 프로토콜
- 3/4 Way hand-shaking, 순서 번호(Sequence Number) & 오류 제어(Error Control), 응답(Acknowledgement) 세그먼트 가 존재
a. 3/4 Way hand-shaking : 위의 설명과 같음
b. 순서 번호(Sequence Number) & 오류 제어(Error Control) : 송신측은 세그먼트의 캡슐화를 진행 할 경우, 순서 번호를 부여하고, 이 번호에 따라 데이터를 전송하는데 이 때 특정 세그먼트가 도착하지 않았다면 그 번호부터 재전송을 요청
c. 응답(Acknowledgement) : 수신측은 반드시 송신측에게 데이터가 정상적으로 도착했음을 알리는 Ack를 보내야함, 마지막으로 보낸 세그먼트의 +1한 값을 Ack로 보냄( 0,1,2 까지 세그먼트를 받았으면 3부터 보내라는 의미의 Ack 3을 요청함)

--------------------------------------

UDP란?
- 속도가 가장 중심이 되는 비연결 지향형 데이터 통신을 지원하는 프로토콜
- 추가적인 지연을 발생시키는 handshake과정이 존재하지 않음
- 이미 전송한 데이터에 대해서 어떠한 관리도 하지 않음(잘 도착 했냐는 것 따위는 물어보지 않음)

--------------------------------------

IP란?
- 송신 측 호스트에서 전송한 데이터를 올바른 수신 측 호스트에게 무사히 전달하기 위해 사용되는 프로토콜
a. IP주소 : 네트워크에 접속한 모든 호스트에게 부여되는 32비트 크기의 주소, 이를 통해 송/수신 측 호스트를 식별(IP주소 고갈로 인해 128비트의 IP버전 6으로 대체될 예정)
b. 라우팅 : 라우터와 IP주소를 사용하여 데이터의 목적지 네트워크로 향하는 최적의 경로를 계산하고, 해당 경로로 데이터를 전달
c. TCP/UDP 사용
- IP의 헤더에서 네트워크에서 한 번에 전송할 수 있는 패킷의 최대 크기를 MTU(Maximum Transmission Unit)이라 하고, 만약 패킷의 크기가 이를 초과할 경우 더 작은 크기로 분할하여 전송하는데 이를 "단편화"라고 함
- IP의 헤더에서 해당 패킷의 남은 수명을 나타내는 영역을 TTL(Time To Live)라고 하며, 패킷이 통과할 수 있는 홉(Hope)수가 작성되어있음

ICMP란?
- IP프로토콜의 산하 프로토콜
- 이미 발생했거나 혹은 발생할 수 있는 오류를 진단하기 위해 사용
- 보통 ping이 실행될 때 동자가기 때문에 5계층과 4계층의 개입 없이 바로 3계층부터 캡슐화가 시작
++ ping은 상대방과의 통전, 연결상태를 확인하기 위해 사용됨

--------------------------------------

ARP란?
- 자신이 원하는 장치에게 데이터를 전송하기 위해서는 IP주소와 MAC주소가 모두 필요한데 둘 중 하나만 알면 전송이 불가능 하므로, 현제 알지 못하는 주소를 찾아오기 위해 ARP, PARP를 사용(ARP : MAC주소, PARP : IP주소)
ARP동작과정
- ARP는 MAC 주소를 알아와야 하는데 이는 모두 자신과 같은 네트워크에 속한 장치의 MAC주소이기 때문에, ARP패킷 교환은 네트워크 내부에서만 이루어짐 -> 라우팅 사용 X
- 바로 3계층부터 캡슐화가 시작됨
1. 상대방의 MAC주소를 알아와야하는 송신 측 호스트는 ARP 패킷을 구성하여 자신이 속한 네트워크의 모든 호스트에게 Broad Casting함
2. 해당 패킷을 받으면 Uni Casting으로 송신 측 호스트에게 MAC주소가 담긴 ARP패킷을 보냄