ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Network - HTTP
    CS/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

    velog.io/@hygoogi/%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0#%EC%9B%B9%EA%B3%BC-%ED%86%B5%EC%8B%A0

    jeong-pro.tistory.com/181

    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

    댓글

Designed by Tistory.