CS

네트워크 정리

시롱시롱 2023. 6. 9. 14:55

기술면접 및 CS 복습을 위해 정리한 글 입니다.

전공 수업(데이터 통신, 컴퓨터 통신, 네트워크 보안) 에서 배운 내용을 아주 짧고 얕게 정리한 내용이니 자세한 내용이 궁금하시다면 서적을 따로 구매하여 공부하시는 것을 추천드립니다 !


OSI7계층

  • level 1 : Physical Layer(물리계층) , bit stream을 전송하는 계층
  • level 2 : Data Link Layer (데이터 계층), frame을 전송하고 이를 통해 속도제어, 오류제어, 접근제어의 역할을 한다.
  • level 3 : Network Layer (네트워크 계층) , 패킷을 전달하는 계층 라우팅을 해준다.
  • level 4 : Transport Layer (전송 계층) , 프로세스에서 프로세스로의 전송을 담당하는 계층으로 흐름제어 및 재전송을 통한 오류제어를 제공한다
  • level 5 : Session Layer(세션 계층) , 컴퓨터끼리 통신을 위해 세션을 만드는 계층
  • level 6 : Presentation Layer(표현 계층), 데이터의 형식을 정의하는 계층
  • level 7 : Application Layer (응용 계층) , 사용자와 직접 상호작용하는 응용 프르그램들이 포함된 계층

전송층의 대표 프로토콜

  • TCP : connection oriented, reliable, 흐름,오류,혼잡 제어를 제공한다. 3-way handshake를 통해 연결을 한다.
  • UDP : connectionless, unreliable, 논리적 연결 없이 유저 데이터 그램을 통해 패킷을 전달하기에 오버헤드가 작고 빨라 실시간성이 중요한 서비스에 주로 사용된다. 대표적으로 DNS가 UDP를 사용한다.
  • SCTP : connection oriented, reliable, UDP와 TCP를 합쳐놓은 형태로 멀티 미디어에 적합하다.

IP할당 과정

  • 클라이언트가 broad cast로 255.255.255.255를 발송한다→ 이를 발견한 DHCP들이 사용가능한 주소를 넣어 회신한다 → 클라이언트가 그 중 하나를 골라 identifier option에 주소를 넣고 다시 broad cast를 한다→ 이를 보고 다른 DHCP는 자신이 할당한 주소가 사용되지 않았음을 알게되고 해당 주소의 DHCP는 해당 주소를 클라이언트가 사용한다는 것을 알게된다.

HTTPS vs HTTP

  • HTTP over SSL(TLS)를 의미한다.
  • TLS 핸드쉐이크를 한다.
    • TLS란 Transport Layer Security를 의미하고, 여러 프로토콜을 제공하는데 그 중 핸드셰이크 프로토콜이란 4단계를 거치는 프로토콜인데
      • 1단계 보안 기능 설정: client hello, server hello
      • 2단계 서버 인증과 키 교환: (certificate), (server_key_exchange), (certificate_request), server_hello_done
      • 3단계 클라이언트 인증과 키 교환: (certificate), client_key_exchange, (certificate_verify)
      • 4단계 종료 : change_cipher_spec, finished, change_cipher_spec, finished
  • 이처럼 HTTPS는 “비연결적”인 HTTP에 전송계층보안을 적용하여 기존에 평문으로 전달하던 데이터를 암호화 하여 안전하게 전달할 수 있게 해준다.
    • HTTP는 응용계층의 프로토콜로 TCP/IP위에서 작동하고, Stateless프로토콜이며 Method(Get,Post,Delete,Patch ..), Path(경로), Version(1.1 ..), Header, Body 등으로 구성된다.
      • HTTP1 : 연결당 하나의 요청,응답 처리
        • HOL Blocking : 클라이언트의 요청과 서버의 응답이 동기화 되어 지연이 발생된다
        • RTT 증가 : 패킷의 왕복 시간의 지연이 발생한다.
        • 헤더 크기의 비대 : 쿠키와 같은 메타데이터에 의해 헤더가 비대해진다.
      • HTTP2
        • Multiplexed Streams : 하나의 커넥션으로 여러개의 메세지 주고 받을 수 있게 함
        • Stream Prioritization : 요청의 우선순위를 부여
        • Header Compression : 헤더 정보를 HPACK으로 압축 전송한다.
        • Server Push : HTML문서 상에 필요한 리소스를 클라이언트의 요청없이 보내준다.

주소창에 URL을 입력하면 어떻게 될까?

  1. 사용자가 브라우저에 URL을 입력한다
  2. 브라우저가 DNS를 통해 서버의 주소를 찾아준다.
  3. HTTP(s)를 사용하여 요청 메세지를 만든다
  4. TCP/IP 연결을 통해 해당 요청이 서버로 전달된다.
  5. 만약 웹서버가 리버스 프록시를 적용했다면 해당 적용 설정에 따라 요청온 경로에 맞는 서버에게 요청을 전달한다.
  6. 서버에서 해당 요청에 맞는 응답을 생성하여 HTTP 응답 메세지를 만들어 다시 브라우저를 향해 전송한다.
  7. 브라우저에서 받은 응답을 확인한다.

SSH

  • 원격 로그인, X tunneling용으로 선택되고 TCP상에서 구현된다
  • SSH TLP(ssh 전송 계층 프로토콜) : 전방향 기밀 즉, 한 세션에 손상이 발생해도 이전 세션의 보안에 영향을 미치지 않는다는 특징이 있다.
    • 서버가 클라이언트에게 인증을 받는 프로토콜
  • SSH UAP(ssh User Authentication Protocol) : 클라이언트가 서버에게 인증을 받는 프로토콜이다.

포트포워딩

  • 안전하지 않은 TCP연결을 안전한 SSH연결로 변환하는 것
    • SSH 터널링 이라고도 한다.
  • 로컬 포워딩 : 클라이언트가 선택한 응용레벨의 트래픽을 가로채어 ssh로 연결을 전환하는 것
  • 원격 포워딩 : SSH 서버에서 포워딩을 설정하는 것

NAT (Network Address Translation)

  • 로컬 네트워크 (LAN)에서 쓰이는 private address를 NAT 변환 테이블을 이용해 외부 네트워크 (WAN)에서 쓰이는 IP address로 변환한다.
  • 이때 NAT 라우터는 외부에서 보면 하나의 IP를 갖는 하나의 장비로 보이지만, port번호를 통해 요청에 맞는 내부 망의 서버로 요청을 전달한다.

서브넷

  • 호스트와 물리적 링크 사이를 인터페이스라 하는데, 라우터 없이 여러 인터페이스를 하나로 연결시키는 네트워크를 서브넷이라 한다.
  • IP주소체계에서 서브넷에 a.b.c.d/x 의 주소를 할당하는데 슬래시 뒤의 숫자를 서브넷 마스크라 한다
    • 이 서브넷 마스크는 해당 서브넷에 왼쪽 x bit가 서브넷의 주소임을 의미한다.
    • 이러한 주소 할당 방식을 CIDR (사이다)라고 한다.