네트워크 정리본 - TCP/UDP/HTTP/HTTPS

기술면접 대비 네트워크 편 TCP UDP HTTP HTTPS 정리
오니's avatar
Jun 15, 2024
네트워크 정리본 - TCP/UDP/HTTP/HTTPS

TCP/IP 4계층

notion image

전송 계층 - TCP

  • 신뢰성 보장 (송신부와 수신부의 연결확인하는 연결형 서비스)
  • 순서 보장 (가상회선 방식으로 전송)
    • 가상회선 방식: 패킷은 모두 같은 길로만 전송한다.
  • 패킷 전송 순서 보장
  • 1:1 보장

TCP 핸드쉐이킹

시작 3-way hand shaking / 종료 4-way hand shaking

notion image

TCP Keep Alive

3-way hand shaking이 일어난 이후에 일정 시간 연결 유지 후에 연장 여부를 택하며 연결을 유지하는 방식

TCP 제어 방식

흐름 / 혼잡 / 오류

1. 흐름제어

  1. 정지-대기
      • 송신후에 송신확인이 되질 않으면 다음 패킷을 보내지 않고 대기
  1. 슬라이딩 윈도우
      • [정지-대기]의 1개 보내고 ACK를 받을 때까지 대기해야한다는 단점을 보안하고자 슬라이딩 윈도우로 전송

2. 혼잡제어

  1. AIMD(Additive Increase Multiplicative Decrease)
      • 데이터를 전달할 때 합 증가 방식, 데이터 손실시 1/2 크기로 전송한다.
  1. 느린 시작
      • 혼잡이 발생하면 왼두오 크기를 1로 줄이는 방식
  1. 혼잡 회피
      • 윈도우 크기에 대한 임계점을 정하는 방식 (혼잡이 발생한 윈도우 크기의 1/2)
  1. 빠른 회복
      • 혼잡이 발생하면 발생하면 윈도우 크기를 줄인 후에 선형적으로 윈도우 크기 증가
  1. 빠른 재전송
      • ACK가 3번 유실되면 해당 시점의 윈도우 크기로 1/2 로 줄인다.

전송 계층 - UDP

  • 신뢰성 X (수신 여부 확인하지 않음)
  • 순서 보장 X (데이터그램 패킷 전송 방식)
    • 데이터그램 패킷 전송 방식: 패킷별로 최적의 루트를 통해 전송한다. 동일한 길을 택하지 X
  • 1:N 서비스

체크섬 오류 검출

  1. 데이터의 모두를 더한다.
  1. 캐리(오버플로) 발생한 부분은 다시 첫 자리에 더한다.
  1. 1의 보수를 취한다.
  • 모든 오류를 검출 할 수 없다.
  • 오류를 수정할 수 없다.


응용 계층 - HTTP

HTTP 특징

1. 비연결성

  • 비연결성 단점을 보안하기 위해서 HTTP Keep Alive 방식이 있다.
    • HTTP Keep Alive: 일정시간 연결을 유지해 주는 방식
      • TCP Keep Alive와 살짝 다름을 주의

2. 무상태성

  • 무상태성 보안을 위해 쿠키 세션 이 있다.
    • 쿠키
      • Key-Value 방식으로 client에 key, value 모두 갖고 있다.
    • 세션
      • Key-Value 방식으로 client에 key, Sever에 value를 갖고 있다.

응용 계층 - HTTPS

HTTP에 SSL/TLS 보안 계층을 더한 프로토콜

용어 정리

대칭키

  • 암호화와 복호화 과정에서 동일한 Key를 사용한다.

비대칭키

  • 암호화와 복호화 과정에서 서로 다른 Key를 사용한다.
  • 대칭키에 비해서 느리다.

HTTPS 암호화 과정

  • 대칭키와 비대칭키 모두 사용된다.
  1. Client가 Server에 접속을 요청하면 서버는 Secret Key와 Public Key를 만든다.
    1. notion image
  1. 서버는 만들어진 Public Key를 Client에게 전송한다.
    1. notion image
  1. Client는 Session Key를 만들고 Public Key로 암호화한다.
    1. notion image
  1. 암호화된 Session Key를 서버에 넘기고 Server는 SecretKey를 통해 해독한다.
    1. notion image
  1. Client Server 모두 Session Key를 갖게 되었다.
  1. 공통의 Session Key를 통해 대칭키 통신을 한다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Share article

오니의 개발 블로그