-
Network - HTTPCS/Network 2021. 2. 10. 20:53
HTTP
HTTP
-
HyperText Transfer Protocol. 하이퍼 텍스트(html) 문서를 교환하기 위해 만들어진 protocol.
-
요청/응답 구조로 통신이 이루어 진다.
-
stateless: 요청이 오면 그에 맞는 응답을 한 뿐 요청/응답끼리 연결되어 있지 않다. 이전의 요청과 응답에 대한 데이터가 필요할 때는 쿠키나 세션을 사용한다.
-
암호화 과정이 없기 때문에 보안에 취약하다.
HTTPS
-
HTTP + SSL(암호화)
-
기존의 HTTP는 TCP와 직접 통신했지만, HTTPS는 HTTP와 TCP 사이에 SSL이 끼워져 있는 것이다. HTTP는 SSL과 통신하고 SSL는 TCP와 통신하게 된다.
-
네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 공개키 암호화를 지원한다.
-
안전하게 데이터를 주고 받을 수 있다.
-
암호화/복호화 과정이 필요하므로 속도가 HTTP에 비해 느리다. (오늘날에는 거의 못 느낄 수준이다.)
- 인증서 발급을 위한 추가 비용이 필요하다.
HTTP 구조
- header: 요청에 대한 추가 정보를 담고 있으며 key: value 값으로 되어있다. 현재 시간, body의 데이터 타입, 길이, 만료일자, 연결 방식 설정에 대한 정보 등이 있다.
- body: 요청의 실제 메시지, 내용을 담고 있다.
HTTP Method - Get
- 데이터를 서버로 부터 받아올 때 주로 사용한다. 생성/수정/삭제 없이 받아온다.
- GET 요청은 URL주소 끝에 파라미터로 포함되어 전송되며 이 부분을 쿼리 스트링이라고 부른다.
- 캐시가 가능하며 길이에 제한이 있다.
HTTP Method - Post
- 데이터를 생성/수정/삭제할 때 주로 사용된다.
- 전송할 데이터를 HTTP 메시지 body부분에 담아서 서버로 보낸다.
- 캐시 되지 않으며 데이터 길이에 제한이 없다.
keep alive
-
HTTP/1.1부터 이미 연결되어있는 TCP연결을 재사용하는 Keep-alive라는 기능이 default로 지원된다.
-
이전의 버전에는 클라이언트 요청에 대한 응답을 보내고 연결을 끊는 방식이었다.
-
HTTP 요청을 보낼때 헤더에 Connection: Keep-Alive가 default값이다.
-
이에 대한 응답 헤더에 keep-Alive: max=5, timeout=120 과 같이 파라미터를 전달한다. max는 연결이 몇 개의 HTTP트랜젝션을 처리할 때까지 유지할 것인지 의미하며 timeout은 커넥션이 유지되는 시간을 의미한다.
HTTP와 HTTPS
-
개인 정보와 같은 민감한 정보를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 단순히 정보 조회 등의 동작만 처리하고 있다면 HTTP를 이용하면 된다.
reference
goodgid.github.io/HTTP-Keep-Alive/
mangkyu.tistory.com/98?category=762469
'CS > Network' 카테고리의 다른 글
Network - NAT (0) 2021.02.16 Network - 캐시/쿠키/세션 (0) 2021.02.10 Network - TCP/UDP (0) 2021.02.10 Network - DNS (0) 2021.02.10 Network - OSI 7계층, TCP/IP 4계층 (0) 2021.02.10 -