태그: 네트워크
18편
-
실시간 서버 만들기 전에 알아 둘 네트워크 기본: TIME_WAIT, select와 epoll, WebSocket·SSE, 채팅 서버 구조
2,000번 연결·종료 뒤 TIME_WAIT 소켓 수, select의 파일 디스크립터 1,024 제한, epoll 등록 성공을 컨테이너에서 직접 확인하고 연결 상태, I/O 멀티플렉싱, 전송 방식 선택, 채팅 서버 구조 글로 이어서 읽는 순서를 제안합니다.
-
ssh: connect to host port 22: Connection refused 해결: 우분투 24.04 SSH 연결 거부 원인별 점검
SSH Connection refused와 timed out, No route to host의 차이를 구분하고 우분투 24.04 기준 openssh-server 설치, ssh.socket 포트 변경, ufw, WSL2·VM, 보안 그룹, fail2ban을 순서대로 점검합니다.
-
우분투 24.04 고정 IP 설정: netplan(서버)과 nmcli·설정 앱(데스크톱), 적용 안 될 때 해결
우분투 24.04에서 고정 IP를 설정하는 방법을 서버(netplan + networkd)와 데스크톱(NetworkManager)으로 나눠 설명합니다. gateway4 경고, 권한 경고, cloud-init 덮어쓰기, netplan try 롤백, DNS 확인까지 다룹니다.
-
포트 사용 중 확인하고 종료하는 법: EADDRINUSE·Address already in use 해결 (윈도우·리눅스·맥)
3000·8080·5000 포트가 이미 사용 중이라 서버가 안 뜰 때, 윈도우 netstat·Get-NetTCPConnection, 리눅스 ss·lsof·fuser, 맥 lsof로 점유 프로세스를 찾아 종료하는 법과 프로세스가 안 보이는 경우(Hyper-V 예약 포트, AirPlay, Docker)를 정리합니다.
-
TLS 프로토콜 심화 가이드 | 핸드셰이크·암호 스위트·TLS 1.3 키 유도
TLS 1.2와 1.3의 핸드셰이크 흐름 차이, 암호 스위트를 구성하는 키 교환·인증·대칭키·해시, 키 유도와 레코드 레이어, QUIC과의 결합, 인증서 체인 오류 진단과 mTLS 인증서 회전까지 설명합니다.
-
Docker 네트워킹 내부 — CNI·veth·브리지·iptables·서비스 디스커버리
Docker·Kubernetes 네트워크 내부: CNI와 libnetwork, veth·Linux bridge, 포트 매핑 iptables/nft, DNS·서비스 디스커버리, 프로덕션 패턴까지 실무 심화 정리.
-
TCP 동작 원리: 3-way handshake, 흐름·혼잡 제어(CUBIC·BBR)와 소켓 디버깅
TCP 3-way handshake와 연결 종료, rwnd·cwnd 기반 흐름·혼잡 제어, Reno·CUBIC·BBR 알고리즘 차이를 설명하고 C++·Python·Node.js 소켓 예제와 RST·느린 전송 문제를 분석하는 디버깅 방법을 다룹니다.
-
I/O 멀티플렉싱 비교: select·poll·epoll·kqueue·IOCP와 C10K 문제
Blocking I/O의 한계에서 출발해 select, poll, epoll, kqueue, IOCP의 동작 방식과 차이를 코드와 시간 복잡도로 설명하고, C10K 문제를 어떻게 풀었는지 다룹니다.
-
TCP 연결 상태 11가지: TIME_WAIT·CLOSE_WAIT가 쌓이는 이유와 netstat·ss 디버깅
TCP 11가지 연결 상태(LISTEN, SYN_SENT, ESTABLISHED, FIN_WAIT, TIME_WAIT 등)의 동작 원리와 상태 전이, netstat·ss로 상태를 확인하고 TIME_WAIT·CLOSE_WAIT 문제를 디버깅하는 방법을 정리합니다.
-
UDP 프로토콜 실전 활용 | 저지연·DNS·게임·스트리밍과 QUIC 연결
연결 없이 데이터그램을 보내는 UDP의 헤더와 체크섬 구조, DNS·RTP·게임·statsd에서 UDP를 택하는 이유와 반례, QUIC이 UDP 위에서 연결 ID와 TLS 1.3으로 신뢰성을 구현하는 방식을 소켓 예제와 함께 설명합니다.
-
WebRTC 프로토콜 실시간 통신 | 시그널링·ICE·STUN/TURN·DTLS·SRTP 실전
WebRTC 연결이 SDP 시그널링, ICE 후보 수집, STUN·TURN을 통한 NAT 통과, DTLS 핸드셰이크, SRTP 미디어 암호화 순서로 성립하는 과정을 브라우저 JavaScript와 Python aiortc 예제로 설명합니다.
-
TCP vs UDP 전송 프로토콜 비교 | 신뢰성·지연·QUIC까지 선택 가이드
TCP와 UDP를 표로 외우는 대신 Wireshark 캡처에서 재전송·Dup ACK·손실이 어떻게 보이는지로 차이를 익히고, DNS·VoIP·게임·QUIC(HTTP/3)이 각각 어떤 이유로 전송 방식을 택했는지 실무 선택 기준으로 정리합니다.
-
HTTP vs FTP vs SSH 프로토콜 비교 | 용도·보안·파일 전송 선택 가이드
HTTP(S), FTP/FTPS, SSH(SFTP·SCP)의 포트·인증·암호화 방식과 채널 구조 차이를 비교하고, 웹 API·대용량 파일 전송·원격 서버 관리 상황별로 어떤 프로토콜을 고를지와 FTP에서 SFTP나 객체 스토리지로 옮기는 절차를 curl·OpenSSH 예제로 다룹니다.
-
FTP 프로토콜 실전 활용 | Active·Passive·FTPS·SFTP와 파일 전송 운영
FTP의 제어 채널과 데이터 채널이 따로 열리는 구조, Active와 Passive 모드에서 방화벽·NAT 때문에 전송이 실패하는 이유, lftp 클라이언트와 vsftpd chroot 설정, 평문 FTP 대신 FTPS나 SFTP로 옮길 때의 차이를 초급자 눈높이로 설명합니다.
-
SSH 프로토콜 보안 원격 접속 | 공개키·ProxyJump·포트 포워딩·OpenSSH 실전
SSH의 키 교환·호스트 검증·사용자 인증 흐름을 짚고, Ed25519 키와 ~/.ssh/config, ProxyJump와 에이전트 포워딩의 차이, 로컬·원격 포트 포워딩, SCP/SFTP, Permission denied·호스트 키 변경·ssh-rsa 거부 같은 오류 대응을 OpenSSH 기준으로 정리합니다.
-
HTTP 프로토콜: HTTP/1.1·HTTP/2·HTTP/3 차이, 연결 관리, 캐싱, 보안 실전
HTTP 메서드의 안전성과 멱등성, 상태 코드와 주요 헤더, HTTP/1.1·2·3의 프레이밍과 HOL 블로킹 차이, Keep-Alive와 연결 풀, Cache-Control·ETag 기반 캐시 검증을 프로덕션 관점으로 설명합니다.
-
C++ 소켓 프로그래밍: TCP/UDP 구현, SO_REUSEADDR 같은 소켓 옵션, select·poll·epoll 비교
TCP 서버와 클라이언트를 에러 처리와 EINTR 재시도까지 포함해 구현하고, SO_REUSEADDR·SO_KEEPALIVE·TCP_NODELAY를 언제 켜는지 설명합니다. 논블로킹 소켓과 select·poll 멀티플렉싱, EADDRINUSE·ECONNRESET·EPIPE 같은 에러 대처도 다룹니다.
-
C++ 네트워크 에러 처리: errno 해석, 타임아웃, 지수 백오프 재시도, 서킷 브레이커, EINTR
프로덕션에서 간헐적으로 연결이 끊길 때 errno를 어떻게 해석하고 어떤 에러만 재시도할지 판단하는 법을 다룹니다. SO_RCVTIMEO·select·논블로킹 connect 타임아웃 비교, 지터를 섞은 지수 백오프, 서킷 브레이커, EINTR과 부분 send·recv 처리도 설명합니다.