티스토리 뷰

CS

네트워크

범무룩 2020. 7. 30. 20:08

HTTP

  • Hyper Text Transfer Protocol이며 인터넷에서 데이터를 주고받을 수 있는 프로토콜(규칙)이다.
  • 사용 이유는 HTTP라는 통신규약을 만들고 모든 프로그램이 이 규약에 맞춰 개발한다면 서로 정보교환이 가능하기 때문에 사용한다.

동작

  • 사용자가 브라우저를 통해서 어떠한 서비스를 URL을 통하거나 다른 것을 통해 요청하면 서버에는 해당 요청사항에 맞는 결과를 찾아 응답하는 형태로 동작한다.

특징

  • TCP/IP를 이용하는 응용 프로토콜이다.
  • 비연결성 프로토콜
    • 이 단점을 해결하기 위해 Cookie와 Session이 등장했다.
  • 요청/응답 방식

Request Method

  • GET
    • 서버 데이터를 URL형식으로 요청하여 데이터를 받는다.
  • POST
    • 클라이언트에서 서버로 전달하고자 하는 정보를 보낸다.
  • PUT
    • 서버에 데이터 저장, 수정, 생성을 요청한다.
  • DELETE
    • 서버에 데이터 삭제를 요청한다.
  • OPTIONS
    • 메소드 목록 조회
  • HEAD
    • 응답 본문 없이 HEAD만 보낸다.
  • TRACE
    • 경로를 따라 테스트 수행

Status Code

  • 1XX (조건부 응답)
    • 요청을 받았으며 작업을 계속한다.
  • 2XX (성공)
    • 클라이언트의 요청을 성공적으로 처리
  • 3XX (리 다이렉션)
    • 클라이언트의 요청을 마치기 위해 추가 동작이 필요하다.
  • 4XX (요청오류)
    • 클라이언트 오류
  • 5XX (서버 오류)
    • 서버 오류

GET VS POST

  • HTTP 프로토콜을 이용해 서버에 요청할 때 사용한다.

GET

  • 요청하는 데이터가 Request Message의 Header부분의 URL에 담겨 전송된다.
    • URL의? 뒤에 데이터가 붙어 요청
  • 전송할 수 있는 데이터의 크기가 제한적이다.
  • 데이터가 URL에 노출된다.
  • 캐싱이 가능하다.

POST

  • 요청하는 데이터가 Request Message의 Body부분에 담겨 전송된다.
  • 리소스를 생성/병경 할 수 있다.
  • 길이의 제한 없이 데이터 전송이 가능하다.

TCP / UDP

  • 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 프로토콜이다.

TCP (User Datagram Protocol)

  • 연결형 프로토콜
  • 흐름 제어
    • 데이터 속도를 조절해 수신자의 버퍼 오버플로우를 방지한다.
  • 혼잡 제어
    • 네트워크 내의 패킷 수가 넘치지 않게 한다.
  • 높은 신뢰성
  • UDP보다 속도가 느리다.
  • 3-way handshaking으로 연결 시작 / 4-way handshaking으로 끝맺음
  • 신뢰성이 있는 정송을 해야 할 때 사용
  • 1:1 통신

UDP (User Datagram Protocol)

  • 비 연결성 프로토콜
  • 정보를 주고받을 때 절차가 없다.
  • 순서가 보장되지 않는다.
  • TCP보다 속도가 빠르다.
  • 실시간 서비스(Streaming)에 주로 사용된다.
  • 1:1, 1:N, N:N

HTTP와 HTTPS의 차이점

  • 인터넷에서 정보를 암호화하는 SSL(Secure Soket Layer) 프로토콜을 이용하여 클라이언트와 서버가 데이터를 주고받는 통신규약이다.
  • 즉 HTTP를 SSL방식으로 암호화한 것이 HTTPS이다.
  • SSL방식은 공개키 암호화 방식이다.

대칭키 VS 비대칭키

  • 대칭키
    • 암호화, 복호화할 때 키가 동일한 경우
  • 비대칭키
    • 암호화, 복호화 할 때 키가 동일하지 않은 경우

공개키 암호화

  • 공개키로 암호화 한 뒤 개인키로 복호화한다.
  • 네트워크를 이용하여 키를 전달하면 위험하다. 따라서 개인키는 본인만 가지고 암호화를 할 수 있는 공개키를 모두에게 공개한 후 해당 공개키를 이용해 암호화된 정보, 데이터를 제삼자가 가로채도 개인키를 통해 복호화해야 하기 때문에 내부 데이터를 안전하게 지킬 수 있다.
  • 즉 공개키로 암호화된 데이터는 개인키를 가진 자만이 풀 수 있기 때문에 공개키 암호화 방식을 사용한다.

웹 브라우저에 URL을 입력하고 화면이 출력되기까지

  1. 웹 브라우저에 URL을 입력하고 Enter를 누른다.
  2. 웹 브라우저가 입력한 URL을 분석한다.
    • 제일 앞에 접근할 프로토콜을 적는다.
    • 구분자 ":"를 적는다.
    • // 뒤에 특화된 정보를 넣는다.
  3. 분석
    • 구조가 맞는 경우
      • 웹 브라우저 검색엔진으로 입력이 검색
    • 분석 후 구조가 맞는 경우
      • HSTS(HTTP Strict Transport Security) 목록을 받아와 URL내의 주소와 일치하면 HTTPS로 요청하고 일치하지 않으면 HTTP로 요청한다.
  4. DNS(Domain Name Server)에 IP 주소를 요청한다.
    • 요청을 보내기 전 해당 Browser에 Domain이 Cache 돼 있는지 확인한다.
    • Reculsive Server의 Cache를 확인한다.
      • 있으면 IP주소 리턴
    • 없으면 Root Server - TLDServer - AuthoriativeServer에 IP주소를 물어본다.
  5. IP주소를 받은 뒤 ARP를 통해 실질적으로 접근해야 할 IP주소를 할당받은 MAC 주소를 추적한다.
  6. TCP 통신을 통해 Socket을 연다.
  7. HTTPS인 경우 TLS(보안 SSL) 과정을 추가한다
  8. HTTP 요청
  9. HTTP 응답
  10. 웹 브라우저 그림 그리기

DNS

  • 문자로 만들어진 도메인을 컴퓨터가 처리할 수 있는 인터넷 주소(IP)로 바꿔주는 시스템 또는 서버를 말한다.

소켓(Soket)

  • TCP/IP를 이용하는 창구 역할을 한다.
  • 두 프로그램이 네트워크를 통해 서로 통신할 수 있도록 양쪽에서 생성되는 링크의 단자이다.
  • 즉 통신을 위한 일종의 통로라고 말할 수 있다.
  • 소켓에는 서버 소켓, 클라이언트 소켓이 있다.
    • 서버 소켓은 로컬 IP를 가지고 포트를 열어 클라이언트를 기다린다.
    • 클라이언트 소켓은 IP주소를 이용해 목적지를 찾아 포트에 연결한다.
    • 서버 소켓이 수락하면 포트를 이용해 데이터를 주고받는다.

'CS' 카테고리의 다른 글

자료구조  (0) 2020.07.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함