반응형
목요일부터 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 버전
- 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 주소의 구조
- MAC 주소: 48비트 → 16진수 표시
- IP주소: 32비트 → 4옥텟 → 10진수 표시
- 네트워크 ID(주소): 어떤 네트워크 인지를 나타냄
- 호스트 ID(주소): 해당 네트워크의 어느 컴퓨터인지를 나타냄
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를 식별하기 위한 값
- 프리픽스 표기법으로 사용 가능(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 없음. 같은 객체인지 판단하기 위해 각 속성들의 값을 비교
- 두 객체가 동등한지 비교할 때 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은 프로젝트를 수행하며 학습하는대로 정리하여 업로드하도록 하겠다.
반응형
'TIL' 카테고리의 다른 글
[TIL-32/230924] 알고리즘, 숫자야구 (1) | 2023.09.24 |
---|---|
[TIL-31/230922][백준 2635/자바(java)] 수 이어가기 (0) | 2023.09.23 |
[TIL-20/230911] 데이터 링크 계층, OCP, 백준 14928 큰수, JSP 게시판 만들기 (0) | 2023.09.12 |
[TIL-19 / 230908] 람다식, Java MVC, Spring (0) | 2023.09.09 |
[TIL-18 / 230907] 함수형 프로그래밍, 컬렉션 프레임워크 (0) | 2023.09.08 |