본문 바로가기

etc

HTTP가 무엇인가?

@마크다운


코드를 적는건 누구나 다 한다.

나는 코드를 적기만 하는 개발자가 아닌 기술을 이해하고 설명해줄 수 있는 개발자가 되고싶다.


그래서 HTTP를 찾아보고 정리해 봤습니다.


틀린내용이 있다면 적극적으로 알려주세요. 바로 반영하겠습니다.



## HTTP


www에서 정보를 주고 받을 때 사용되는 규약 이며 80번 포트를 사용


### HTTP 특징


1. TCP/IP기반의 통신방식 (3-way handshake)

2. 비연결 지향

- 비연결성과 다르다.

- HTTP는 TCP/IP 프로토콜을 기반으로 하지만

- 요청이 올 때 마다 3way handshake를 한다

3. 단방향성

4. 평문전송


> 3way handshake

> 1. 클라이언트가 서버에 연결 요청(SYN)을 보낸다.  

> 2. 서버는 요청을 받고 준비상태가 되며 확인응답(ACK) + 클라이언트 포트 요청(SYN)을 보낸다.

> 3. 클라이언트는 SYN + ACK를 받고 요청을 받았다는 ACK를 다시 돌려준다.

> 위의 통신이 정상적으로 이루어지면 서로의 포트가 연결된다.

 

- HTTP는 연결 상태를 유지하지 않는다.

- 처음 연결인 웹 브라우저로 통해 클라이언트 요청이 가고

- 서버와 접속하여 클라이언트의 요청에 대한 응답 데이터 전송이 된 후 연결을 종료한다.


> 그래서 쿠키나 세션같은것이 있다. (로그인 같이 연결을 유지해야 하는 경우)

 

- HTTP는 연결상태를 유지하는 프로토콜이 아니기 때문에 요청/응답 방식으로 동작하는것.


### HTTP Request

사용자가 서버에 요청 하는것


|메서드 |요청헤더| 패딩| 바디|

|-----|-----|----|-----|

로 구성 되어 있음


- 메서드 : 사용자가 서버에 요청하는 메서드와 HTTP버전 확인

- 요청헤더 : 서버에 전달하는 사용자의 정보 (ex. token)

- 공백부분 : 구분자

- 바디 : 본문내용



'etc' 카테고리의 다른 글

django 예약기능  (2) 2017.09.12
AWS Route53 설정하기  (0) 2017.09.08
유저 모델링 실수 (migrations history error)  (0) 2017.09.06
Login 시나리오  (1) 2017.08.29
REST가 무엇인가?  (0) 2017.08.29