Skip to content

study-gram/how-to-write-an-article

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

글 작성 방법

기본 글 작성 방법 markdown 파일로 작성

문법 예제

[공통] 마크다운 markdown 작성법

마크다운(MarkDown) 사용법

예제
# HTTP 개관

## 1.1 HTTP: 인터넷의 멀티미디어 배달부
### HTTP란?
- 전 세계의 웹 서버로부터 대량의 정보(이미지, HTML 페이지, 텍스트 파일, 동영상 등)를 빠르고, 간편하고, 정확하게 사람들의 PC에 설치된 웹 브라우저로 옮겨준다.
- 신뢰성 있는 데이터 전송 프로토콜을 사용하므로 데이터가 지구 반대편에서 오더라도 전송 중 손상되거나 꼬이지 않음을 보장한다.

## 1.2 웹 클라이언트와 서버
### 웹 서버란?
- 인터넷의 데이터를 저장하고, HTTP 클라이언트가 요청한 데이터를 제공한다.
- 웹 서버는 HTTP 프로토콜로 통신하기 때문에 보통 HTTP 서버라고도 불린다.
- 웹 리소스를 관리하고 제공한다.

### 웹 클라이언트란?
- 서버에게 HTTP 객체를 요청하고 사용자에게 해당 데이터/화면을 보여준다.
- 보통 사용자가 사용하는 구글 크롬, 인터넷 익스플로러가 웹 클라이언트이다.
![](../resource/images/chapter1/01-1.png#center)

## 1.3 리소스
### 리소스란?
- 웹 콘텐츠의 원천이다.
- 요청에 따라 콘텐츠를 생성하는 프로그램이 될 수 있다.
- 텍스트파일, HTML파일, 워드 파일, 이미지, 동영상 등 모든 종류의 파일 및 콘텐츠 소스도 포함된다.
> 미디어타입
- HTTP 는 수천 개의 데이터 타입을 다루기 때문에 MIME(Multipurpose Internet Mail Extensions, 다목적 인터넷 메일 확장) 라는 데이터 포맷 라벨을 웹에서 전송되는 객체 각각에 붙인다.
- 즉 이 웹 콘텐츠가 어떤 데이터 타입인지 알려주는 라벨이다.
- 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙인다.
- 표현 형식: '주 타입/부 타입'
    - HTML 데이터 타입 = "text/html"
    - JPEG 이미지 데이터 타입 = "image/jpeg"
    - GIF 이미지 데이터 타입 = "image/gif"
> URI
- URI(Uniform Resource Identifier, 통합 자원 식별자)는 서버 리소스 이름이라고도 불린다.
- 인터넷의 우편물 주소 같은 역할로 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있다.
![](../resource/images/chapter1/01-2.png#center)

> URL
- URL(Uniform Resource Locator, 통합 자원 지시자)는 리소스 식별자의 가장 흔한 형태이다.
- 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다.
- 오늘날 대부분 URI는 URL이다.
- 표현은 세 부분으로 이루어진 표준 포맷을 따른다.
    - 첫 번째, 스킴(Scheme) 이라고 불리며, 리소스에 접근하기 위해 사용되는 프로토콜을 서술한다.(ex: http://)
    - 두 번째, 서버의 인터넷 주소를 제공한다.(ex: www.study-gram.com)
    - 세 번재, 웹 서버의 리소스를 가리킨다.(ex: /images/apple.jpg)
> URN
- URN(Uniform Resource Name, 유니폼 리소스 이름)은 URI 의 두 번재 종류이다.
- 리소스의 위치에 영향을 받지 않는 유일무이한 이름 역할을 한다.

## 1.4 트랜잭션
- 트랜잭션은 요청(Request) 명령(클라이언트 -> 서버)과 응답(Response) 결과(서버 -> 클라이언트)로 구성되어 있다.
### 메소드(method)
- HTTP 는 HTTP 메서드라고 불리는 여러 가지 종류의 요청 명령을 지원한다.
- 모든 요청 메세지는 1 개의 메소드를 갖는다.

|HTTP 메소드| 설명  |
|---------|-----|
|GET|서버에서 클라이언트로 지정한 리소스를 보내라|
|PUT|클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스를 저장하라|
|DELETE|지정한 리소스를 서버에서 삭제해라|
|POST|클라이언트 데이터를 서버 게이트웨이 어플리케이션으로 보내라|
|HEAD|지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라|
### 상태 코드
- 클라이언트에게 요청이 성공했는지 아니면 추가 조치가 필요한지 알려주는 3자리 숫자이다.(3장에서 상세히 다)

|HTTP 상태코드| 설명  |
|-------|-----|
|200| 성공  |
|404|리소스를 찾을수 없음|
|500| 서버 에러|

## 1.5 메시지
- HTTP 메시지는 단순한 줄 단위의 문자열이다.
- Client -> Server 로 보낸 HTTP 메시지를 요청 메시지라 한다.
- Server -> Client 로 보낸 HTTP 메시지를 응답 메시지라 한다.
- 구성은 아래와 같다.
    - 시작줄
        - 요청 및 응답애 대한 내용
    - 헤더
        - 0개 이상의 헤더 필로 구성
        - 쌍점(:)으로 구분되어 하나의 이름과 하나의 값으로 구성
        - 빈 줄로 끝남
    - 본문
        - 어떤 종류의 데이터든 들어갈 수 있는 메시지 본문
        - 요청: 웹 서버로 데이터를 실어보냄
        - 응답: 클라이언트로 데이터 반환
        - 텍스트 이외에 임의의 이진 데이터 포함 가능(이미지, 비디오, 오디오 등)

## 1.6 TCP 커넥션
### TCP/IP
> TCP(Transmission Control Protocol, 전송 제어 프로토콜)
- 오류 없는 데이터 전송
- 순서에 맞는 전달(데이터는 언제나 보낸 순서대로 도착)
- 조각나지 않는 데이터 스트림(언제든 어떤 크기로든 보낼 수 있음)
> TCP/IP
- 패킷 교환 네트워크 프로토콜의 집합
- 각 네트워크와 하드웨어의 특성을 숨기고, 어떤 종류의 컴퓨터/네트워크든 서로 신뢰성 있는 의사소통을 가능하게 함
- 일단 TCP 커넥션이 맺어지면, 클라이언트와 서버 컴퓨터 간에 교환되는 메시지가 없어지거나, 손상되거나 하는 일은 없다.
### 접속, IP 주소 그리고 포트번호
- HTTP 메시지를 전송하기 위해서는 IP 주소와 포트번호를 사용해 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야 함
- 표현 방식 : "IP주소:포트번호"(ex: http://127.0.0.1:8080)
- 클라이언트와 서버 사이의 통신 순서
    1. 웹 브라우저는 서버의 URL 에서 호스트 명을 추출
    2. 서버의 호스트 명을 IP로 변환
    3. URL에서 포트번호를 추출
    4. 웹 서버와 TCP 커넥션을 맺음
    5. 클라이언트는 서버에 HTTP 요청을 보냄
    6. 서버는 클라이언트에 HTTP 응답을 보냄
    7. 커넥션이 닫히면, 웹 브라우저는 문서를 보여줌

## 1.7 프로토콜 버전
- HTTP/1.0 : 처음으로 널리 쓰이기 시작한 HTTP 버전
- HTTP/1.1 : HTTP 설계의 구조적 결함 교정, 성능 최적화, 잘못된 기능 제거에 집중한 현재의 HTTP 버전
- HTTP/2.0 : HTTP/1.1 성능 문제를 개선한 HTTP 버전(10장에서 자세히 다룸)

## 1.8 웹의 구성요소
| 이름    | 설명                                  |
|-------|-------------------------------------|
| 프락시   | 클라이언트와 서버 사이에 위치한 HTTP 중개자          |
| 캐시    | 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고 |
| 게이트웨이 | 다른 애플리케이션과 연결된 특별한 웹 서버             |
|터널| 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시       |
|에이전트| 자동화된 HTTP 요청을 만드는 준지능적 웹클라이언트       |

원본 주소


본문 제목 하단 작성자 작성하고 게시물 작성

예제

본문의 제목

작성자 [gitname]('private github repo url')

About

글 작성 방법

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published