# HTTP
# Protocol
통신 규약
보내고 받는 것을 해석하여 처리하는 것
# HTTP
HyperText Transfer Protocol
Request
- userAgent에서 기기와 브라우저를 구분
Response
- 상태 코드값을 넘긴다(ex. 200, 404, 500....)
- body에는 HTML과 JavaScript 뿐이다.
- JS는 인라인 컴파일러이기 때문에 웹에 용이하다.
- 그때 그때 컴파일한다.
Connectionless - 서버에 연결하고, 요청후 응답을 받으면 연결을 끊는다.
- 장점: 불특정 다수를 대상으로 하는 서비스에 적합
- 단점: 클라이언트의 이전 상태를 알 수 없음. (stateless), 예를 들어 과거에 로그인을 성공했더라도 로그 정보를 유지할 수 없다. => cookie를 이용해서 이 문제를 해결
HTTP는 전송 프로토콜이고 URI(Uniform Resource Identifiers)는 자원의 위치를 알려주기 위한 프로토콜이다.
http 통신 구조
http 상태 코드
- 자주 쓰이는 응답코드
200 - OK
, 서버가 요청을 제대로 처리함.301 - Moved Permanently
, 해당 URI가 다른 주소로 바뀌었을 때.400 - Bad Request
, request에 포함된 보내는 데이터가 잘못 보내어 졌을 때.401 - Unauthorized
, 유저가 해당 요청을 진행하려면 로그인을 필요하다는 것을 나타내는 코드.403 - Forbidden
, 서버가 요청을 거부 (권한이 없기 때문), 예를 들어 구독자만 볼 수 있는 데이터 요청했을 때.404 - Not Found
, 요청한 자원(uri)이 서버에 존재하지 않음.505 - Internal Server Error
, 서버에서 에러가 났을 때 사용되는 코드.
웹 실행 순서는 웹 서버에서 전달 받은 html과 js 중에 html을 먼저 화면에 뿌리고 나서 js를 한줄씩 실행하고 화면에 뿌려준다.
# Keep-alive
- Keep-alive 설정을 하면, 지정된 시간동안 연결을 끊지 않고 요청을 계속해서 보낼 수 있다.
# HTTP Request 구조
크게 3부분으로 구성 Start Line / Headers / Body
- Start Line
예시)
GET /search HTTP/1.1
GET
: HTTP Method에 해당 /request
가 의도한action
을 정의하는 파트- HTTP Methods:
GET
,POST
,PUT
,DELETE
,OPTIONS
등이 있다.
- HTTP Methods:
/search
: Request target- 해당 request가 전송되는 목표 uri
HTTP/1.1
: HTTP Version
- Headers
- request에 대한 추가정보를 담고 있는 부분
Accept: _/_
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3
- 자주 사용되는 Header 정보
- Host: 요청이 전송되는 target의 host url
- User-Agent: 요청을 보내는 클라이언트에 대한 정보
- Accept: 해당 요청이 받을 수 있는 응답(response) 타입
- Connection:
keep-alive
로 설정하면 한 번에 하나씩 요청/응답이 아닌 불러올 파일들을 모두 한 번에 받을 수 있다. - Content-Type: 요청이 보내는 메시지 body의 타입.
- Content-Length: 메세지 body의 길이
- Body
- 클라이언트 요청(request)의 실제 내용
POST /payment-sync HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: intropython.com
User-Agent: HTTPie/0.9.3
{
"imp_uid": "imp_1234567890",
"merchant_uid": "order_id_8237352",
"status": "paid"
}
# TCP/IP
TCP/IP 는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다.
TCP는 IP 위에서 동작하는 프로토콜로 **데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.**
FTP ( File Transfer Protocol ) [킹무위키](