250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 연결리스트
- 프로세스
- 알고리즘
- 이분탐색이란
- 멀티프로세서
- 백준 장학금
- 엔티티 그래프
- 백준장학금
- 완전이진트리
- 최대 힙
- 연결리스트 종류
- AVL트리
- 최소힙
- MSA
- 자료구조
- 점근적 표기법
- 운영체제
- jpa n+1 문제
- HTTP
- 스케줄링
- Kruskal
- SpringSecurity
- 힙트리
- JPA
- JVM
- heapq
- spring
- python
- 강화학습
- posix
Archives
- Today
- Total
KKanging
[http 완벽 가이드] 1장 HTTP 개관 본문
이 내용은 http 완변 가이드란 책을 읽고 정리한 내용입니다.
더 자세한 내용이 궁금하시면 책을 직접 읽어보시는 걸 추천합니다.
1장 HTTP 개관
1.HTTP: 인터넷의 멀티 미디어 배달부
HTTP = HyperText Transfer Protocal
- HTTP 는 신뢰성 있는 전송 프로토콜
- 전송 중간에 파괴 , 중복 , 왜곡 걱정이 없다
2. 웹 클라이언트와 서버
- 클라이언트가 특정 리소스를 필요할 것이다 그 리소스를 얻기 위해 어떻게 작용할까
- 리소스(resource;;자원)
- 클라이언트는 리소스가 필요할때마다 server에게 HTTP Request를 보내고 server는 그에 맞는 HTTP Response를 반환하는 형태로 리소스를 보여준다
- 예를 들면 브라우저(크로,edge같은) 가 www.naver.com 서버에게 HTTP요청을 보내면 naver 서버는 응답을 보내고 화면을 띄우는 형태로 리소스를 얻는다.
3. 리소스 ( Resource)
- 웹 서버가 관리하는 것 == 리소스
리소스의 형태
- 서버 파일 시스템의 정적 파일 (그림 파일, 텍스트, 이미지……etc)
- 동적 파일 (요청 유저가 누구인지에 따라 다르게 나타내거나 아님 시간에 따라 다르게 나타내는 파일)
<aside> 💡 요약: 웹의 모든 종류의 콘텐츠도 리소스가 될 수 있다.
</aside>
3-1 미디어 타입 MIME
MIME ( Multipurpose Internet Mail Extensions)
- 인터넷에서는 수천가지 데이터 타입을 다루기 때문에 HTTP는 웹에서 전송된 객체 각각에 신중하게 MIME타입이라는 데이터 포멧 라벨을 붙인다
- server 가 MIME 타입을 응답에 같이 보내면 client 는 MIME 타입을 보고 다룰 수 있는 객체인지 확인한다.
- 예) HTML 문서 text/html 그리고 JPEG image/jpeg …etc
- 수백가지의 잘알려진 MIME 타입과 그보다 더 많은 실험용 혹은 특정 용도의 MIME 타입이 존재한다.
3-2 URI ( Uniform Resource Identefier) 통합 자원 식별자
- 웹 서버의 리소스들은 각자 이름을 갖고 있기 때문에, 클라이언트들은 관심있는 리소스를 지목할 수 있다. → 이때 필요한게 URI
- 웹 서버의 리소스들은 고유한 주소나 이름을 가짐 → URI
- URI의 종류
- URL (Uniform Resource Locators) 통합 자원 지시자 (널리쓰임)
- URN (Uniform Resource Name) 통합 자원 이름
- URL은 정확한 주소 → 리소스가 정확히 어디에 있고 어떻게 접근한지 정확히 명시한 것이다.
- ex) http://www.naver.com//index.html
- http → scheme(스켐)이라고 불리며 리소스에 접근하기 위한 프로토콜 명시
- www.naver.com 호스트명 서버의 주소
- index.html → 서버에서의 리소스 주소
- ex) http://www.naver.com//index.html
- URN은 어떤 특정 자원의 유일한 독립적인 이름을 뜻함.
- 이름을 안다면 자원의 위치가 바뀐다 하더라도 찾을 수 없음
- 널리 쓰이진 못함 인프라가 협소해서?
<aside> 💡 통상적으로 언급없이는 URI == URL로 봐도 무방하다 그만큼 URL을 널리 쓰이기 때문
</aside>
4. 트랜잭션
- 트랜잭션이란?
- 요청 명령
- 응답 결과
- 트랜잭션은 HTTP 메세지라는 정형화 된 데이터 덩어리를 이용해 이루어진다.
4.1 메서드 (client)
- http 메서드라고 불리는 여러가지 종류의 요청 명령을 지원한다.
- 요청 명령 메서드(즉 client → server) 는 무조건 1개의 메서드를 가진다
GET 서버에서 클라이언트로 지정한 리소스를 보내라
PUT | 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스를 저장하라 |
DELETE | 지정한 리소스를 서버에서 삭제해라 |
POST | 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라 |
HEAD | 지정한 리소스에 대한 응답에서 HTTP 헤더 부분만 보내라 |
4.2 상태코드 (server)
200 좋다
302 | 다시 보내라. 다른 곳에서 리소스를 가져가라 |
404 | 없음 리소스를 찾을 수 없다 |
- 응답 결과에는 (응답 메세지)는 모두 상태코드와 함께 반환
- 3자리로 구성, HTTP는 각 숫자 상태코드에 텍스트와 함께 사유구절로 함께 보낸다.
4.3 웹페이지는 여러 객체로 이루어져 있다.
- 웹페이지는 여러 리소스를 필요하는 순간이 많다 그래서
- 여러번의 트랜잭션이 작용한다..
5. 메세지(HTTP 메세지의 구조는?)
- HTTP 메세지는 단순한 줄 단위 문자열이다.
- 이진 형식이 아닌 일반 텍스트이기 때문에 사람이 읽고 쓰기 쉽다.
- 메세지의 형태
- 시작줄
- 헤더
- 본문
- 시작줄 (무엇을 해야하는지 or 무엇이 일어 났는지)
- 요청 메세지: 요청 메서드 리소스 주소 프로토콜 버전 등이 들어간다.
- 응답 메세지: 상태코드 프로토콜 버전 그리고 사유구절 등이 있다.
- 헤더 (리소스 정보?로 이해함)
- 하나의 이름 : 하나의 값으로 구성되어 있음
- 요청 메세지에는 host정보나
- 응답 메세지에는 리소스 정보 그리고 리소스 MIME 타입이 있음
- 본문 (알멩이)
- 만약 GET 요청을 보냈다면
- 응답 메세지에 GET 요청을 보낸 리소스를 본문에 넣는다.
- 본문은 이진 파일도(이미지 동영상 음성) 올 수 있고 물론 텍스트(HTML,text)파일도 가능하다.
- 본문은 요청 응답 1개만 있을 수 있고 2개 다 있을 수 도 있다.
6. TCP 커넥션
- 이제 메세지가 어떻게 생겼는지 보았다.
- TCP 커넥션은 어떻게 메세지를 보내는지 알 수 있다.
6.1 TCP/IP
- HTTP는 애플리케이션 계층 프로토콜이다.
- 네트워크 통신의 핵심적인 세부 사항에 대해서 신경x
- 대신 대중적이고 신뢰성있는 인터넷 전송 프로토콜(Transmission Control Protocol: 전송 제어 프로토콜) TCP를 사용한다.
- TCP는 다음을 제공한다
- 오류없는 데이터 전송
- 순서에 맞는 전달
- 조각나지 않는 데이터 스트림
- TCP/IP는 TCP와 IP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합
- 네트워크와 하드웨어의 특성을 숨기고 신뢰성있는 의사소통을 하게 한다.
- 일단 TCP 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간에 교환되는 메세지가 없어지거나, 손상되거나, 순서가 바뀌는 일은 없다.
6.2 접속, IP 주소 그리고 포트 번호
- HTTP 클라이언트가 서버에 메세지를 전송할 수 있게 되기 전
- 인터넷 프로토콜(Internet Protocal: IP) 주소와 포트번호를 사용하여 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야 한다.
- 서버의 IP와 서버에서 실행중인 프로그램의 포트번호는 어떻게 알까?http://205.23.5.2:80/index.html
- http://www.naver.com:80/index.html
- →URL
- IP주소는 DNS(Domain Name Service)로 IP주소를 도메인 명으로 도메인 명을 IP주소로 변환할 수 있다.
- port번호는 생략되면 디폴트가 80이다.
- 결론 메세지가 보내지는 순서
- 웹브라우저는 서버의 URL에서 호스트명 추출
- 웹 브라우저는 서버의 호스트명을 IP 변환
- 웹 브라우저는 Port 추출
- 웹 브라우저는 서버와 TCP 커넥션을 맺음
- 웹 브라우저는 HTTP 요청을 보낸다.
- 서버는 HTTP 응답을 돌려준다.
- 커넥션이 닫히면 웹브라우저는 문서를 보여준다.
7. 웹의 구성요소
- 인터넷과 상호작용할 수 있는 웹 애플리케이션은 많다.
- 프락시: 클라이언트와 서버 사이에 위치한 HTTP 중개자
- 캐시: 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고
- 게이트 웨이: 다른 애플리케이션과 연결된 특별한 웹 서버
- 터널: 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시
'cs > http' 카테고리의 다른 글
[http 완벽 가이드] 6장 프락시 (0) | 2023.08.13 |
---|---|
[http 완벽 가이드] 5장 웹 서버 (0) | 2023.08.06 |
[http 완벽 가이드] 4장 커넥션 관리 (0) | 2023.07.28 |
[http 완벽 가이드] 3장 HTTP 메시지 (0) | 2023.07.28 |
[http 완벽 가이드] 2장 URL과 리소스 (0) | 2023.07.28 |