네트워크 - Http와 응용 프로토콜

zzzzzang_gu·2023년 4월 13일

cs이론

목록 보기
13/13

📍 HTTP

  • Server - Client 모델로 Request/Response 사용
  • 클라이언트에서 요청(Request) 보내면 서버에서 응답(Response)를 준다.
  • HTTP는 1회성 Request/Response - (Connectionless)

HTTP 는 Stateless, Connectionless 하다 -> 통신이 끝나면 상태를 유지하지 않는다.

이를 보완하기 위한 기법이 쿠키와 세션이다.
쿠키의 경우 tcp 아스키 코드로 이루어져 있어 해커가 tcp를 까볼경우 전달한 정보를 알아채기 쉽다. 세션은 서버에서 별도의 암호화 문자열을 쿠키에 저장한다.

📍 HTTP 1.1 (개선된 버전)

  • Keepalive 기능으로 keepalive timeout 까지는 연결과정없이 데이터 송수신 가능
  • 매번 TCP 3-way handshake 과정을 거칠 필요가 없어짐

📍 HTTP Method

  • GET : 정보읽기 (SELECT) : 전달이 필요한 파라미터들은 URL을 통해 전달

  • POST : 정보 입력하기 (INSERT) : 전달이 필요한 파라미터들은 Request Protocol 에 Request-Body 에 넣어서 보내짐

  • PUT : 정보 수정하기 (UPDATE)

  • DELETE : 정보 삭제하기 (DELETE)

📍 HTTP Status Code

코드설명코드설명
200정상401승인되지 않은 엑세스
400유효하지 않은 파라미터 또는 잘못된 요청403엑세스 금지
404리소스를 찾을수 없음500내부 서버 오류

📍 HTTPS

  • HTTP 통신시 사용하는 TCP/IP 소켓 통신에서 일반 텍스트 대신 SSL 프로토콜을 통해 데이터를 암호화 하여 송수신

  • HTTPS 기본 포트는 443 / HTTP는 80

📍 REST

  • 자원의 표현에 의한 상태 전달
  • HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 CRUD operation 적용
    • CREATE : 생성 (POST)
    • READ : 조회 (GET)
    • UPDATE : 수정 (PUT)
    • DELETE : 삭제 (DELETE)
  • REST API : REST 기반으로 서비스 API 구현

📍 REST API

개발자들 사이에서 비공식적으로 가이드한 REST 구현 가이드

  • 기능에 적합한 URL 메서드 사용

URL Rules

  • 마지막에 '/' 포함하지 않는다.
  • under bar '_' 대신 dash '-' 사용
  • 소문자 사용
  • 메서드는 URL에 포함하지 않는다.

📍 DNS (Domain Name System) 프로토콜

  • 도메인 이름을 IP주소로 변환 또는 그 반대를 수행하기 위해 개발
  • 전세계 흩어진 DNS 서버를 통해 도메인 이름 , IP 주소 정보 확인 가능
  • DNS는 Network Protocol로 UPD 사용

📍 메일 서버 (SMTP 와 POP3)

  • SMTP - 메일 송신, 25 or 587 port
  • POP3 - 메일 수신 / 메일 수신 프로토콜 (IMAP , POP3)
    - IMAP (143 포트) : 중앙 서버에서 메일 동기화
    • POP3 (110 포트) : 중앙 서버에서 로컬 장치로 이메일을 내려받음

📍 FTP 프로토콜

  • 서버와 클라이언트 사이의 파일 전달을 위한 프로토콜
  • 접속(21포트) 전송(보통 20포트) 2개의 포트 사용

📍 웹 브라우저의 동작 과정

  • 웹 브라우저에 입력된 URL은 DNS 프로토콜을 사용, IP주소로 변환
  • HTTP Request를 생성, 운영체제 네으워크 스택을 따라 HTTP -> TCP -> IP -> ETHERNET을 전기 신혼로 변환, 전송
  • HTML 파일 파싱하여 DOM Tree 생성, css 정보를 파싱하여 CSSOM tree 생성
  • DOM tree, CSSOM tree 기반 Render tree 생성
  • Render tree 기반 Rendering

0개의 댓글