네트워크
계층
데이터 전송 방식에 따른 분류
OSI 7 계층
OSI 7 계층 개념
TCP/IP 계층
TCP vs UDP
- TCP는 연속성보다 신뢰성 있는 전송이 중요할 때에 사용되는 프로토콜이며,
- UDP는 TCP보다 빠르고 네트워크 부하가 적다는 장점이 있지만 신뢰성 있는 데이터 전송을 보장하지는 않습니다.
- 그렇기 때문에 신뢰성보다는 연속성이 중요한 실시간 스트리밍과 같은 서비스에 자주 사용됩니다.
그림으로 비교하는 TCP vs UDP
HTTP
- HTTP(Hyper Text Transfer Protocol)란?
- 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
- HTTP는 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.
- HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이다.
HTTP의 구조
- HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 동작하며 Method, Path, Version, Headers, Body 등으로 구성된다.
- 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이다.
HTTPS의 개념
- HTTP에 데이터 암호화가 추가된 프로토콜
- HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화하여 전송한다.
- Hyper Text Transfer Protocol Secure
HTTP 상태 코드
2XX 상태코드 : Success
- 요청을 성공적으로 받았으며 인식됐고, 수용했음.
3XX 상태코드 : Redirection
- 클라이언트의 요청에 대해 적절한 위치를 제공하거나 대안의 응답을 제공
4XX 상태코드 : Client Error
5XX 상태코드 : Server Error
- 정상적인 클라이언트의 요청에 대해 서버의 문제로 인해 응답할 수 없음
HTTP Method
- HTTP 메소드는
클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단
이다. 최초의 HTTP에서는 GET 메소드 하나밖에 없었지만 이후 다양한 메소드들이 생겨났다.
메소드 종류와 특징
HTTP 메소드의 종류는 총 9가지가 있다. 이 중 주로 쓰이는 메소드는 5가지가 있다. 이제 각각의 이름과 특징에 대해 알아보도록 하자.
주요 메소드 5가지
- GET : 리소스 조회
- POST : 요청 데이터 처리, 주로 데이터 등록에 사용
- PUT : 리소스를 대체, 해당 리소스가 없으면 생성
- PATCH : 리소스를 일부만 변경
- DELETE : 리소스 삭제
기타 메소드 4가지
- HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
- OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명(주로 CORS에서 사용)
- CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정
- TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
여기서 주요 메서드 5가지에 대해 좀더 자세하게 알아보도록 하자.
GET은 보통 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 query를 통해서 전달한다. 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하지 않는 곳이 많아서 권장하지 않는다.
POST는 데이터 요청을 처리하고, 메시지 바디를 통해 서버로 데이터를 전달한다. 주로 신규 리소스를 등록하거나 프로세스 처리에 사용된다.
PUT은 리소스가 있으면 대체하고 리소스가 없으면 생성한다. 쉽게 말해 데이터를 덮어쓴다.
PATCH는 PUT과 마찬가지로 리소스를 수정할 때 사용하지만, PATCH는 리소스를 일부분만 변경할 수 있다.
DELETE는 리소스를 제거할때 사용한다.
127.0.0.1 vs 0.0.0.0
- 127.0.0.1 은 localhost
- 0.0.0.0은 보통 서브넷 마스크 0.0.0.0과 같이 사용되며 모든 IP를 의미