HTTP와 URL
1장 HTTP 개관
1.1 HTTP: 인터넷의 멀티미디어 배달부
- HTTP란 Hyper Text Transfer Protocol의 두문자어로, 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다.
- HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용한다.
* TCP 프로토콜을 사용 - 전송 중 손상되거나 꼬이지 않음을 보장
* 비연결성 프로토콜 - 이를 보완하기 위하여 Cookie와 Session이 등장
* 연결을 유지하지 않으므로 요청/응답(request/response) 방식으로 동작
* HTML 문서뿐만 아니라 JSON XML과 같은 형태의 데이터도 주고 받을 수 있음.
1.2 웹 클라이언트와 서버
* 요청: client -> server
* 응답: server -> client
1.3 리소스
- 웹 서버는 웹 리소스를 관리하고 제공한다.
Static resource:
* text file, HTML file, word file, image, media
* 처음 참조가 한번 이루어지고 리소스의 변경을 관리 하지 않는다.
Dynamic resource:
* 요청된 정보, 사용자 정보에 따라 다른 콘텐츠
* 런타임시에 결정되거나 변경될 수 있으며 리소스가 참조될 때마다 리소스를 다시 읽어오기 때문에 StaticResource에 비해 약간의 성능 저하가 발생할 수 있다.
MIME TYPE
* Multipurpose Internet Mail Extensions
* 이메일과 함께 동봉할 파일을 텍스트 문자로 전환해서 이메일 시스템을 통해 전달하기 위해 설계
* 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘
* '/'로 구분된 두 개의 문자열인 타입과 서브타입으로 구성
URI
- 통합 자원 식별자
- 인터넷의 우편물 주소 같은 것으로, 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있음.
- URL, URN
* URL: 특정 서버의 한 리소스에 대한 구체적인 위치를 서술
* URN: 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할
1.4 트랜잭션
- HTTP 트랜잭션은 request와 response로 구성되어 있다.
- 이는 HTTP 메시지라 불리는 정형화된 데이터의 덩어리를 이용하여 이루어진다.
- 메서드
서버에게 어떤 동작이 취해져야 하는지 말해주는 역할을 한다.
1. GET
2. PUT
3. DELETE
4. POST
5. HEAD
- 상태코드
* 모든 HTTP 응답은 상태 코드와 함께 반환된다.
* 상태 코드는 클라이언트에게 요청이 성공인지, 추가 조치가 필요한지 알려주는 숫자이다.
1. 2xx: 성공
2. 3xx: 리다이렉션 완료 - 클라이언트는 요청을 마치기 위해 추가 동작 취해야 함.
3. 4xx: 요청 오류
4. 5xx: 서버 오류
1.5 메시지
- 요청 메시지: 클라이언트가 웹서버로 보낸 메시지
- 응답 메시지: 웹서버가 클라이언트로 보낸 메시지
* 시작줄: 메시지의 첫 줄로, 요청이라면 무엇을 해야할 지, 응답이라면 무슨 일이 일어났는지 나타냄
* 헤더: ':'를 구분자로 key: value 로 구성되어 있으며, 요청에 대한 설명, 혹은 메시지 본문에 대한 설명이 들어간다.
또한 요청에 대한 모든 메타 정보가 전송되었음을 알리는 빈 줄(blank line)이 삽입된다.
* 본문: 임의의 이진 데이터, 혹은 텍스트를 포함하며, 본문의 존재 유무 및 크기는 첫 줄과 HTTP 헤더에 명시된다.
1.6 TCP 커넥션
- TCP/IP: 신뢰성 있는 인터넷 전송 프로토콜 TCP와 IP가 층을 이루는, 패킷 교환 네트워크 프로토콜 집합
* 오류 없는 데이터 전송
* 순서에 맞는 전달
* 조각나지 않는 데이터 스트림
- HTTP 클라이언트가 서버에 메시지를 전송할 수 있게 되기 전에, 인터넷 프로토콜 주소와 포트번호를 사용해 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야 한다.
1.7 프로토콜 버전
- HTTP/1.1: 현재의 HTTP 버전
- HTTP/2.0: HTTP/1.1의 성능 문제를 개선하기 위한 버전으로 설계가 진행 중.
1.8 웹의 구성요소
- Proxy: 클라이언트와 서버 사이에 위치한 HTTP 중개자
- Cache: 서버 지연을 줄이기 위해 웹 페이지, 이미지, 기타 유형의 웹 멀티미디어 등의 웹 문서들을 임시 저장하기 위한 정보기술
- Gateway: 컴퓨터 네트워크에서 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어, 리소스와 어플리케이션을 연결하는 역할
- Tunnel: 한 네트워크에서 다른 네트워크의 접속을 거쳐 데이터를 보낼 수 있도록 하는 기술, HTTP 터널링은 방화벽, NAT 및 ACL을 포함한 제한된 네트워크 연결 조건에서 두 컴퓨터간에 네트워크 링크를 만드는 데 사용
- Agent: 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램.
2장 URL과 리소스
2.1 인터넷의 리소스 탐색하기
URI
통합 자원 식별자라는 뜻으로, URL과 URN으로 구성된 종합적인 개념
URL
브라우저가 정보를 찾는데 필요한 리소스의 위치
URI의 일반화된 부류의 부분집합
리소스가 어디 있는지 설명하여 리소스를 식별
애플리케이션이 리소스에 접근할 수 있는 방법을 제공
URN
URN은 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할을 한다.
2.2 URL 문법
스킴 | 리소스를 가져오려면 어떤 프로토콜을 사용해야 하는지 명시 | 없음 |
사용자 이름 | 몇몇 스킴은리소스에 접근 하기 위해 사용자 이름을 필요로 한다. | anonymous |
비밀번호 | 사용자의 비밀번호, 사용자 이름에 콜론(:)으로 이어 기술 | 이메일 주소 |
호스트 | 리소스를 호스팅하는 서버의 호스트 명이나 IP주소 | 없음 |
포트 | 리소스를 호스팅하는 서버가 열어놓은 포트번호 | 스킴에 따라 다름 |
경로 | 서버 내 리소스가 어디에 있는지 가리킴 | 없음 |
파라미터 | 특정 스킴들에서 입력 파라미터를 기술하는 용도로 사용, 파라미터는 key=value 쌍으로 구성되며 세미콜론(;)으로 구분 | 없음 |
질의 | 스킴에서 애플리케이션에 파라미터를 전달하는데 사용, URL 끝에 ‘?’로 구분 | 없음 |
프래그먼트 | 리소스의 조각이나 일부분을 가리킴, URL의 끝에서 ‘#’으로 구분 | 없음 |
2.3 단축 URL
상대 URL
URL을 짧게 표기하는 방식으로, 현재 위치한 곳을 기준(base url)으로 해서 '그곳'의 위치이다.
/: root
./: 현재 디렉토리
../: 상위 디렉토리
절대 URL
리소스에 접근하는데 필요한 모든 정보를 함유
댓글남기기