본문 바로가기
Computer/CS_Knowledge

[CS] Network

by HJ0216 2023. 7. 12.

Network

HTTP(Hyper Text Transfer Protocol)

  • 데이터를 주고 받기 위한 프로토콜
  • 상태 정보를 저장하지 않는 Stateless 및 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless 특징
    • 연결 상태 처리나 상태 정보를 관리할 필요가 없어 서버 디자인이 간단
    • 통신의 정보를 모르기 때문에 매번 인증 필요
      • 해결방안: 쿠키, 세션 등

HTTP Method

종류 기능
GET 데이터 조회
POST 요청 데이터 처리, 주로 등록에 사용
PUT 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
PATCH 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
DELETE 데이터 삭제

HTTP 상태 코드

  • 1xx : 처리가 진행 중
  • 2xx : 성공 응답
  • 3xx : 리다이렉트, 요청을 완료하려면 추가적인 작업(페이지 이동)이 필요
  • 4xx : 클라이언트 요청 오류
  • 5xx : 서버 오류

HTTP와 HTTPS의 차이점

  • HTTP
    • 평문 데이터를 전송하는 프로토콜
    • TCP와 직접 통신
  • HTTPS
    • HTTP에 암호화가 추가된 프로토콜
    • HTTP는 SSL과 통신 + SSL이 TCP와 통신

TCP와 UDP의 차이

  TCP UDP
연결 방식 연결형(3-way handshake) 비 연결형
전송 순서 보장 보장 X
수신 여부 확인 O X
속도 느림 빠름
신뢰성 높음 낮음

3-way handshake와 4-way handshake

3handshake 4handshake
  • 3 way-handshake
    • TCP 네트워크에서 통신 하는 장치가 서로 연결이 잘 되었는지 확인하는 방법
  • 4-way handshake
    • TCP 네트워크에서 통신 하는 장치의 연결을 해제하는 방법
    • TIME-WAIT: 아직 서버에서 받지 못한 데이터가 연결이 해제되어 유실되는 경우를 대비해 일정시간 잉여 패킷을 기다림

쿠키와 세션 차이

  • 쿠키
    • 사용자의 컴퓨터에 저장하는 데이터 파일
    • 예: 팝업창을 통해 "오늘 이 창을 다시 보지 않기" 체크
  • 세션
    • 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술
    • 웹 서버의 저장되는 쿠키(=세션 쿠키)
    • 예: 화면을 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지
  쿠키 세션
저장 위치 Client PC Web Server
라이프 사이클 쿠키 저장시 설정(브라우저가 종료되어도 인증이 유지) 브라우저 종료시 삭제
속도 빠름 느림
보안 낮음(당사자가 아닌 제 3자도 조회 가능) 높음

세션 기반 인증과 토큰 기반 인증

session

  • 세션 기반 인증: 클라이언트로부터 요청을 받으면 해당 상태 정보를 저장하므로 Stateful한 구조
    • 중요한 정보는 서버에 있기 때문에 세션 ID 쿠키에는 유의미한 값을 가지고 있지 않음
    • 서버에 세션을 저장하기 때문에 사용자가 증가하면 서버에 과부하
    • 분산 서버 활용 시, 상태 유지가 올바르게 작동하지 않을 수 있음
    • 세션 하이재킹: 훔친 쿠키를 이용해 요청을 보내면 서버는 올바른 사용자가 보낸 요청인지 알 수 없음
    • 예: 넷플릭스 디바이스 로그인 개수 제한
 

session

  • 토큰 기반 인증: Access Token을 발급해준 후 요청이 들어오면 검증만 해주면 되기 때문에 추가 저장소가 필요 없는 Stateless한 구조
    • 이미 발급된 JWT를 돌이킬 수 없으므로 유출 시, 만료전까지 피해가 계속 발생할 수 있음
    • (JWT에서의 대안) Refresh Token을 추가적으로 발급해서 Access 토큰의 사용기간을 단축

JWT 토큰

  • 웹에서 사용되는 인증에 필요한 정보를 암호화시킨 JSON 형식의 토큰
  • JWT(JSON Web Token)의 구조
    • Header: 토큰의 타입과 Signature를 해싱하기 위한 암호화 알고리즘으로 구성
    • Payload: 토큰에 서비스에서 사용자에게 토큰을 통해 공개하기를 원하는 내용(= Claim), JSON(Key/Value) 형태
    • Signature: 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드
 
암호화 방식
  • 단방향 암호화 방식: 복호화 불가능
    • 예시: 사용자 비밀번호
  • 양방향 암호화 방식: 복호화 가능
    • 대칭키: 암호화와 복호화에 같은 키를 사용
      • 빠른 속도, 키 노출 위험
    • 비대칭키: 암호화와 복호화할 때 키를 서로 다른 키로 사용
      • 느린 속도(메시지 암호화에는 쓰이지 않고 주로 키를 암호화하는데에 사용), 높은 안정성
      • 예시: 공인인증서

공인(public) IP와 사설(private) IP의 차이

public_private_ip

  • 공인 IP: 중복되지 않는 단 1개의 IP 주소로 공유기가 인터넷과 통신하도록 하는 역할을 하는 외부 IP 주소
  • 사설 IP
    • 일반 가정이나 회사 내 등에 할당된 네트워크 IP 주소
    • 라우터(공유기)에 의해 로컬 네트워크상의 PC나 장치에 할당
  • 사설 IP 주소만으로는 인터넷에 직접 연결할 수 없고, 라우터를 통해 1개의 공인 IP를 할당하고, 라우터에 연결된 개인 PC는 사설 IP를 각각 할당 받아 인터넷에 접속
 

OSI 7 Layer Model

  1. 물리 계층(Physical Layer)
    • 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
  2. 데이터 링크 계층(Data Link Layer)
    • 인접 시스템 간 데이터 전송, 전송 오류 제어를 통한 신뢰성 구축
  3. 네트워크 계층(Network Layer)
    • 단말기 간 데이터 전송을 위한 최적화된 경로 제공
    • Protocol: IP
  4. 전송 계층(Transport Layer)
    • 송수신 프로세스(종단) 간의 연결. 신뢰성 있는 통신 보장
    • Protocol: TCP, UDP
  5. 세션 계층(Session Layer)
    • 송수신 간의 논리적 연결
  6. 표현 계층(Presentation Layer)
    • 데이터 형식 설정, 암/복호화
  7. 응용 계층(Application Layer)
    • 일반적인 응용 서비스를 수행

 

 

 

참고 자료

 

신입 개발자 기술면접 질문 정리 - 네트워크

💡 HTTP 프로토콜에 대해 설명해주세요. HTTP(Hyper Text Transfer Protocol)이란 데이터를 주고 받기 위한 프로토콜이며, 서버/클라이언트 모델을 따릅니다. HTTP는 상태 정보를 저장하지 않는 Stateless의 특

dev-coco.tistory.com

 

[Network] TCP 3-way, 4-way Handshake

3일만의 네트워크 포스팅이다 오늘은 TCP 에서 연결을 생성하고 해제하는 과정인 3-way handshake, 4-way handshake 에 대해 공부해 보았다 역시나 세부적인 내용까지 정리되어 있는 글을 찾기가 참 어려

velog.io

 

세션은 뭐고 JWT는 무엇일까

이번 포스팅에서는 토큰 기반 인증 시스템의 대표적인 규약인 JWT(JSON Web Token)에 대해 알아보...

blog.naver.com

 

암호화와 복호화, 양방향 알고리즘(공개키, 비공개키) · 지혜의 개발공부로그

암호화와 복호화, 양방향 알고리즘(공개키, 비공개키) 15 Sep 2021 | 암호화 복호화 공개키 비공개키 AES RSA 개인적인 연습 내용을 정리한 글입니다. 더 좋은 방법이 있거나, 잘못된 부분이 있으면 편

www.zehye.kr

 

🌐 HTTP 메서드 종류 & 요청 흐름 💯 총정리

HTTP Method 종류 HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 일컫는다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동,

inpa.tistory.com

 

OKKY - 공인ip, 사설ip 구분 가능한가요?

안녕하세요 ip 에대해서 확인중인데공인ip (공유기 ip)사설ip (pc ip)를 구분하고 싶은데요 구글에서 my ip 검색하고 상위 웹페이지에 접속해서 내 ip를 보면 또한 cmd에 ipconfig 를 입력하면 아래와 같

okky.kr

 

'Computer > CS_Knowledge' 카테고리의 다른 글

[CS] Design Pattern  (0) 2023.08.04
[CS] Database  (0) 2023.07.28
[CS] Operating System  (0) 2023.07.12
[CS] Spring  (0) 2023.07.06
[CS] Java  (0) 2023.07.06