TCP와 UDP에 대한 이해 TCP/IP 프로토콜 스택이란, 인터넷 기반의 데이터 송수신을 목적으로 설계된 스택이다. 큰 문제를 작게 나눠 계층화한 결과로, 각 스택 별 영역을 전문화하고 표준화한다. Link계층 → IP계층 → (TCP계층 / UDP계층) → Application계층 으로 구성되어 있다. Link 계층 물리적 영역의 표준화 결과이다. LAN, WAN, MAN과 같은 물리적인 네트워크 표준 관련 프로토콜이 정의되어 있다. IP 계층 Internet Protocol을 의미한다. 경로의 설정과 관련있는 프로토콜이다. TCP/UDP 계층 실제 데이터의 송수신과 관련된 계층이다(Transport Layer). TCP : error control이 존재해 데이터의 전송을 보장하는 신뢰성이 있는 프..
소켓에 할당되는 IP주소와 PORT번호 인터넷 주소(Internet Address) 인터넷 상에서 컴퓨터를 구분하는 목적으로 사용되는 주소를 말한다. 4바이트 주소체계인 IPv4와 16바이트 주소체계인 IPv6가 존재한다. 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다. 인터넷 주소는 네트워크 주소와 호스트 주소로 나뉘게 되는데, 네트워크 주소를 이용해 네트워크를 찾고, 호스트 주소를 이용해 호스트를 구분한다. PORT 번호 IP는 컴퓨터에 부여하는 값으로 컴퓨터를 구분하는 용도로 사용되고, PORT번호는 소켓에 부여하는 값으로 소켓을 구분하는 용도로 사용된다. 하나의 프로그램 내에서는 둘 이상의 소켓이 존재할 수 있기 때문에, 둘 이상의 PORT가 하나의 프로그램에 의해 할당될 수 있다. 0~10..
Protocol(프로토콜)이란, 컴퓨터 상호간의 데이터 송수신에 필요한 통신규약이며 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다. #include int socket(int domain, int type, int protocol); domain : 소켓이 사용할 프로토콜 체계(Protocol Family) 정보 전달 type : 소켓의 데이터 전송방식에 대한 정보 전달 protocol : 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달 →모두 프로토콜 정보와 관련있다. Protocol Family(프로토콜 체계) 프로토콜도 그 종류에 따라서 부류가 나뉘는데, 그 부류를 가리켜 프로토콜 체계라 한다. int domain에 들어가는 부분이다. Type(소켓의 타입) 데이터 전송 방식을 의미한다. 소켓..
네트워크 프로그래밍이란, 네트워크로 연결된 둘 이상의 컴퓨터 사이에서의 데이터 송수신 프로그램의 작성을 말한다. 소켓(Socket)은 네트워크(인터넷)의 연결 도구이며 OS에 의해 제공되는 소프트웨어적인 장치이다. 또한, 소켓은 프로그래머에게 데이터 송수신에 대한 물리적, 소프트웨어적으로 자세한 내용을 신경 쓰지 않게 한다. 소켓 프로그래밍에서 사용되는 함수들을 서버와 클라이언트 측으로 나누어 간단하게 살펴보자. Server socket TCP 소켓은 전화기에 비유될 수 있다. 소켓은 socket함수의 호출을 통해 생성한다. #include int socket(int domain, int type, int protocol); //성공 시 파일 디스크립터, 실패 시 -1 return bind 전화기에 전화..
이전 포스팅에서 만든 회원 도메인이 정상적으로 동작하는지 실행하고 테스트해보자. 이전 포스팅의 "회원 객체 다이어그램"에 해당하는 작업이다. 앞서 설명했지만, 클래스 다이어그램은 정적인 것이고 객체 다이어그램은 동적인 것이다. 회원 도메인 실행과 테스트 회원 도메인 회원 가입 main hello.core 아래 MemberApp 클래스를 하나 생성하자. package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; public class MemberApp { public..
이전 포스팅에서 프로젝트 환경을 만들었고 이제 실제로 역할과 구현을 나누어 간단하게 설계를 해보자. 비즈니스 요구사항과 설계 회원 회원가입을 하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다.(이 기능은 결정이 되지 않은 상태) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용한다.(나중에 변경될 수 있다) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다.(미확정) 위 요구사항을 살..