OSI 7계층을 기반으로 스위칭 장비를 사용. L2는 OSI 레이어 2에 속하는 MAC 어드레스를 참조하여 스위칭하는 장비 L3는 OSI 레이어 3에 속하는 IP주소를 참조하여 스위칭하는 장비 L4는 OSI 레이어 3~4에 속하는 IP주소 및 TCP/UDP 포트 정보를 참조하여 스위칭하는 장비 L7는 OSI 레이어 3~7에 속하는 IP주소, TCP/UDP 포트정보 및 패킷 내용까지 참조하여 스위칭. 그중 L4는 레이어 4에서 패킷을 확인하고 세션을 관리하는 역할. TCP/UDP별로 패킷 정보를 분석해서 해당 패킷이 사용하는 종류별로 구분하여(HTTP, FTP, SMTP 등) 처리. 그리고 로드밸런싱을 제공한다. 로드밸런싱에 대해서는 여기를 참고할 것. 출처 : https://m.blog.naver.com..
포트번호는 16비트로 이루어져 있어서, 총 65,536개(2^16)의 포트번호가 존재할 수 있다. 0~1023번은 잘 알려진 포트(Well-known port), 1024~49151번은 등록된 포트(Registered port), 49152~65535번은 동적 포트(Dynamic Port). 포트 TCP UDP 설명 상태 20 TCP 파일 전송 프로토콜 (FTP, File Transfer Protocol) - 데이터 포트 공식 21 TCP 파일 전송 프로토콜 (FTP, File Transfer Protocol) - 제어 포트 공식 22 TCP 시큐어 셸 (SSH, Secure SHell) - ssh scp, sftp같은 프로토콜 및 포트 포워딩 공식 23 TCP 텔넷 프로토콜 (Telnet Protoco..
포트 매핑(Port Mapping)이라고도 한다. 컴퓨터 네트워크에서 패킷이 라우터나 방화벽과 같은 네트워크 게이트웨이를 가로지르는 동안 하나의 IP주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 네트워크 주소 변환(NAT)의 응용. 종류는 로컬 포트 포워딩, 원격 포트 포워딩, 동적 포트 포워딩이 있다. https://ko.wikipedia.org/wiki/%ED%8F%AC%ED%8A%B8_%ED%8F%AC%EC%9B%8C%EB%94%A9 포트 포워딩 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ko.wikipedia.org
Packet Internet Grouper. 네트워크를 통해 상대에게 접근할 수 있는지를 확인하기 위한 프로그램. URL이나 IP를 지정하면 대상에게 echo를 요청하는 데이터를 전송하고 상대의 echo 응답을 기다리는 형태로 동작. ICMP 프로토콜(TCP/UDP와 동일 또는 하위 계층)을 사용. 특별히 포트라는 개념이 존재하지 않으며 대부분의 시스템이 처리할 수 있다는 특징이 있기 때문에 이용됨. https://namu.wiki/w/%ED%95%91 핑 - 나무위키 이명 네트워크 딜레이 수치가 낮으면 낮을수록 서버와 PC의 지연이 짧은 것이다. 단위는 밀리초(ms, 1/1000초)이다. 일반에서 사용자가 정보를 보내면 서버에서 받고 바로 사용자에게 되돌아간 시 namu.wiki
동시성은 결합을 없애는 전략. 무엇(what)과 언제(when)을 분리하는 전략인데, 이렇게 하면 애플리케이션 구조와 효율이 극적으로 나아짐. 예를 들어, 웹 애플리케이션이 표준으로 사용하는 서블릿 모델에서는 원칙적으로 각 서블릿 스레드는 다른 서블릿 스레드와 무관하게 자신만의 세상에서 돌아감. 동시성을 정확히 구현하도록 해야하는 이유는 구조적 이점, 응답 시간과 작업 처리량 개선 등의 요구사항이 있기 때문. 1. 동시성은 때로 성능을 높여준다. 2. 단일 스레드 시스템과 다중 스레드 시스템은 설계가 판이하게 다르다. 3. 동시성은 다소 부하를 유발한다.(코드도 더 짜야 한다.) 4. 동시성은 복잡하다. 5. 일반적으로 동시성 버그는 재현하기 어렵다. 6. 동시성을 구현하려면 흔히 근본적인 설계 전략을 ..
켄트 벡이 제시한 단순한 설계 규칙 네 가지(중요도 순) 1. 모든 테스트를 실행한다. 의도한 대로 돌아가는 시스템을 내놓아야 하는데, 의도한 대로 돌아가는지 검증하기 위해 테스트를 시행하고, 이 테스트를 항상 통과하는 시스템을 만들어야 한다. 2. 중복을 없앤다., 3. 프로그래머 의도를 표현한다., 4. 클래스와 메서드 수를 최소로 줄인다. 위의 2~4를 한마디로 표현하자면 리팩터링이다. 코드를 몇 줄 추가할 때마다 잠시 멈추고 새로 추가하려는 코드가 설계 품질을 낮추는지 테스트 케이스로 확인한다. 소프트웨어 프로젝트 비용 중 대다수가 장기적인 유지보수에 들어가는데, 유지보수 개발자가 시스템을 이해하기 쉽도록 하려면 아래의 규칙을 지키면 된다. 1. 좋은 이름을 선택할 것 2. 함수와 클래스 크기를 ..
소프트웨어 시스템은 준비 과정과 런타임 로직을 분리해야 한다. public Service getService() { if (service == null) service = new ServiceImpl(...); return service; } 초기화 지연(Lazy Initialization) 혹은 계산 지연(Lazy Evaluation) 기법 실제로 필요해지기 전까진 객체를 생성하지 않으므로 불필요한 부하가 없고, 어떤 경우에도 null 포인터를 반환하지 않는다. 하지만 의존성의 문제도 있고, 일반 런타임 로직에다 객체 생성 로직을 섞어놓은 탓에 모든 실행 경로도 테스트해야 함. -> 단일 책임원칙을 깬다! 의존성 주입(Dependency Injection) : 사용과 제작을 분리하는 강력한 매커니즘 중..

보시다시피 이렇게 구멍이 뻥뻥 뚫린 잔디밭으로 일일커밋 1일 회고를 작성해도 되는지 모르겠지만 불성실했던 날보다 성실했던 날이 더 많기 때문에 회고를 작성해본다. 일일커밋으로 얻고자 했던 것 내가 벌거벗은 이유는 쉽게 눈에 띄기 위함이고, 내 앞머리가 무성한 이유는 사람들이 나를 보았을 때 쉽게 붙잡을 수 있게 하기 위함이며, 내 뒷머리가 대머리인 이유는 내가 지나가고 나면 다시는 사람들이 나를 붙잡지 못하도록 하기 위함이다. 어깨와 발에 날개가 달린 이유는 그들 앞에서 최대한 빨리 사라지기 위해서이다. 나의 이름은 기회이다. 기회의 신 카이로스 나는 꾸준함이 중요하다고 믿는다. 위 글처럼 기회는 찰나에 왔다 사라지기 때문에 그 기회를 잡기 위해선 평상시에 준비가 되어 있어야 한다고 생각하기 때문이다. ..