URL & URI

- 컴퓨터 네트워크에서 resource를 가져오기 위한 문서와 프로토콜의 글로벌 주소 이다.
- 컴퓨터 네트워크에서 resource의 위치와 이를 가져오기 위한 테크닉에 대한 정보를 제공한다.
- URI는 물리적 또는 논리적 resource를 식별하는 특징을 담은 string 이다.
- 통일성을 위해 syntax 규칙을 따른다.
- URL, URN 은 URI 의 타입인 셈이다.
- URN 은 리소스에 이름을 부여 한다.

URI Syntax
- URI = scheme:[//autority]path[?query][#fragment]

HTTP & HTTPS
HTTP ( HyperText Transfer Protocol)
-
stateless 의 의미란, 요청시 즉시 연결을 수락해 준다는 뜻이다. 링크를 클릭하면, 연결 요청을 보내게 되고, web browser가 이 요청을 서버로 보내며, 서버는 페이지를 열어줌으로써 이 요청에 응답한다. -> 서버가 클라이언트의 state를 보존하지 않는다
-
HTTP는 정보를 제공하는 것에 중점을 두지만 정보가 어떻게 이동하는지에 대해서는 크게 신경을 쓰지 않으므로 HTTP의 정보는 쉽게 갈취 될 수 있고 변경 될 수 있다. (보안 취약)
HTTPS
- HTTPS 는 HTTP 와 다르게 SSL(Secure Sockets Layer)인증서를 통해 통신을 암호화 해주어, 통신을 보호할 수 있다. 누가 정보를 훔친다 해도 데이터가 암호화 되어 있다.
1) 서버 인증
2) 데이터 통신 암호화
3) tampering 으로부터 보호
- HTTPS는 HTTP 웹 사이트보다 SEO (Search Engine Optimization) 에서도 앞서가는데, 이는 더 안전하기때문에 사람들이 방문을 더 많이 하게 되고, 구글의 SEO에서도 HTTPS 에 점수를 더 준다.
- 또한, AMP (Accelerated Mobile Pages)를 만들때도 HTTPS 를 써야만 한다.
HTTP Requests
- HTTP 요청이란 행동을 실행하기 위해 클라이언트가 서버로 보내는 메세지 이다.
Start line 에는 3가지 요소가 존재한다.
1) HTTP method: GET, PUT, POST 와 같은 동사가 들어가거나, HEAD, OPTIONS 와 같은 명사가 들어 갈 수도 있다.
2) 요청 타겟: 주로 URL 이며, 프로토콜, 포트, 및 도메인의 절대 경로일 수도 있다.
3) HTTP 버전: 나머지 메세지의 구조를 결정하는 HTTP의 버전이 start line 의 마지막 요소이다.
- request header 에선 다른 종류의 많은 헤더들이 나타날 수 있다. 이는 다음과 같은 그룹으로 나눌 수 있다.

Body
- 모든 요청이 바디를 가지고 있진 않다. 리소스 fetching 을 위해 쓰이는 GET, HEAD, DELETE 또는 OPTIONS 와 같은 요청은 대게 바디를 필요로 하지 않는다.
- Body 부분은 크게 두가지의 카테고리로 나뉠 수가 있다.
1) 단일 리소스 바디: 하나의 파일로 이루어져 있으며, 두가지 헤더(Content-type, Contetn-length)에 의해 정의된다.
2) 다수 리소스 바디: 여러 부분의 바디로 이루어져 있으며 각 부분은 다른 정보를 담고 있다.
HTTP RESPONSES
Status line
1) 프로토콜 버전: 주로 HTTP/1.1 이다.
2) Status code: 요청의 성공 또는 실패를 알려준다.
ex)
200: 통신 성공
404: 서버가 요청된 리소스를 찾을 수 없다.
302: 요청된 리소스가 임시적으로 Location 헤더에서 주어진 URL 로 이동됬다는 에러.
500: 서버에러로 인한 요청 수행 불가.
일반적인 status line 은 "HTTP/1.1 404 Not Found" 와 같이 생겼다.
