웹 서버는 HTTP를 사용하여 웹 브라우저와 통신하는 프로그램이다.
웹 사이트 컨텐츠를 요청하는 클라이언트에게 이미지, 텍스트같은 데이터를 전달해준다.
대부분의 웹 서버는 비즈니스 논리를 통신으로 인코딩하는 서버 측 스크립팅 언어를 지원한다.
ex ) ASP(Active Server Pages), Javascript, PHP, Python, Ruby
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜(약속)이다.
OSI 7계층에 Application(7) 계층의 프로토콜 중 하나이다.
정처기 공부 처음할 때는 OSI, 그중에서도 IP가 너무 싫었다ㅠㅠ 지금은 자격증을 취득했다!
HTTP 메서드는 수행할 작업의 종류를 나타내기 위해 서버에 보내는 메시지다.
GET : 데이터를 서버로부터 받아올 때 사용 / READ
POST : 무언가를 생성하기 위해 사용 / CREATE
PUT : 데이터를 업데이트할 때 사용 / UPDATE
DELETE : 데이터를 서버에서 삭재할 때 사용 / DELETE
PATCH
PATCH는 PUT처럼 데이터를 교체할 때 사용하는데, 데이터의 일부를 수정하기 위해 사용한다.
PUT : 데이터 전체 교체, 데이터 교체 시 모든 필드 필요
PATCH : 데이터의 부분 교체, 데이터 교체 시 일부 필드 필요
간단하게 말해서 서버에서 상태를 저장하면 Stateful, 저장하지 않으면 Stateless이다.
Stateful은 서버에 상태를 저장하므로 항상 같은 서버가 유지 되어야 한다.
서버 장애시 해당 서버의 유저의 상태가 소실된다.
또한 Stateful은 서버에 부담이가고, 속도가 느려진다.
Stateless는 상태를 보관하지 않기 때문에 아무 서버나 호출해도 된다.
만약, 서버 장애가 나더라도 다른 서버에서 응답을 해주면 되므로 상관없다. 수평확장이 유리하다.
속도도 역시 빨라진다.
Stateful을 최소한만 사용하는 것이 좋다.
브라우저의 요청에 따라 서버에서 반환되는 코드이다.
요청이 성공했는지 또는 오류가 있었는지 나타내준다.
100 - 199 : Informational Codes (정보 메시지 반환)
200 - 299 : Success Codes (요청 성공)
300 - 399 : Redirection Codes (리다이렉션과 관련된 알림)
400 - 499 : Client Error Codes (클라이언트 오류 코드)
500 - 599 : Server Error Codes (서버 오류 코드)
저 안에 많은 코드가 속해있다.
ex) 엄청 유명한 404
간단하게 설명하면 /home 페이지를 요청하면 요청에 따른 res를 주고, /about 페이지를 요청하면 about페이지를 제공해준다. 같은 url을 사용해도 HTTP 메소드 종류에따라 다른 요청을 할 수 있다.
요청한 페이지가 존재하지 않을경우 404페이지를 제공한다.