web hacking(Knockon Bootcamp)

[1주차 TIL] KnockOn Bootcamp, Protocol

king-neo 2024. 12. 4. 17:06

Protocol, OSI 7계층

 

프로토콜(Protocol)

프로토콜은 네트워크에서 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙, 약속체계이다.

 

OSI 7계층

OSI(open system interconnection) 모델은 네트워크 통신 기능을 할 수 있도록 만든 개념 모델이다.

OSI 7계층 네트워크 통신을 7개의 계층으로 나눈 모델이다.

각 계층의 특정 기능을 담당하여 통신이 일어나는 과정을 확인할 수 있다.

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/

1. 물리 계층(Physical Layer)

이 계층에서는 주로 전기적, 기계적 특성을 이용하여 통신 케이블로 데이터를 전송한다.

데이터 단위(PDU)는 비트(bits)이며, 0과 1로 나타낸다. 관련 장치는 허브와 리피터가 있다.

이 계층에서는 오직 데이터를 전기적 신호로 변환해서 주고받는 기능만 한다. 

데이터가 무엇인지, 에러가 있는지를 확인하지 않는다.

 

2. 데이터 링크 계층(DataLink Layer)

이 계층은 물리적 매체를 통해 데이터 전달을 수행할 수 있게 도와준다.

그래서 오류를 탐지하고 수정하여 재전송하는 기능도 있다.

데이터 단위(PDU)는 프레임(frame)이다. 관련 장치는 브리지, 스위치가 있다.

MAC 주소라는 물리적 주소를 사용하여 각 기기들을 구분한다.

-Protocol : 이더넷, PPP

 

3. 네트워크 계층

이 계층은 네트워크를 논리적으로 구분하는 계층이다.

데이터 단위(PDU)는 패킷(packet)이다. 관련 장비는 라우터가 있다.

라우팅 프로토콜을 통해 데이터를 전송하는 최적의 경로를 찾아낸다.

-Protocol : IP, ICMP

 

4. 전송 계층(Transport Layer)

이 계층은 서비스를 구분하고 사용자 사이의 신뢰성 있는 데이터 전달하는 담당이다.

이 계층에서 사용하는 프로토콜의 사용 목적이 다르다.

신뢰성있는 데이터 전송은 TCP, 빠른 데이터 전송은 UDP 이다.

TCP 데이터 단위(PDU)는 세그먼트이며 작은 패킷으로 나눠 데이터를 전송하여 패캣을 조립하여 데이터를 전달한다.

UDP 데이터 단위(PUD)는 데이터그램은 순서와 상관없이 데이터를 전달한다.

-Protocol : TCP, UDP

 

5. 세션 계층(Session Layer)

이 계층은 두 기기 사이의 통신의 연결 관리한다. 통신 시작과 종료 시간까지를 세션이라고 한다. 

이 계층은 데이터 전송을 체크포인트와 동기화한다.

만약 데이터 전송을 100MB 전송하는데 체크포인트 5MB를 설정한다면 54MB에서 연결이 끊어지거나 충돌이 발생하면 마지막 체크포인트로 50MB부터 시작한다.

-Protocol : SSH, TLS, RPC 

 

6. 표현 계층(Presentation Layer)

이 계층은 데이터를 준비하는 역할을 하며 데이터의 변환, 암호화, 압축을 담당한다.

통신 장치에서 받은 수신 데이터가 인코딩 방법이 다를 수 있어 데이터 변환하는 일을 한다.

서로 통신할떄 데이터를 암호화하여 보내고 수신자에게는 따로 디코딩하여 데이터를 읽기 쉽게 제시한다.

5계층으로 전송하기 전에 데이터를 압축한다.

-Protocol : ASCII, JPEG

 

7. 응용 계층(Applicaiton layer)

사용자와 직접 상호 작용하는 유일한 계층이다. 웹 브라우저와 같은 소프트웨어을 이용한다.

 소프트웨어가 사용자에게 의미 있는 데이터를 제공하기 위해 의존하는 프로토콜과 데이터를 조작하는 역할한다.

응용 계층에서의 프로토콜은 HTTP와 SMTP(이메일 통신 프로토콜)가 있다.

-Protocol : HTTP, Telnet, SMTP

 

TCP, UDP

TCP, UDP은 전송 계층에서 사용하는 프로토콜이다.

 

TCP(Transmission Control Protocol)

TCP는 연결 기반이므로 데이터를 전송하는 동안 수신자와 발신자 사이에 연결을 설정하고 이를 유지한다.

데이터가 완전히 온전하게 도착하도록 보장한다.

 

[TCP의 특징]

  • 연결 지향 방식으로 패킷 교환 방식을 사용한다 해제한다.
  • 3 way-handshake 과정을 통해 연결을 설정, 4 way-handshake을 통해 해제한다.
  • 흐름 제어 - 데이터 처리 속돌르 조절하여 수신자의 버퍼 오버플로우 방지
  • 혼잡 제어 - 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
  • UDP보다 속도 느림 
  • Point to Point(각 연결이 정확히 2개의 종단점), Full-Duplex(전송이 양방향으로 동시에 일어남)방식

3 way-handshake

3 way-handshake 과정은 발신자와 수신자 사이에 논리적인 세션을 성립(연결)하는 과정이다.

1. 클라이언트가 SYN(연결 확인용 무작위 숫자 값)를 보내고 SYN_SENT 상태로 대기

2. 서버는 SYN-RECEIVED 상태로 바꾸고 SYN과 응답 ACK(SYN+1 값으로 응답 내용)보냄

3. SYN,ACK 받은 클라이언트는 ESTABLISHD(연결 수립 완료, 데이터 교환 가능) 상태로 변경 후 ACK 보냄

4. ACK 받은 서버는 ESTABLISHED 상태 변경

 

4 way-hanshake

TCP의 연결 해제 과정이다.

1. clsoe 실행한 클라이언트가 FIN 보내고 FIN-WAIT-1 상태 대기

2. 서버는 CLOSE-WAIT 바꾸고 ACK 전달, 동시에 해당 포트에 연결되어 있는 애플리케이션에게 CLOSE 요청

3. ACK 받은 클라이언트는 FIN-WAIT-2 변경

4. close 요청 받은 서버 애플리케이션은 종료 프로세스 진행, FIN을 클라이언트에게 보내고 LAST_ACK 상태 바꿈

5. FIN 받은 클라이언트는 ACK를 서버에 다시 전송 후 TIME-WAIT 상태 바꿈

시간이 지나면 TIME-WAIT에서 CLOSED로 된다. ACK 받은 서버도 포트를 CLOSED로 닫음.

 

UDP

TCP와 달리 비연결형 프로토콜이다.

그래서 연결을 위한 할당되는 논리적 경로가 업속, 각각의 패킷은 다른 경로로 전송됨

 

[UDP의 특징]

  • 비연결형 서비스로 데이터그램 방식을 제공
  • 낮은 신뢰성 - 일부 패킷 누락되도 데이터 전송하므로 패킷 손실남
  • 1:1, 1:N, N:N 통신 - 브로드캐스트, 멀티캐스트 기능을 통해 여러 수신자에게 데이터 전송 가능
  • TCP 보다 속도가 빠르다

TCP와 UDP 차이

TCP/IP

TCP/IP는 두 개의 기기 간에 데이터 전송하는 프로토콜이다.

TCP는 위와 같이 한 기기에서 다른 기기로 데이터 전송하는 것을 담당한다.

IP(Internet Protocol)는 패킷 단위로 분할하여 대상 IP 주소로 데이터를 전달한다.

그래서 두 프로토콜은 결국 같은 결과의 목표로 하기 떄문에 TCP/IP로 한 명칭으로 쓰여진다.

 

 

[IP의 특징]

  • 패킷 전달 여부 보장 x
  • 패킷을 보낸 순서와 받는 순서가 다를 수 있음

[TCP 특징]

  • IP 위에서 동작
  • 데이터의 전달 보증
  • 보낸 순서대로 받게 함

TCP/IP 프로토콜은 IP의 특성인 IP 주소 체계를 따르며 IP 라우팅을 이용하여 목적지에 도달하며 TCP 특성을 활용하여 신뢰성와 효율을 극대화 시킨다.

 

IPv4, IPv6

  IPv4(Internet Protocol version 4) IPv6 (Internet Protocol version 6)
형식 32비트 주소 체계 128비트 주소 체계
주소 표현 4개의 8비트 숫자 구성
0~ 255 값과 점(.)으로 구분
ex) 192.168.0.0
16비트씩 8개 그룹 구성
각 그룹은 16진수 표현과 콜론(;) 구분
ex)1050:0000:0000:0000:0005:0600:300c:326b
주소 공간 약 43억개 고유 주소 제공 거의 무한대로 가까운 주소, 2^128개 주소 사용 가능
헤더 크기 가변 고정
보안 Ipsec 프로토콜 별도 설치 Ipsec 자체 지원
특징 대부분 웹사이트에서 지원
서브넷 문제 발생(네트워크 내의 네트워크)
웹사이트 지원x
구성하기 어려워 구현 중 오류 발생 가능성 ↑

DNS

도메인 이름 시스템(DNS: Domain Name System)으로 사람이 읽을 수 있는 도메인 이름을 IP 주소로 변환하는 것이다.

 

[DNS의 특징]

  • 계층 구조 - 도메인 이름에는 최상위 도메인(TLD), 2차 도메인 등 구분한다.                                                                  ex) www.example.com의 도메인에서 최상위 도메인은 com이고 2차 도메인은 example이다.
  • DNS 서버 계층 - 사용자 요청으로 최상위 DNS 서버부터 차례대로 IP 주소를 찾아낸다.
  • 캐싱 - 이전에 검색한 도메인 이름과 IP 주소의 정보를 저장하여 빠르게 접근할 수 있다.

[DNS의 단점]

  • DNS 시스템은 DNS 서버에 크게 의존되어 서버가 마비되면 도메인 접근을 못한다.
  • 보안 취약성 - 평문으로 통신하여 중간자가 가로채거나 변조될 가능성이 높다.

https://velog.io/@zinukk/9kpyzbdt

DNS 동작 원리

  1.  클라이언트가 도메인 이름을 입력한다.
  2.  사용자 요청으로 Local DNS 서버에게 DNS 쿼리(DNS 서버에게 Ip 주소 변환 요청)를 보내 IP 주소로 변환한다. 
  3.  만약 Local DNS 서버에 IP 주소가 없으면 다른 DNS 서버에게 DNS 쿼리를 보내 IP 주소를 찾는다.
  4.  최상위 DNS 서버(TLD)에게 IP 주소를 받아 사용자에게 IP 주소를 전달한다.                                                              그리고 Local DNS 서버는 캐싱하여 IP 주소를 저장한다.
  5.  사용자는 받은 IP 주소로 웹사이트를 접근한다.

 

포트(Port)

포트는 네트워크의 연결과 종료의 종단점이다. 각 포트에는 특정 서비스와 프로세스에 연결한다.

포트는 IP 주소와 함께 쓰면서 프로세스에 연결한다.

 

[포트의 특징]

  • 포트 번호는 0 ~ 65535 까지 쓰이는데 포트 번호르 세 가지로 구분할 수 있다.
    • Well-Known Port ( 0 ~ 1023 ) - 시스템 사용 번호로 잘 알려진 서비스가 등록되어 있다.                                          ex) 80 - HTTP, 443 - HTTPS, 22 - SSH, 21 - FTP 
    • Registerd Port ( 1024 ~ 49151 ) - 기관이나 회사들이 등록되어 있어 특정 어플리케이션에 사용한다.                    ex) 3306 - MYSQL 데이터베이스, 
    • Dynamic Port ( 49152 ~ 65535 ) - 클라이언트 어플리케이션으로 임시로 사용하다가 해제된다.
  •  OSI 4 계층인 전송 계층에서 사용되며 TCP/UDP 프로토콜와 함꼐 사용한다.
  • 하나의 IP 주소로 포트 번호로 여러 어플리케이션을 구분한다. 

포트포워딩

포트포워딩은 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 전송하는 것이다. 즉, 포트를 전달하는 역할이다.

 

 목적 - 가정용 네트워크와 원격 기기 사이에 연결하는데 쓰인다. ex) 원격 데스크톱, 집에 NAS 서버 연결, 가정용 CCTV

 

 원리 - 외부에서 들어온 IP 주소와 포트 번호 들어오면, 라우터 or 방화벽을 통해 설정된 내부 네트워크이 IP 주소와 포트   번호를 전달한다.

 ex) 외부 IP 주소와 포트 번호 8080이 들어온다면 내부 네트워크 IP 주소와 포트 번호 80 으로 전달하여 접근하게 한다.