@마크다운
코드를 적는건 누구나 다 한다.
나는 코드를 적기만 하는 개발자가 아닌 기술을 이해하고 설명해줄 수 있는 개발자가 되고싶다.
그래서 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 |