장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
*Node.js 프로그래밍 입문(고경희)를 읽고 작성한 글입니다.
클라이언트는 서버로 자료를 요청하고, 서버는 클라이언트로 자료를 전송하는 방식으로 웹이 동작한다.
- HTTP request
- HTTP response
근데 서로 사용하는 프로그래밍 언어도 다르고 동작 방식도 다르기 때문에 통일된 규칙, HTTP protocol을 사용해 자료를 주고 받는다.
1. HTTP request
클라이언트가 서버로 무엇인가 요청할 때는 웹 브라우저에 URL을 입력해서 요청한다.
2. IP address & Port
우리는 문자로 입력하지만 사실 인터넷에서 서버에 접속하기 위해선 IP주소: 포트번호(211.47.28.14:443)가 필요하다.
수많은 클라우드 컴퓨터와 서버 컴퓨터에게 각각 고유한 주소가 있기엔 숫자가 부족하다. 그래서 google, naver처럼 영문 이름를 사용하면 서버에서 자동으로 IP(Internet Protocol)주소를 할당해준다. Port 번호는 서버 프로그램 중 어느 프로그램을 실행할 지 알려준다.
- Domain과 DNS(Domain Name System Server)
- 라우팅 프로토콜과 vlan은 트래픽 관리 개념
서버 프로그램은 파일 업로드/다운 프로그램, 웹 내용 관리 프로그램, 메일 전송/수신 프로그램 등 다양한 프로그램의 묶음으로 동작하는데, HTTP 프로토콜에서 웹은 80을 사용한다. 근데 구글 웹은 HTTP 가 자동으로 HTTPS 로 바뀌므로 443을 포트로 쓴다.
번호 | 기능 |
20, 21 | FTP(FILE Transfer) |
25 | SMTP(Simple Mail) |
53 | DNS |
80 | Web(HTTP) |
110 | POP3(Post Office) 이메일 수신 |
443 | HTTPS |
자 이제 원하는 주소로 접속을 했으니 서버가 어떻게 이걸 불러왔는지 확인해보자.
3. Headers
클라이언트가 서버에 요청하는 Request는 헤더와 본문으로 구성되어있다.
- Request Headers에는 사용하는 시스템 정보, 웹 브라우저 정보, 사용한 언어 등이 담겨 있다.
- Request 본문에는 사이트 주소가 있다.
서버가 클라이언트에 응답하는 응답 메시지는 Response Headers, Response 본문으로 구성된다.
- 헤더에는 현재 파일이 어떤 형식을 사용하는지, 인코딩은 무엇인지 등 파일과 관련된 기타 정보가 담겨있다.
- 본문에 브라우저 창에 띄울 텍스트나 이미지같은 사이트 내용이 들어있다.
3-1. Method
아까 서버에는 여러 프로그램이 있다고 했다. 클라이언트가 서버로 정보를 보내면서 서버 정보를 가져올 건지, 브라우저 화면에 입력한 정보를 서버에 전송하는 것인지 등 어떻게 데이터를 처리할 건지 방식을 미리 알려준다. 이것을 Method라고 한다.
Request Method | |
GET | 서버 정보를 가져올 때 사용한다. URL의 문서를 응답으로 반환하여 URL이 바뀐다. |
POST | 서버에 데이터를 저장할 때 사용한다. 회원가입, 로그인 등 사용자가 입력한 정보가 POST를 통해 서버로 넘어간다. |
PUT | 서버에 있는 데이터를 수정(업데이트)할 때 사용한다. 이미 저장되어 있는 정보의 일부를 수정할 때 서버로 전송된다. |
DELETE | 서버에서 데이터를 삭제할 때 사용한다. |
3-2. Status Code
CODE | Message | Description | |
1xx | Informational | 계속 처리 중 | |
2xx | Successful | 요청 성공 | |
200 | OK | ||
201 | Created | 요청이 성공적으로 처리되어 새로운 자료가 생성되었습니다. | |
204 | No Content | 요청이 성공적으로 처리되었지만 응답으로 반환할 자료가 없습니다. | |
3xx | Redirection | 다른 위치로 이동 | |
301 | Moved Permanently | ||
4xx | Client Error | ||
400 | Bad Request | 클라이어언트 요청이 잘못되었거나 유효하지 않습니다. | |
401 | Unauthorized | 권한이 없어 거절되었지만 인증을 다시 시도할 수 있습니다. | |
403 | Forbidden | 권한이 없어 거절되었고 인증을 시도하면 계속 거절됩니다. | |
404 | Not Found | 해당 데이터를 찾을 수 없습니다. | |
5xx | Server Error | ||
500 | Internal Server Error | 서버에 요청을 처리하는 동안 오류가 발생했습니다. | |
503 | Service Unavailable |
200을 반환하면 서버가 요청을 성공했다는 것을 말한다.