본문 바로가기
컴퓨터 네트워크

네트워크 5강 - RTT, Http의 종류와 메세지

by N.Damgom 2020. 8. 6.

이번 포스팅에서는 앞으로 자주 나올 Round Trip Time (RTT)와 Http 연결 유지 여부에 따른 Persistent Http, Non-Persistent Http 그리고 Http 메세지에 대해서 알아보자.


RTT : Round Trip Time

  • RTT란?
    • 아주 작은 패킷이 클라이언트와 서버 사이를 왕복하는데 걸리는 시간이다.
    • '아주 작은 패킷'은 Transmission Delay를 무시한다는 뜻이다. 단위 패킷당 네트워크 왕복시간 정도로 해석하자.
    • 앞으로 RTT는 기준이 되는 시간처럼 사용한다.

Non-Persistent Http

  • 앞에서 Http는 File Tansfer와 비슷하므로 Data Integrity가 중요하다고 했다.
  • 따라서 Http는 UDP 가 아닌 신뢰성있는 TCP를 사용한다.
  • Non-Persistent Http는 하나의 오브젝트를 받을 때마다 TCP 연결을 다시 맺는다.
  • 초장기 버전인 Http 1.0에서 사용하는 방식으로 1.1부터는 Persistent Http를 지원한다.
  • 작동방식
    • 1. 클라이언트가 서버에게 Http 프로세스 간 TCP 커넥션을 요청한다. 서버는 요청을 받고 응답을 보낸다.
    • 2. 클라이언트는 요청 메세지를 TCP 소켓에 넣는다.
    • 3. 서버는 받아서 처리 후 응답 메세지를 TCP소켓에 넣고
    • 4. 서버는 TCP 커넥션을 종료한다.
    • 5. 클라이언트는 응답을 받아 화면에 표시하고 추가 오브젝트를 위해 1~4를 반복한다.
  • 어느 정도의 시간이 소모될까?
    • 커넥션 생성에 1 RTT, 원하는 오브젝트를 받기 위해 1 RTT가 필요하다.
    • 따라서 오브젝트 하나당 2 RTT가 필요하고, 100개의 오브젝트를 받아야 한다면 200 RTT나 필요하다
    • 그래서 1.1버전부터는 Persistent Http를 사용한다.
  • 그럼 병렬로 TCP 연결을 생성한다면?
    • TCP는 신뢰성있는 데이터 전송을 위한 버퍼와 소켓을 가지고 있다.
    • 여러개의 TCP 연결을 생성한다면 소켓과 버퍼가 운영체제에 부담을 많이 주게된다.

Persistent Http

  • 서버가 Response를 보낸 후에도 TCP 커넥션을 유지한다.
  • 커넥션 연결에 1 RTT, 여러 오브젝트들을 전송하는데 약 1RTT가 걸리므로
  • 여러개의 오브젝트들을 보낸하해도 2RTT + a의 시간이 걸린다.
  • Http 1.1 부터 지원한다.

 


Http Message : Request와 Response

  • Http는 무엇일까?
    • Http는 HyperText Tansfer Protocol의 약자이다. 어려운 기술같아 보이지만 어쨌든 Protocol, 규칙이다.
    • 웹(WWW)에서 데이터를 주고받기 위한 프로토콜이다. 주로 html문서를 주고 받는다.
    • 그럼 웹은 뭘까? 인터넷상에서 정보교환을 위한 서비스이다. 웹은 인터넷의 여러 서비스 중 하나이다.
  • Http 메세지의 두 종류, Request와 Response
    • Http는 정보를 주고 받기 위한 프로토콜이다.  http는 요청(Request)하면 준다(Response)
    • Request : 정보를 요청하는 메세지
      • ASCII로 되어 있다.
        • American Standard Code for Information Interchange의 약자다.
        • 컴퓨터는 숫자로 연산하므로 숫자와 문자를 연결하는 규칙이다.
        • 즉 사람이 읽을 수 있는 문자로 표현된다.
        • ASCII에서 A는 American이니까 영어다.
      • Request Line : Request의 첫 줄
        • Method : GET or POST 등 어떤 요청인지 적는다.
        • Target : 호스트의 어떤 무엇을 필요로 하는지 적는다.
        • Http Version : 무슨 버전을 사용하는 지 적는다.
      • Header Line : Http 메세지에 대한 정보가 있다.
        • Host : 메세지를 받는 호스트의 URL
        • User-agent : 요청을 보내는 측의 정보
        • Connection : 요청을 받고 커넥션을 유지할 것인지. ex) keep-alive
        • 등등등
      • Entity body : 메세지의 본문이 들어간다. POST 타입의 경우에 여기에 뭔가가 써진다...!
    • GET과 POST의 차이
      • GET과 POST는 Request message의 대표적인 두가지 메소드다.
      • GET : 파라미터를 URL에 ?로 연결하여 보낸다. 조회용 메서드이고, 멱등하며 캐시 가능하다.
      • POST : Parameter를 Entity Body에 실어서 보낸다. 서버에 처리를 요청할 때 사용하는 메서드이다.
      • 로그인 할 때 아이디와 비밀번호를 어느 메소드로 보내면 좋을 지 생각해보자.
    • 다른 메소드들
      • HEAD : 테스트 목적으로 본문을 받을 필요가 없을 때 사용한다.
      • PUT : File Upload를 하고 싶을 때 사용한다
      • DELETE : File Delete를 할 때 사용한다.
      • PUT과 DELETE는 관리자만 사용할 수 있는 메소드다.
    • Response : 요청에 응답하는 메세지이다.
      • Status Line
        • Status Code와 Status text가 실린다.
        • Status Code - Status Text 의 의미
          • 200 OK
          • 301 Move Permanently
          • 400 Bad Request
          • 404 Not Found
          • 505 Http Version not Supported

 

HTTP 메서드 내용은 강의 내용을 그대로 정리했기 때문에 실제 사용과는 다르다.

간단히 설명하자면

Get - 조회용 메서드. 서버 자원 변경 X, 캐시 가능, 본문이 있을 수 있으나 서버에서 처리하지 않을 수 있음. 멱등

Post - 서버에게 처리를 요청하는 메서드, 서버 자원 변경 O, 캐시 하지않음, 멱등하지 않음

Put - 서버 자원 대체, 멱등하지 않음

Patch - 서버 자원 일부 대체, 멱등하거나 않게끔 설계 가능

Delete - 서버 자원 삭제, 멱등

 

더 자세한 내용은 Rest api를 참고하자.

 

 

더보기

본 게시물은 kocw 이화여자대학교 이미정 교수님의 컴퓨터 네트워크 강의를 듣고 정리한 글임을 밝힙니다.

내용상 틀린 부분이 있을 수도 있으며 이에 대한 책임을 지지 않습니다.

틀린 부분이나 오타 지적은 댓글로 남겨주세요.

www.kocw.net/home/cview.do?cid=e44bdd9b3a3f9bb5