개발자의 길

[Backend] HTTP 기초 지식 정리

토아드 2022. 5. 1. 03:47
반응형

본 게시글은 인프런 김영한 님의강의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 수강한 후 정리한 게시글 임을 참고 바랍니다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com

 

컴퓨터 간에 통신을 하는 방법

 

IP ( Internet protocol ) 주소

- 컴퓨터들은 IP 주소 ( 192.100.100.2 ) 를 통해 인터넷에 연결되어 있는 다른 컴퓨터들과 통신을 한다. 컴퓨터 A 에서 데이터를 보낼 때 IP 주소를 통해 어디로 갈지 알수 있는 것이다. 인터넷 네트워크 상으로 이 데이터를 보내면 네트워크의 경로 지정 역할을 해주는 녀석들이 IP 주소를 보고 올바른 곳으로 전달해 준다.

- 데이터를 보낼 때 시작 IP 주소, 목적지 IP  주소, 기타 정보 등을 함께 보내는데 이를 패킷이라고 한다.

- 패킷을 보낼 대상이 없어도 보내고(비연결성), 패킷의 순서나 도착여부를 보장하지 않으며(비신뢰성), 패킷이 대상 컴퓨터에 도착한다 해도 해당 아이피를 사용하는 프로그램이 둘 이상면 어떻게 해결한 것인지? 등의 문제가 있다.

 

TCP( Transmission Control Protocol )

- 연결지향 : 3 way handshake 라는 기법을 사용해서 두 컴퓨터간의 연결상태를 확인,유지한다. 접속 요청(SYN), 요청 수락(SYN,ACK), 요청 수락 확인 (ACK)의 3단계의 메시지 전달을 통해 서로의 연결 상태를 확인한다.

- 데이터 전달 보증 : 데이터 전송을 할시 데이터를 잘 받았음을 보낸다. 

- 순서 보장 : 패킷 순서를 전달하여, 순서가 잘못되었을 경우 잘못된 패킷부터 다시 보내라는 응답을 보냄으로써 패킷 순서를 보장 가능하다.

 

UDP( User Datagram Protocol )

- 데이터 전달 및 순서가 보장되지 않지만, 전송 속도가 빠르다.

- IP에서 port, 체크섬 정도만 추가됨.

 

PORT

- IP를 통해서 컴퓨터로 메시지가 전달되었을 때, 컴퓨터 내의 어떤 프로세스에게 메시지를 전달할지 식별하는 번호

- 0~1023 까지는 예약된 포트로, 이를 제외하고 1024~65535 에서 선택하는 것이 좋음. HTTP 통신은 80, HTTPS 통신은 443 이다.

 

DNS( Domain Name System )

- 우리가 사용하는 웹 사이트의 주소는 IP 주소 형태가 아니다. www.naver.com  등 사람이 어느정도 이해 가능한 수준인데, 이 문자 주소와 IP 주소를 연결시켜 주는 시스템을 DNS라고 한다. 

- DNS 서버는 이 IP주소 연결을 중계해 주는 서버를 의미한다. 우리가 주소를 입력하면 먼저 DNS 서버로 가서 IP 번호를 전달받고, 그 실제 주소로 이동된다.

 

 

HTTP ( HyperText Transfer Protocol )

- 거의 모든 형태의 데이터를 전달 가능한 프로토콜 

- 클라이언트 - 서버 구조 : 클라이언트가 서버에게 HTTP 요청을 보내고, 서버는 클라이언트에게 응답을 생성하여 HTTP 응답을 전달해준다.

- 무상태 : 서버는 클라이언트의 상태를 별도로 저장하지 않는다.

- 무상태의 장점 : 클라이언트의 상태를 별도로 저장하지 않기에 서버의 리소스를 절약할 수 있다. 또 상태를 별도로 저장하지 않기에 서버의 증설이 용이하다. 상태를 저장하고 있어야 한다면 서버 증설시 저장하고 있던 상태를 모두 동기화 하는 작업등이 필요하기에 불편함.

- 상태를 유지해야되는 부분도 존재함. 로그인 정보 등은 유지해야 함. 실질적으로 완전한 무상태 서버는 어려움

- 비 연결성 : 클라이언트로의 응답이 끝나면 바로 연결을 해제한다. 

 

 

HTTP 요청 메시지 구조

  • start line
    • request : HTTP 메서드 + 요청 타겟 + HTTP 버전
    • response: HTTP 버전 + status code + reason phrase
  • header : HTTP 전송에 필요한 모든 부가 정보들을 포함
  • empty line
  • body : 실제로 전송할 데이터를 적재. 영상, 문자, 사진, 문서 등 byte 로 표현가능한 모든 데이터를 전송

 

HTTP Method : HTTP 요청이 어떤 형식의 요청인지 구분하는 역할을 한다.

- GET : 특정 리소스 조회

- POST : 요청데이터를 처리할 필요가 있을 시

- PUT : 특정 리소스 완전대체

- DELETE : 특정 리소스 삭제

- PATCH : 리소스의 데이터를 부분 변경

- HEAD : GET 과 동일하지만 body 를 반환하지 않음

 

HTTP Status code : HTTP 응답이 어떤 결과를 가지는지를 의미. 흔히 알고있는 번호들은 404, 200 등 가끔 웹페이지에서 오류가 났을때 보이는 코드등이다.

- 1xx : 요청이 수신되어 처리중인 상태

- 2xx : 요청이 정상 처리됨

- 3xx : 요청 완료를 위한 추가 행동이 필요한 상태

- 4xx : 클라이언트의 잘못된 요청

- 5xx : 서버에서 오류가 발생함

반응형