일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 프로그래머스 레벨 2
- 타입스크립트
- 수학
- TCP
- 프로그래머스
- 레벨 1
- 백준
- 가천대
- 자바스크립트
- 쉬운 문제
- HTTP 완벽 가이드
- 알고리즘
- 타입 챌린지
- Crawling
- Algorithm
- 소켓
- Nestjs
- 그래프
- BFS
- dfs
- dp
- HTTP
- javascript
- 문자열
- 크롤링
- type challenge
- Node.js
- typescript
- socket
- ip
- Today
- Total
kakasoo
트랜잭션 ( Transaction ) 본문
HTTP 트랙잭션은 요청 명령과 응답 결과로 이루어져 있다.
- 요청 명령
- GET / special/saw-blade.gif HTTP/1.0 Host: www.joes-hardware.com
- 응답 결과
- HTTP/1.0 200 OK Content-type: image/gif Content-length: 8572
메서드
HTTP 요청 메시지는 1개의 메서드를 가진다. 메서드는 서버에서 어떤 동작이 취해져야 하는지를 뜻한다. 흔히 GET, PUT, DELETE, POST, HEAD를 쓴다.
상태 코드
모든 HTTP 응답 메시지는 상태 코드를 가진다. 상태 코드는 클라이언트에게 요청에 대한 결과를 알려주는 세 자리 숫자이다.
웹 페이지는 여러 객체로 이루어질 수도 있다
웹 브라우저는 ‘시각적으로 풍부한’ 웹 페이지를 호출할 때 여러 차례의 HTTP 트랜잭션을 수행한다. HTML을 가져온 후, 나머지 리소스들을 위한 트랜잭션이 실행된다. 이 때, 리소스들은 각기 다른 서버에 존재할 수도 있다. 웹 페이지는 리소스가 아닌, 리소스의 모음이다.
메시지
위에, 트랜잭션은 요청과 응답으로 이루어져 있고, 다시 그것들은 메서드, 상태 코드 등으로 이루어져 있다고 서술하였다. 각 메시지들을 더 자세히 볼 때, HTTP 메시지들은 아래와 같은 특징을 지닌다.
- 이진 형식이 아닌 일반 텍스트(String)이기 때문에 사람이 읽고 쓰기 편하게 되어 있다.
어떤 프로그래머들은, 이진 형식이나 엄격한 텍스트 구조였다면 처리가 편하고 속도가 빨랐을 것이라고 말하지만, HTTP는 확장과 디버그가 용이하여 대다수에게는 좋은 평가를 받고 있다. - 요청과 응답 결과는 유사한 형식으로 이루어져 있는데, 아래의 세 가지 구조를 지닌다.
- 시작 줄 : 요청이라면 무엇을 해야 하는 것인지, 응답이라면 무엇이 일어났는지를 말한다.
(GET /test/hi-there.txt HTTP/1.0 또는 HTTP/1.0 200 OK) - 헤더 (header) : 시작 줄 다음에는 0개 이상의 헤더 필드가 존재하고, 이 헤더 필드는 쌍점으로 구분되어 하나의 이름에 하나의 값을 지닌다.
헤더는 한 줄에 1개 씩만 존재하며, 마지막에는 빈 줄 하나를 두어 본문과 구분을 둔다. - 본문 (body) : 요청의 본문은 웹 서버로 데이터를 보내며, 응답은 역으로 반환한다. 본문은 임의의 이진 데이터를 포함할 수도 있다. (ex. image)
- 시작 줄 : 요청이라면 무엇을 해야 하는 것인지, 응답이라면 무엇이 일어났는지를 말한다.
TCP 커넥션
TCP (Transmission Control Protocol, 전송 제어 프로토콜) 커넥션을 통해 메시지는 한 곳에서 다른 곳으로 이동된다.
TCP/IP
HTTP는 애플리케이션 계층 프로토콜이다. HTTP는 네트워크 통신의 핵심적인 세부 사항에 대해서 신경쓰지 않는다. 이러한 과정은 신뢰성 있고 대중적인 프로토콜인 TCP/IP 에게 맡긴다. TCP는 아래의 세 가지를 제공한다.
- 오류 없는 데이터 전송
- 순서에 맞는 전달 (데이터는 보낸 순서로 도착한다.)
- 조각나지 않는 데이터 스트림 (언제든 어떤 크기로든 보낼 수 있다.)
- 속도 면에서 우수하나 위의 특성을 지니지 못한 것으로, UDP 프로토콜이 있으니, 관심있는 사람은 별도로 확인하길 바람.
인터넷 자체가 TCP/IP에 기초하고 있는데, TCP/IP란 TCP와 IP가 층을 이루는, 패킷 교환 네트워크 프로토콜의 집합이다. TCP/IP는 각 네트워크와 하드웨어의 특성을 숨기고, 어떤 종류의 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해준다. 일단 TCP 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간에 교환되는 메시지가 없어지거나, 손상되거나, 순서가 바뀌는 일은 켤고 없다.
네트워크 개념 상 HTTP 프로토콜은 TCP 위의 계층이다. 계층 순서는 4계층, 5계층, 7계층 등 경우에 따라 따로 분리하곤 하는데, 이 책의 HTTP 네트워크 프로토콜 스택은 HTTP > TCP > IP > 네트워크를 위한 인터페이스 > 물리적인 네트워크 하드웨어로 이어진다.
접속. IP 주소 그리고 포트번호
HTTP 클라이언트는 서버에 메시지를 전송하기 전에 TCP/IP 커넥션을 맺어야 한다. TCP/IP는 두 컴퓨터 사이의 연결선 역할을 수행한다. TCP에서는 서버 컴퓨터에 대한 IP 주소와, 실행 중인 프로그램의 포트 번호를 필요로 한다. 이 IP주소와 포트 번호가 다시 앞에서 말한 URL이다. 도메인(또는 호스트 명)으로 되어 있는 경우도, DNS(Domain Name Service)에 의해 쉽게 IP주소와 포트 번호로 변환이 가능하다.
- 웹 브라우저는 서버의 URL에서 호스트 명을 추출한다.
- 만약 URL이 도메인으로 되어 있다면, 서버의 호스트 명을 IP로 변환한다. 대부분은 이 단계를 거쳐야 한다.
- URL에 포트 번호가 있다면, 포트 번호를 추출한다.
- 웹 브라우저는 웹 서버와 TCP 커넥션을 맺는다.
- 웹 브라우저는 서버에 HTTP 요청을 보낸다.
- 서버는 웹 브라우저에 HTTP 응답을 보낸다.
- 커넥션이 닫히고, 웹 브라우저는 문서를 보여준다.
'프로그래밍 > HTTP' 카테고리의 다른 글
[HTTP] 6. 메서드 (Method) (0) | 2020.10.17 |
---|---|
[HTTP] 5. 메세지 (Message) (0) | 2020.10.17 |
[HTTP] 4. URL (0) | 2020.10.11 |
리소스 ( Resource ) (0) | 2020.10.07 |
HTTP 완벽 가이드 목차 및 정리 (0) | 2020.10.06 |