2025/04 47

Spring Web MVC가 요청을 처리하는 과정 - DispatcherServlet의 동작구조

DispatcherServlet의 doDispatch() 동작구조DispatcherServlet 구조라이브러리 : org.springframework.web.servlet.DispatcherServletDispatcherServlet도 부모 클래스에서 HttpServlet을 상속받아서 사용하고, 서블릿으로 동작한다.DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet스프링 부트는 DispatcherServlet 을 서블릿으로 자동으로 등록하면서 모든 경로( urlPatterns="/" )에 대해서 매핑한다.참고: 더 자세한 경로가 우선순위가 높다. 그래서 기존에 등록한 서블릿도 함께 동작한다요청 흐름서블릿이 호출되면 HttpServle..

Deep Dive - 25년 4월 3주차 회고

실수의 원인몰랐거나덜 알았거나결국 다 배우면 된다.왜도 좋지만, 어떻게도 생각하기.‘내가 할 수 있을까’ 라는 걱정이 드는 이유해당 도메인을 충분히 이해하지 못함내가 뭘 할 수 있는지 두려운 감정이 핵심이다.결국 해당 도메인을 이해하면, 그 안에서 내가 할 수 있는, 해주고 싶은 일이 보이기 시작한다.쫄지 말고, 이해하자!주변사람들을 믿고, 감사하며, 보답하다보면 할 수 있다.평소에는 쭈굴거리면서 “난 부족해…공부해야해…” 하더라도면접때만큼은 “각성한 나”를 보여주자.이거 재밌네요! 이렇게 하면 이부분은 막을 수 있는데 이부분은 좀 까다롭네요? 실제로 해봤을 때 이런이런 문제가 생길것 같아요! 결국 지금 도메인에선 이 방식이 단점을 가리면서 문제를 해결하기 가장 적절한 방법이라고 생각해요!나의 추상적인 ..

개인적 공간 2025.04.20

TCP의 다양한 추가 기능 - TFO, Nagle 알고리즘, 지연 ACK, Early Retransmit, Tail Loss Probe

TCP Fast Open(TFO)3-way handshake를 사용해 애플리케이션 데이터를 교환하는 기능이다.처음부터는 불가능하다.그 대신, 첫 handshake 때 옵션 필드로 TCP Fast Open에 필요한 정보(TFO Cookie)를 교환한다.그 이후, 2번째 Handshake부터 TCP Fast Open을 발동한다.클라이언트는 SYN에서 HTTP 요청을 송신하고, 서버는 SYN/ACK로 HTTP 응답을 반환한다.Nagle 알고리즘네이글 알고리즘은 작은 데이터가 자주 전송될 경우, 더 큰 세그먼트로 합쳐 전송함으로써 패킷 낭비를 줄이기 위한 방식이다.구체적으로,버퍼에 모은 데이터가 최대 세그먼트 크기(MSS)에 도달하면 즉시 전송한다.이전에 전송한 세그먼트에 대한 ACK를 모두 받으면 즉시 전송한..

TCP의 연결과 종료 과정 - 흐름제어, 혼잡제어, 재전송 제어, 3-way handshake, 4-way handshake

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. TCP 의 주요 동작과 그 성공 시나리오들을 알아보자. TCP의 상태는 크게 다음과 같이 분류할 수 있다.접속 시작 단계액티브 오픈클라이언트가 커넥션을 만들어가는 처리를 의미한다.패시브 오픈서버가 클라이언트의 연결 요청을 받아들이는 처리를 의미한다.접속 확립 단계접속 종료 단계액티브 클로즈FIN/ACK을 먼저 송출해서 커넥션을 종료하려는 처리를 의미한다.패시브 클로즈FIN/ACK을 받고, 커넥션을 종료하는 과정을 받아들이려는 처리를 의미한다.TCP는 컨트롤 비트를 구성하는 8개 플래그를 '0' 또는 '1'로 설정해 다음 그림과 같이 TCP 커넥션 상태를 제어한다.각 단계 별 주요 동작으로는 다음과 같은 것들이 있다.접속 시작 단계3-..

TCP란? 그리고 TCP 패킷의 형태, Selective ACK(SACK)

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 전송 계층의 프로토콜, TCP에 대해 알아보자.TCP란?Transmission Control Protocol데이터 전송의 신뢰성을 요구하는 애플리케이션에서 사용된다.애플리케이션 데이터를 송신하기 전에, TCP 커넥션이라는 논리적인 통신로를 만들어, 통신 환경을 정비한 후 통신을 수행한다.송신 파이프수신 파이프송신 측 단말과 수신 측 단말이 2개의 논리적인 파이프를 전이중으로 사용해 송신과 수신을 확인해가며 데이터를 전송한다.QUIC 때문에 확실하진 않지만, 2020년 기준 현재 인터넷상의 트래픽의 80% 이상이 TCP로 구성되어 있다.IP 헤더의 프로토콜 번호는 '6(0x06)'으로 지정되어 있다.TCP 패킷 포맷신뢰성을 요구하기 때..

UDP

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. UDP는 User Datagram Protocl의 약자로, TCP보다 훨씬 가볍고, 커스터마이징이 용이한 프로토콜이다. (하얀 도화지를 상상하면 좋다.) 주로 아래와 같은 즉시성을 요구하는 애플리케이션에서 사용된다.음성 통신 (Voice over IP, VoIP)DNSDHCPNTP(시간 동기화 프로토콜)동작 방식데이터그램을 만들고, 서버나 상대를 신경쓰지 않고 계속 보내기만 한다.데이터를 받아들인 쪽은 UDP 헤더에 포함된 UDP 데이터그램 길이와 체크섬을 이용해 데이터가 손상되지 않았는가를 검증한다.체크섬 검증에 성공하면, 데이터를 받아들인다.UDP의 IP 헤더의 프로토콜 번호는 '17(0x11)' 이다.UDP 패킷 포맷헤더의 길이..

포트 번호

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 전송계층의 핵심은 포트 번호이다.받은 IP 패킷을, 어느 애플리케이션에 전달해야 할지를 결정하는 것이 포트 번호이다.포트 번호는 0번부터 65535번까지 있으며, 다음과 같이 분류할 수 있다.지금부터 각 포트 번호의 종류와 사용처에 대해 알아보자.포트번호의 종류수신지 포트 번호에 사용System Ports0~1023User Ports1024~49151송신지 포트 번호에 사용Dynamic and/or Private Ports49152~65535참고) 멀티플렉싱&디멀티플렉싱시스템 포트0~1023주로 수신 시 사용하는 포트 번호 대역이다.웰 노운 포트(Well-known Ports) 라고도 불린다.IANA가 관리한다.포트 + 전송 프로토콜..

NAT

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. NAT는 Network Address Translation의 약자로, IP 주소를 변환하는 기술을 의미한다.이는 부족한 글로벌 IP 주소의 절약 및 같은 네트워크 주소를 가진 시스템 사이 통신에 기여한다.NAT는 변환 전후의 IP 주소나 포트 번호를 NAT 테이블이라는 메모리상의 테이블로 묶어서 관리하며, NAT는 이 NAT 테이블에 따라 동작한다.주의) 두가지 의미를 가지고 있다.넓은 의미의 NAT주소를 변환하는 기술 전부를 의미한다.좁은 의미의 NAT정적 NAT(1:1 NAT)NAT의 종류 중 정적 NAT와 동적 NAT중 하나인 NAPT, 그리고 NAT를 위한 NAT Traversal에 대해 알아보자.정적 NAT정의내부와 외부의 ..

IP 주소 할당 방법 - 정적 할당, 동적 할당(DHCP)

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 그렇다면, IP 주소를 어떻게 단말의 NIC에 할당하는걸까?IP 주소의 할당 방법에는 위와 같은 방법들이 있다.이중에서, 정적 할당과 IPv4를 위한 동적 할당 기법인, DHCPv4에 대해 알아보자.정적 할당IP주소의 정적 할당은 각 단말별로 수동으로 IP주소를 설정하는 방법이다.단말의 사용자가 시스템 관리자에게 부탁해, 남아 있는 IP주소를 받아서 설정하는 방식으로 동작한다.서버나 네트워크 기기는 IP 주소가 자주 변하면 통신에 영향을 미치므로, 대부분 이 할당 방식을 사용한다.10여 명 정도의 작은 사무실 네트워크 환경에서, 시스템 관리자가 어떤 단말에 어떤 IP주소를 설정했는지 완전히 파악해 두어야 하는 경우에도 이 할당 방식을..

IP 라우팅

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 지금부터 라우팅, 라우팅 테이블, 라우팅 프로토콜에 대해서 알아보자.라우팅이란?라우팅 & 라우팅 테이블이란?라우터나 L3 스위치는 IP 패킷의 전송 대상지를 바꿀 수 있다.수신지 IP 주소명확히 주어진 수신지 네트워크 정보IP 패킷을 전송할 근접 기기의 IP 주소를 나타내는 네트워크 홉 정보를 관리함으로써이 전송 대상지를 바꾸는 것을 "라우팅"이라고 한다.수신지 네트워크 정보와 네트워크 홉을 관리하는 테이블을 "라우팅 테이블"이라고 한다.라우터가 IP패킷을 라우팅하는 형태모든 기기가 근접 기기의 MAC 주소를 학습한 상태라고 가정하자.네트워크 계층에서, 주어진 IP를 찾을 수 있는(해당 IP를 포함하는 서브넷) 넥스트 홉의 IP를 라..