나를 기록하다
article thumbnail
반응형

목요일부터 JSP와 Servlet을 활용하여 미니 프로젝트를 진행하기로 계획했기에, JSP와 Servlet 기초를 벼락치기하려 한다.

처음에 Spring을 사용하다가 JSP와 Servlet을 사용하여 공부하려하니 Spring이 얼마나 편한지 깨닫고 있다.

내일은 하루종일 뉴렉처님의 JSP & Servlet 108강으로 구성된 강의를 벼락치기 수강할 예정인데 최대한 많이 듣고 기초를 쌓아볼 것이다.

 

여튼, 오늘은 매일하고 있는 네트워크의 네트워크 계층(모두의 네트워크), DTO와 VO(테코톡), 그리고 JSP & Servlet의 기초 공부(초기 세팅까지만)를 시작했다. 기록 시작하겠다.

 

네트워크 계층

데이터링크 계층은 해당 네트워크 안, 네트워크 계층은 네트워크 간의 통신

데이터링크 계층
  • 이더넷 규칙 기반 데이터 전송
  • 같은 네트워크에 있는 컴퓨터끼리만 가능

 

네트워크 계층
  • 네트워크 간의 통신을 가능하게 해주는 역할
  • 다른 네트워크로 데이터를 전송하기 위해 라우터(Router) 필요

 

라우터
  • 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지 알려주는 역할
  • 목적지를 모르면 경로를 알려주지 못 함
  • 데이터링크 계층 → MAC 주소 만으로 통신 가능 BUT 다른 네트워크에는 데이터 전송 불가
  • 네트워크를 식별할 수 있는 다른 주소가 필요 → IP 주소(IP Address)

 

IP
  • 어떤 네트워크의 어떤 컴퓨터인지 구분할 수 있도록 하는 주소 → 다른 네트워크에 있는 목적지 지정 가능
  • 목적지 지정 뿐만 아니라 데이터를 어떤 경로로 보낼지도 결정(라우팅)
    → 라우터의 라우팅 테이블에서 경로 정보를 등록하고 관리
  • 네트워크 계층에는 IP(Internet Protocol)이라는 프로토콜 존재 → 통신 규격인 TCP/IP의 IP
  • 캡슐화
    • 데이터링크 계층: 이더넷 헤더를 붙여 프레임 만듦
    • 네트워크 계층: IP 헤더를 붙임
  • IP 패킷: IP 헤더를 붙여 캡슐화를 진행해 만든 것
    → 많은 정보가 담겨있고 그 중에서도 출발지 IP 주소와 목적지 IP 주소가 담겨 있다는 것이 중요

IP 헤더

IP 버전
  • IPv4: 32비트
    → 약 43억 개의 IP 주소 만들 수 있음.
    → 인터넷이 널리 퍼지면서 IP 주소 부족
    → IPv6 등장
  • IPv6: 128비트
    → 더 많은 IP 주소 제작 가능(약 340 x 10³⁶)
  • IPv4의 주소는 주소의 수가 고갈될 수 있음
    • 인터넷에 직접 연결되는 컴퓨터나 라우터: 공인 IP 주소 할당
    • 회사나 가정의 랜에 있는 컴퓨터: 사설 IP 주소 할당

 

IP 주소의 종류
  • 공인 IP 주소: 인터넷 서비스 제공자(ISP)가 제공
  • 사설 IP 주소: 회사나 가정의 랜에 있는 컴퓨터에 할당
  • 랜 안에 컴퓨터가 여러 대 있지만 공인 IP 주소는 사용할 수 있는 숫자가 제한
  • 컴퓨터 한 대당 공인 IP 주소를 하나씩 할당하기 어려움
  • 공인 IP주소는 라우터에만 할당
  • 랜 안의 컴퓨터에는 랜의 네트워크 관리자가 자유롭게 사설 IP 주소 또는 라우터의 DHCP 기능을 사용하여 주소를 자동으로 할당
    (DHCP: Dynamic Host Configuration의 약어. IP 주소를 자동으로 할당하는 프로토콜)

IP 주소 할당 방식

IP 주소의 구조
  • MAC 주소: 48비트 → 16진수 표시
  • IP주소: 32비트 → 4옥텟 → 10진수 표시

IP 주소의 구조

  • 네트워크 ID(주소): 어떤 네트워크 인지를 나타냄
  • 호스트 ID(주소): 해당 네트워크의 어느 컴퓨터인지를 나타냄

IP 주소 = 네트워크 주소 + 호스트 주소

IP 주소

 

IP 주소 클래스
  • IP 주소는 네트워크 주소를 크게 만들거나 호스트 주소를 작게 만들어 네트워크 크기 조정 가능
  • 네트워크 크기는 클래스라는 개념으로 구분

클래스

  • 일반 네트워크에서는 A~C 클래스 사용

 

공인 IP와 사설 IP
  • 공인 IP: 전 세계에서 유일한 IP. ISP가 제공하며 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 장비로부터  접근 가능
  • 사설 IP: 한 네트워크 안에서 사용되는 IP 주소. IPv4 부족으로 인해 모든 네트워크가 공인 IP 사용하는 것은 불가능
    → 네트워크 안에서 라우터를 통해 할당받는 가상의 주소로 외부에서 접속 불가

 

네트워크 주소와 브로드캐스트 주소
  • 이 두 주소는 특별한 주소로 컴퓨터나 라우터가 자신의 IP로 사용 불가
  • 네트워크 주소
    • 10진수 0, 2진수 00000000인 주소
    • 전체 네트워크에서 작은 네트워크를 식별
    • 그 작은 네트워크 전체를 대표하는 주소
  • 브로드캐스트 주소
    • 10진수 255, 2진수 11111111인 주소
    • 해당 네트워크에 있는 컴퓨터나 장비 모두에게 한번에 데이터 전송시 사용되는 전용 IP 주소

네트워크 범위와 브로드캐스트 주소

 

서브넷
  • 네트워크를 분할하는 것을 서브넷팅이라고 하고 분할된 네트워크를 서브넷이라함.
  • 기존의 네트워크 ID + 호스트 ID → 네트워크 ID + 서브넷 ID + 호스트 ID
  • 호스트 ID에서 비트를 빌려 서브넷으로 만들 수 있음

호스트 ID 추가

 

서브넷 마스크
  • 네트워크 ID와 호스트 ID를 식별하기 위한 값
  • 프리픽스 표기법으로 사용 가능(ex. 24비트 → /24)

서브넷 마스크
프리픽스 표기법

 

라우터
  • 서로 다른 네트워크와 통신 시 필요
  • 네트워크를 분리하는 역할

라우터ㅣ 네트워크 분리

 

기본 게이트웨이(default gateway)
  • 192.168.1.0/24 네트워크의 첫 번째 컴퓨터에서 192.168.2.0/24 네트워크의 첫 번째 컴퓨터로 데이터를 전송하려면 라우터의 IP 주소를 설정해야 함.
  • 이것은 네트워크의 출입구를 설정하는 것으로 기본 게이트웨이라고 함.

 

라우팅
  • 경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터 전송
  • 라우팅 테이블: 경로 정보가 등록되어 있는 테이블
  • 수동등록: 소규모 네트워크용. 직접 네트워크 관리자가 변경해야함.
  • 자동 등록: 대규모 네트워크용. 라우터 간 경로 정보를 서로 교환하여 라우팅 테이블 정보를 자동 수정
  • 라우팅 프로토콜: 라우터 간에 라우팅 정보를 교환하기 위한 프로토콜

라우팅 테이블


DTO(Data Transfer Object)
  • 계층간 데이터 전달하기 위해 사용하는 객체
  • getter and setter 메서드 외에 특별한 기능을 가지지 않음(정렬 직렬화 등 데이터 표현을 위한 기능은 가질 수 있음)
  • 데이터의 캡슐화를 통해 유연한 대응 가능(데이터 요청 수 감소 효과, DTO에 데이터 묶어서 보냄)
  • setter가 아닌 생성자를 이용해서 초기화 할 시 불변 객체로 활용 가능(불변 객체로 만들 시 데이터 전달 과정에서 데이터 변조되지 않음을 보장)
  • 비즈니스 로직 포함 x
public class OrderDTO {
    private Long orderId;
    private String customerName;
    private double totalPrice;

    // 게터와 세터 메서드 생략
}

 

VO(Value Object)
  • 값 자체로 의미를 갖는 객체.
  • 주로 도메인 모델에서 사용
  • 데이터 불변성 → 코드의 안정성과 효율성 높힘
  • 값에 대한 동등성 → 각 객체를 비교하는 데 사용되는 ID 없음. 같은 객체인지 판단하기 위해 각 속성들의 값을 비교

equals() & hashCode() 메서드

  • 두 객체가 동등한지 비교할 때 hasCode()의 리턴값 비교 후 같을 시 equals()로 한 번 더 비교
  • VO를 같은 객체로 판단하려면 모든 필드값을 hashCode() 메서드와 equals() 메서드로 비교할 수 있게 오버라이딩 필수
  • 객체의 주소값이 달라도 모든 필드값이 같으면 같은 객체인 것이 바로 VO
  • 값을 변경할 수 있는 setter 메서드를 포함하면 안됨. → 생성자를 통해서만 값을 초기화
  • 비즈니스 로직 포함 가능
public class CoordinateVO {
    private final double latitude;
    private final double longitude;

    public CoordinateVO(double latitude, double longitude) {
        this.latitude = latitude;
        this.longitude = longitude;
    }

    // 게터 메서드만 포함
}

 

JSP & Servlet은 프로젝트를 수행하며 학습하는대로 정리하여 업로드하도록 하겠다.

 

 

 

 

 

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...