[인공지능 보안을 배우다] 네트워크 추가공부_0120

daniayo·2025년 1월 20일

아 오늘도 너무 하기 싫은데.. 오늘도 공부 아닌 것 같은데.. 요즘 왜이렇게 공부가 하기 싫을까... 정신을 못차린건가아ㅏㅏ아악

Ch.3 네트워크의 공통 언어 TCP/IP

IP 주소 설정

네트워크에 접속할 때는 물리적인 접속논리적인 접속 단계가 있다.
1. 물리적인 접속 : 인터페이스에 케이블을 연결하는 등 물리적인 신호를 주고받을 수 있게 한다.
2. 논리적인 접속 : 인터페이스에 IP 주소 / 서브넷 마스크를 설정한다.
IP 주소 설정의 경우, DHCP 등의 기술로 자동으로 설정하게 하는 경우가 많다.

공인 주소, 사설 주소

IP 주소의 이용 범위에 따라, 공인 IP 주소사설 IP 주소로 분류된다.

공인 주소는 인터넷에서 이용하는 주소다.
인터넷에서 통신하기 위해서는 반드시 공인된 주소가 필요하다.
또한, 공인 주소는 인터넷 전체에서 중복되지 않도록 관리된다.

사설 주소는 사내 네트워크에서 이용하는 주소다.
사설 네트워크에서 그대로 인터넷에 통신할 수 는 없다.
다른 네트워크의 사설 주소가 겹치더라도 사설 네트워크 안의 통신에는 전혀 문제가 없다.

NAT

출발지가 사설 네트워크, 목적지가 공인 주소이면 요청은 서버로 문제 없이 보낼 수 있다.
인터넷에서는 목적지가 사설 주소로 된 IP 패킷은 반드시 폐기된다.

< NAT의 주소 변환 구조 >
1. 사설 네트워크에서 인터넷으로 요청을 전송할 때, 출발지 IP 주소를 변환한다.
2. 라우터는 나중에 원래대로 되돌리기 위해 변환한 주소의 대응을 NAT 테이블에 보존해 둔다.
3. 요청에 이한 응답이 라우터로 돌아오면, 목적지 IP 주소를 변환한다. 이때, NAT 테이블에 보존해 둔 주소의 대응을 이용한다.

NAPT : 복수의 사설 주소를 하나의 글로벌 주소에 대응시키는 주소 변환

ICMP

IP로 데이터를 다른 호스트에 전송하지만, IP에는 제대로 도착했는지 확인할 방법이 없다. 도달하지 못한 이유도 알 수 없다.
최선형 : ' 데이터를 보내기 위해 최선을 다하겠지만, 안 되도 어쩔 수 없지 '

ICMP : 별도로 IP에 의한 엔드투엔드 통신이 정상적으로 이루어졌는지 확인하는 기능의 프로토콜

  • 에러 리포트 : IP 패킷을 폐기했다면, 폐기한 기기가 ICMP를 이용해 폐기한 IP 패킷의 출발지로 에러 리포트를 전송하며, 이를 도달불능 메시지라고 부른다.
  • 진단 기능 : IP의 엔드투엔드 통신이 가능한지 확인하는 기능이다. 예시로 ping 커맨드로 ICMP 에코 요청/응답 메시지를 보내서 지정한 IP 주소와 통신할 수 있는 지 확인한다.

ARP

PC나 서버 등의 인터페이스는 MAC 주소로 식별한다. 이더넷 헤더에는 목적지 MAC 주소를 지정해야만 한다. TCP/IP의 IP 주소와 인터페이스를 식별하기 위한 MAC 주소를 대응시키는 것이 ARP의 역할이다.

ARP의 주소 해석 범위는 같은 네트워크 내의 IP 주소이다.

ARP 동작 흐름
1. ARP 요청으로 IP 주소에 대응하는 MAC 주소를 질의한다.
2. 질의받은 IP 주소를 가진 호스트가 ARP 응답으로 MAC 주소를 알려준다.
3. 주소 해석한 IP 주소와 MAC 주소의 대응을 ARP 캐시에 보존한다.

포트 번호, 웰노운 포트 번호

호스트에서 동작하는 애플리케이션에 데이터를 배분하기 위해서는 각각의 애플리케이션을 식별할 수 있어야 한다.
포트 번호란 TCP/IP의 애플리케이션을 식별하는 식별 번호로, TCP 또는 UDP 헤더에 지정한다. 포트 번호는 16비트 수치로, 지정할 수 있는 범위는 0~65535이다.

웰노운 포트 : 0~1023 | 서버 애플리케이션용으로 예약된 포트 번호
등록된 포트 : 1024~49151 | 자주 이용되는 애플리케이션의 서버 쪽 포트 번호
동적/사설 포트 : 49152~65535 | 클라이언트 애플리케이션용 포트 번호

TCP

TCP : 신뢰성 있는 애플리케이션 간의 데이터 전송을 하기 위한 프로토콜
TCP를 이용하면, 애플리케이션 프로토콜에는 신뢰성을 확보하기 위한 구조를 넣어둘 필요가 없다.

< 3-way Handshake >
1. TCP 커넥션 맺기
2. 애플리케이션 간 데이터 송수신
3. TCP 커넥션 끊기

애플리케이션의 데이터 크기가 크면 분할하여 복수의 TCP 세그먼트로서 전송한다. 어떻게 분할했는 지는 TCP 헤더에 기술되고, 목적지에서 차례대로 원본 데이터로 조립한다.
데이터의 송수신에서 ACK(수신확인) = 데이터(TCP 세그먼트)를 수신했음을 반드시 확인한다.
네트워크가 혼잡하면, 데이터 전송 속도를 제한하는 데이터 전송 구조를 플로우 제어라고 한다.

시퀀스 번호, ACK 번호

TCP 헤더에서 제일 중요한 것은 포트 번호이다.
그리고, 신뢰성 있는 데이터 전송을 위해서 시퀀스 번호ACK 번호라는 것이 있다.
시퀀스 번호 : TCP로 전송하는 데이터 순서를 나타낸다.
ACK 번호 : 데이터를 바르게 수신했음을 확인하기 위해 이용한다.

TCP에서 애플리케이션의 데이터를 분할하는 단위는 MSS(Maximum Segment Size)이다. MSS의 표준 크기는 1460 바이트이다.

UDP

UDP는 PC나 서버 등에 도달한 데이터를 적절한 애플리케이션에 배분하는 기능만 있는 프로토콜

  • 상대방의 애플리케이션이 동작하는 지 등을 확인하지 않은 채 무조건 UDP 데이터그램으로 애플리케이션의 데이터를 송수신한다.
    • TCP만큼 여분의 처리를 하지 않으므로, 데이터 전송 효율이 좋다는 장점이 있다.
    • 신뢰성이 높지 않다는 단점이 있다.
  • 보내고 싶은 UDP 데이터그램이 상대방 애플리케이션까지 제대로 도달했는 지 알 수 없다.
    • 데이터가 도달했는지 확인할 필요가 있다면, 애플리케이션에서 기능을 넣어야한다.
  • UDP에는 데이터를 분할하는 기능이 없다.
    • 전송해야할 데이터가 클 때에는 애플리케이션 쪽에서 쪼개야한다.

이름해석, 호스트 이름, DNS

TCP/IP 통신에는 반드시 IP 헤더에 IP 주소를 지정해야 한다.
애플리케이션이 동작하는 서버는 클라이언트 PC 등의 호스트에 사용자가 이해하기 쉬운 이름인 호스트명을 붙인다.
사용자가 URL 등으로 애플리케이션의 주소를 지정하면, 호스트 이름에 대응하는 IP 주소를 자동으로 구하는 것이 DNS의 역할이다. DNS는 가장 자주 이용되는 이름해석 방법이다.
TCP/IP 통신에 필요한 IP 주소는 TCP/IP 네트워크의 전화번호부인 DNS에 문의해서 조사한다.

리소스 레코드, DNS 리졸버, 재귀질의

DNS 서버에는 호스트명과 IP 주소의 대응 관계 뿐만 아니라 여러가지 정보를 등록하는데, DNS 서버에서 등록하는 정보를 리소스 레코드라고 부른다.
DNS 서버는 루트를 정점으로 한 계층 구조로 되어 있다. 애플리케이션을 이용하는 사용자가 호스트 이름을 지정하면, 자동으로 DNS 서버에 대응하는 IP 주소를 질의하며 이 기능을 DNS 리졸버라고 부른다.
DNS 서버로 IP 주소를 질의할 때는 루트에서 질의를 반복하는데, 이처럼 이름해석을 반복해서 묻는 것을 재귀질의라고 부른다.

DHCP

DHCP : TCP/IP 설정을 자동화하는 프로토콜

< TCP/IP 설정 항목 >

  • IP 주소 / 서브넷 마스크
  • 기본 게이트웨이의 IP 주소
  • DNS 서버의 IP 주소

< DHCP 동작 >

  • DHCP DISCOVER
  • DHCP OFFER
  • DHCP REQUEST
  • DHCP ACK

DHCP의 통신은 브로드캐스트를 이용한다. 주소를 몰라도 일단 무너가 데이터를 보내고 싶을 때는 브로드캐스트를 이용한다.

profile
댜니에요

0개의 댓글