웹/HTTP
[HTTP 완벽가이드] 1장 HTTP 개관
셈(dev)
2022. 7. 24. 15:13
1.1 HTTP: 인터넷의 멀티미디어 배달부
- HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용
1.2 웹 클라이언트와 서버
- 웹 콘텐츠는 웹 서버에 존재
- 클라이언트는 서버에게 HTTP 요청을 보내고 서버는 요청된 데이터를 HTTP 응답으로 돌려준다.
- 클라이언트: 익스플로러, 구글 크롬
1.3 리소스
- 웹 리소스는 웹 콘텐츠의 원천
- 정적파일: 텍스트, HTML, 마이크로소프트 워드, 어도비 아크로뱃 파일, JPEG 이미지, AVI 동영상 파일 등
- 동적 콘텐츠 리소스: 사용자가 누구인지, 어떤 정보를 요청 했는지, 몇 시인지 등에 따른 콘텐츠들을 생성
- 1.3.1 미디어 타입
- MIME: 데이터 포맷 라벨(multipurpose Internet Mail Extensions)
- 주 / 부 타입으로 이뤄짐
- ex) text/html, text/plain, image/jpeg ..
- 1.3.2 URI
- uniform resource identifier
- 정보 리소스를 고유하게 식별하고 위치를 저장할 수 있다.
- URL과 URN으로 나뉨
- 1.3.3 URL
- uniform resource locator
- 특정 서버의 한 리소스에 대한 구체적인 위치를 서술함
- 첫 번째 부분은 스킴(http://)
- 두 번째 부분은 서버의 인터넷 주소를 제공
- 마지막은 웹 서버의 리소스를 가리킴
- 1.3.4 URN
- uniform resource name
- 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향을 받지 않는 유일무이한 이름 역할을 함
1.4 트랜잭션
- 1.4.1 메서드
- 요청 명령
- 모든 HTTP 요청 메시지는 한 개의 메서드를 갖는다
- GET, POST, PUT, DELETE, POST, HEAD
- 1.4.2 상태 코드
- 모든 HTTP 응답 메시지는 상태 코드와 함께 반환됨
- HTTP는 사유 구절도 함꼐 보낸다.
- 1.4.3 웹페이지는 여러 객체로 이뤄질 수 있다.
- 애플리케이션은 하나의 작업을 수행하기 위해 여러 HRRP 트랜잭션을 수행한다.
1.5 메시지
- HTTP 메시지는 단순한 줄 단위의 문자열
- 웹 클라이언트에서 웹 서버로 보낸 HTTP 메시지를 요청 메시지라고 부르며, 반대는 응답 메시지라고 부른다.
- 세 가지로 구성되어 있다.
- 시작줄: 요청이라면 무엇을 해야 하는지, 응답이라면 무슨 일이 일어났는지
- 헤더: 쌍점으로 구분돼 있는 하나의 이름과 하나의 값으로 구성
- 본문: 어떤 종류의 데이터든 들어갈 수 있는 메시지 본문
1.6 TCP 커넥션
- 1.6.1 TCP/IP
- 인터넷 전송 프로토콜
- 오류없는 데이터 전송, 순서에 맞는 전달, 조각나지 않는 데이터 스트림 보장
- 1.6.2 접속, IP 주소 그리고 포트번호
- HTTP 전에 인터넷 프로토콜 주소와 포트 번호를 사용해 클라이언트와 서버 사이에 커넥션을 맺어야 한다.
- 도메인 = 호스트 명
- URL에 포트번호가 없으면 기본값 80이라고 가정하면 된다
- 1.6.3 텔넷을 이용한 실제 예제
- 텔넷은 직접 컴퓨터의 포트로 TCP 커넥션을 연결해서 그 포트로 글자를 타이핑 해 넣을 수 있게 해준다.
1.7 프로토콜 버전
- HTTP/0.9: GET 메서드만 지원, MIME, 헤더, 버전 정보는 지원 X
- HTTP/1.0: 처음으로 널리 쓰이기 시작한 HTTP 버전
- HTTP/1.0+: keep-alive 커넥션, 가상 호스팅 지원, 프락시 연결 지원
- HTTP/1.1: 설계 결함 교정, 성능 최적화, 잘못된 기능 제거
- HTTP/2.0: 구글의 SPDY 프로토콜 기반
1.8 웹의 구성요소
- 프락시: 클라이언트와 서버 사이에 위치한 HTTP 중개자
- 캐시: 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고
- 게이트웨이: 다른 웹플리케이션과 연결된 특별한 웹 서버
- 터널: 단순 HTTP 통신을 전달하는 특별한 프록시
- 1.8.1 프락시
- 클라이언트와 서버 사이에 위치
- 클라이언트의 모든 HTTP 요청을 받아 서버에 전달
- 주로 보안을 위해 사용
- 1.8.2 캐시
- 자주 찾는 것의 사본을 저장, HTTP의 프락시 서버
- 1.8.3 게이트 웨이
- 다른 서버의 중개자로 동작하는 특별한 서버
- HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용됨
- 스스로 리소스를 갖고 있는 진짜 서버인 것처럼 요청을 다룬다.
- 1.8.4 터널
- 두 커넥션 사이에서 raw 데이터를 열어보지 않고 그대로 전달해주는 HTTP 애플리케이션
- 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용됨
- ex) 암호화된 SSL 트래픽을 HTTP 커넥션으로 전송함으로써 웹 트래픽만 허용하는 사내 방화벽 통과
- 1.8.5 에이전트
- 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램