[TIL] 면접 전에 다시 보는 CS 정리(1)

이명진·2026년 1월 13일

TIL

목록 보기
17/27

CS 공부 정리

오래간만에 개발에 관련해서 공부하면서, 다시 벨로그에 글을 올려야겠다고 마음먹었다.
그동안 벨로그에는 코드 카타나 내가 겪었던 에러들의 케이스 스터디 위주로 글을 올렸는데,
이전에 공부했던 내용들조차 조금씩 까먹고 있다는 느낌이 들었다.

그래서 이번에는 다시 한 번 읽고, 정리하면서,
벨로그에 기록을 남기고
내가 어떤 방향으로 공부해왔는지 흐름을 스스로 파악해보려 한다.

CS적으로 기본이 되는 내용부터 다시 정리해보자는 생각이 들었고,
아래는 그 과정에서 정리한 내용들이다.


1. TCP 4-way Handshake

TCP 4-way handshake는 연결을 종료(Disconnect) 할 때 사용하는 절차이다.

연결 종료 과정

1️⃣ FIN (Client → Server)

  • Client가 “이제 더 이상 보낼 데이터가 없다”고 알림
  • (예: HTTP 요청이 모두 끝난 상태)

2️⃣ ACK (Server → Client)

  • Server가 FIN을 잘 받았다고 응답

3️⃣ FIN (Server → Client)

  • Server도 “나도 보낼 데이터가 끝났다”고 알림
  • 서버 측 응답 전송 완료

4️⃣ ACK (Client → Server)

  • Client가 Server의 FIN에 대해 ACK 응답
  • 이 시점 이후 연결 종료

자주 나오는 질문들

❓ 왜 3-way가 아니라 4-way인가?

👉 송신 종료를 양쪽에서 독립적으로 해야 하기 때문

  • Client와 Server는 각각 보낼 데이터가 끝났음을 따로 알려야 한다.

❓ FIN을 받으면 바로 연결 종료되나?

👉 ❌ 아니다. Half-close(반쪽 종료) 상태가 가능하다.

  • 한쪽은 송신 종료, 다른 쪽은 아직 데이터 전송 가능

❓ TIME_WAIT은 왜 Client 쪽에만 있을까?

👉 마지막 ACK을 보낸 쪽이 Client이기 때문

  • ACK 유실 시 재전송을 대비하기 위한 안전 장치

TCP는 무엇인가?

TCP (Transmission Control Protocol)
👉 인터넷에서 데이터가

  • 깨지지 않고
  • 순서대로
  • 신뢰성 있게
    전송되도록 보장하는 프로토콜

TCP가 사용되는 곳

  • 🌐 HTTP / HTTPS
  • 📧 이메일 (SMTP)
  • 📁 파일 전송 (FTP)
  • 🖥️ SSH

참고: TCP 3-way Handshake (연결 시작)

🔸 SYN
“연결하자 + 내 시작 번호는 이거야”

🔸 SYN + ACK
“연결 OK + 네 번호 받았고 + 내 번호는 이거야”

🔸 ACK
“네 번호도 확인했어, 이제 통신 시작 가능”


2. OSI 7계층이란?

OSI (Open Systems Interconnection) 7 Layer Model
👉 네트워크 통신을 역할별로 나눈 표준 개념 모델

왜 7계층으로 나눴을까?

  • 문제 발생 시 어느 단계의 문제인지 빠르게 파악
  • 계층별 독립적 개발 및 교체
  • 서로 다른 시스템/벤더 간 호환성 확보

OSI 7계층 구조

7️⃣ Application
6️⃣ Presentation
5️⃣ Session
4️⃣ Transport
3️⃣ Network
2️⃣ Data Link
1️⃣ Physical


각 계층 설명

7️⃣ Application Layer (응용 계층)

  • 사용자와 가장 가까운 계층
  • 네트워크 서비스를 제공
  • 예: 브라우저, 메일 클라이언트

6️⃣ Presentation Layer (표현 계층)

  • 데이터 표현 방식 담당
  • 인코딩/디코딩, 압축, 암호화

5️⃣ Session Layer (세션 계층)

  • 세션 생성 / 유지 / 종료
  • 체크포인트, 재동기화

4️⃣ Transport Layer (전송 계층)

  • end-to-end 통신 보장
  • 신뢰성, 순서 보장
  • 포트 번호 사용
  • TCP / UDP

3️⃣ Network Layer (네트워크 계층)

  • IP 주소 기반 라우팅
  • 패킷 전달 경로 결정
  • MAC 주소 사용
  • 프레임 단위 전송
  • 오류 검출 (CRC)

1️⃣ Physical Layer (물리 계층)

  • 0과 1을 실제 신호로 전송
  • 전압, 빛, 전파
  • 케이블, 커넥터

3. TLS Handshake란?

TLS Handshake는
클라이언트와 서버가 암호화 통신을 하기 위한 규칙과 비밀키를 안전하게 합의하는 과정이다.

TLS는 TCP 위에서 동작한다.

TCP 3-way handshake → TLS handshake → HTTP 데이터 전송


TLS Handshake에서 정하는 것

  • 🔒 어떤 암호화 방식을 쓸지
  • 🔑 세션 키
  • 👤 서버(또는 클라이언트)의 신원 확인

흐름 요약

  1. 클라이언트가 암호화 방식 제안
  2. 서버가 방식 선택 + 인증서로 신원 증명
  3. 키 교환
  4. 세션 키 생성
  5. 암호화 통신 시작

4. 로컬 스토리지와 세션 스토리지 차이

로컬 스토리지와 세션 스토리지는
브라우저에 저장되는 클라이언트 저장소이며,
쿠키와 달리 서버로 자동 전송되지 않는다.

로컬 스토리지

  • 브라우저 종료 후에도 유지
  • 예: 다크모드 설정, 언어 설정

세션 스토리지

  • 탭 단위로 관리
  • 탭 종료 시 삭제
  • 예: 특정 탭에서만 유지되는 상태 값

5. 브라우저에서 특정 사이트 접속 시 전체 흐름

1️⃣ 캐시 확인

확인 순서:
1. 브라우저 HTTP 캐시
2. Service Worker 캐시
3. OS / DNS 캐시

👉 캐시가 있으면 네트워크 요청 없이 종료 가능

2️⃣ DNS 조회

  • 도메인 → IP 주소 변환

3️⃣ TCP 3-way Handshake

  • 서버와 연결 수립

4️⃣ TLS Handshake (HTTPS)

  • 암호화 통신 준비

5️⃣ HTTP 요청 전송

6️⃣ 서버 처리

7️⃣ HTTP 응답 수신


8️⃣ 브라우저 렌더링 과정 (중요)

  1. HTML 파싱 → DOM 생성
  2. CSS 파싱 → CSSOM 생성
  3. Render Tree 생성 (display:none 제외)
  4. Layout (Reflow)
  5. Paint
  6. 레이어 합성 (GPU)

9️⃣ JavaScript 실행

  • <script> 만나면 파싱 중단
  • async / defer에 따라 실행 시점 다름
  • DOM 조작 시 Reflow / Repaint 발생

6. Forward Proxy와 Reverse Proxy

프록시란?

👉 요청과 응답을 중간에서 대신 전달하는 서버

Forward Proxy

  • 클라이언트를 대신
  • IP 숨김
  • 인터넷 통제
  • 캐싱
  • 해외 서비스 접근

Reverse Proxy

  • 서버를 대신
  • 로드 밸런싱
  • SSL 종료
  • 보안(WAF)
  • 서버 구조 은닉

👉 Forward: 나를 숨김
👉 Reverse: 서버를 숨김


7. SSE와 WebSocket 차이

SSE (Server-Sent Events)

  • HTTP 기반
  • 서버 → 클라이언트 단방향
  • 연결 유지
  • 이벤트 스트리밍에 적합

WebSocket

  • 양방향 통신
  • 실시간 채팅, 게임, 협업 툴
  • 별도의 프로토콜 사용

마무리

CS는 한 번 공부했다고 끝나는 영역이 아니라,
계속 다시 보고, 연결 지으면서 이해해야 하는 영역이라는 걸 다시 느꼈다.

앞으로도 이런 식으로
하루에 하나씩 정리해보면서
내가 어떤 방향으로 성장하고 있는지 기록해보려고 한다.


출처

  • TCP/IP Illustrated
  • MDN Web Docs
  • RFC 793 (TCP)
  • RFC 8446 (TLS 1.3)
  • Cloudflare Learning Center
profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글