네트워크

이진희·2022년 1월 9일
0

해당 포스트는 https://github.com/JaeYeopHan/Interview_Question_for_Beginner를 공부한 기록임

HTTP GET/POST

method

  • http 프로토콜을 이용해 요청할 때 사용되는 방식

GET

  • url에 데이터가 붙어 전송 ( HTTP Request Message의 헤더 부분에 url이 담겨 전송 )
  • http://example.com?key=value 형식
  • url에 데이터를 붙여 가므로, 전송할 수 있는 데이터 크기가 제한적이다.
  • 데이터가 url에 그대로 노출되므로 보안이 필요한 데이터에는 적합하지 않다.
  • 브라우저에서 캐싱가능( 같은 요청시 기존에 캐싱되어 있던 내용이 응답될 수 있으므로 주의 )

POST

  • HTTP Request Message의 Body부분에 데이터가 담겨서 전송된다.
  • 전송할 수 있는 데이터의 크기가 크고, url에 데이터가 직접 드러나지 않으므로 보안 측면에서 유리하다.

어떨 때 어떤 메소드사용?

  • GET은 가져올 때. 값의 변경은 이루어지지 않음.
  • POST는 서버의 값을 변경/추가할 때.

TCP 3-way-handshake

  • A(클라): 서버 접속 요청 바람 (SYN(a) 패킷)
  • B(서버) : 서버 요청 수락(ACK) + SYN(b)
  • A(클라) : B의 응답을 받고 ACK(b+1)을 보냄
    =>위의 3단계를 거쳐 연결이 성립됨. 악수를 주고 받는 것 처럼.

TCP vs UDP

TCP, Transmission Control Protocol

  • 신뢰성 high, 순차적인 전달

UDP, User Datagram Protocol

  • 비연결형 프로토콜, IP데이터그램을 캡슐화하여 보내기 or 연결 설정하지 않고 보내기
  • 신뢰성이 낮고, 순차적인 전달을 보장하지 않는다.
  • 메시지 손실이 일어나지 않는다는 보장은 못함, 확인을 안하거든(흐름제어, 오류제어, 손상된 세그먼트의 수신에 대한 재전송 모두 하지 않음). 대신 속도는 높다.
  • 코드가 간단.
  • 사용예시로 DNS가 있다.

HTTP vs HTTPS

HTTP

1. 평문 통신으로 도청 가능

  • 패킷을 수집하는 것만으로 도청 가능
  • 평문으로 통신할 경우 암호화하여 쉽게 알아보지 못하게 해야함. ( SSL / TLS와의 조합을 통해 HTTP 통신 내용을 암호화 or 전송하려는 데이터만 암호화하여 사용. 수신측에서 데이터만 decode하면 쓸 수 있음.)

2. 통신 상대 확인X => 위장 가능

  • HTTP에 의한 통신에선 상대가 누군지 확인하는 절차가 없음
  • 누구든지 리퀘스트 보낼 수 있음 => 모든 리퀘스트를 받아들이고(DoS공격 위험), 누가 접근하는지, 보내는 사람이 허가된 사람인지 알 수 없고 리스폰스가 반환한 곳이 올바른 곳인지 알 수 없다.
  • 이 또한 SSL을 이용해 해결 가능. SSL을 이용하면 '증명서'를 이용해 상대를 확인할 수 있다. '증명서'는 신뢰가능한 제 3의 기관에 의해 발급되므로, 신원보증이 된다.

3. 완전성을 증명할 수 없음. 고로 변조 가능

  • 완전성 : 정보의 정확성 ( 서버가 보낸 것 =/= 클라이언트가 받은 것 일 수 있다는 말.)
  • 리퀘스트 -> 처리 -> 리스폰스의 과정 중 제 3자가 낚아채 데이터에 변조를 가해도 알 방도가 없다.(이러한 공객 패턴을 Man-in-the-Middle이라고 함)
  • 보완법 : MD5, SHA-1 등의 해시 값을 확인 or 디지털 서명 확인 => 이 또한 확실한 확인이 불가능. 결국 HTTPS를 사용

  • 위 3가지는 암호화가 되지 않은 프로토콜에서도 발생하는 공통적 문제점.

HTTPS

HTTP의 문제점(보안, 완전성, 암호화)를 보완

  • HTTPS = HTTP + SSL
  • HTTP통신하는 소켓 부분을 SSL 혹은 TLS 프로토콜로 대체.
  • HTTP : TCP와 직접 통신 | HTTPS : SSL과 통신. SSL이 TCP와 통신.
  • HTTPS 의 SSL 에서는 공통키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다. 공통키를 공개키 암호화 방식으로 교환한 다음에 다음부터의 통신은 공통키 암호를 사용하는 방식

[]추가 공부 : HTTP 2.0, 기본적인 네트워크 용어

DNS Round Robin

웹 통신의 큰 흐름

profile
슬로우 스타터

0개의 댓글