본문 바로가기

cs

[CS] HTTP와 TCP/IP의 개념 및 차이점(feat. method, URL/URI)

# HTTP(HyperText Transfer Protocol)

웹 상에서 주고받을 수 있는 전세계적으로 협약된 프로토콜임

HTML - 웹페이지를 만드는언어
URL, URI - 원하는 웹페이지를 방문할 수 있도록 도와주는 주소체계인
Web browser, Web server - 웹페이지를 주고받는 소프트체계인
Web browser, Web server - 이 둘이 통신하는 방법인 HTTP

  • 손님이 요청을한다 to 가게한테 for 초코파이를
  • 가게를 응답 한다. to 손님에게 for 초코파이를
    여기서의 주고받는 메세지는 초코파이인데 이걸 http라고 부른다.

즉, 요청과 응답을 위한 메세지로 구분을 할 수 있다.

# 추상적인 이론 말고 눈으로 확인해보자

웹 페이지에 접속 -> 웹화면에서 마우스 우클릭 -> 검사(Inspector) 클릭 -> network 클릭 -> Name에 나와있는 내용을 보면 Request와 Reponse메세지들을 확인해볼 수 있음

TCP/IP(Transmission Control Protocol/Internet Protocol)

  • 프로토콜에 집합
    전세계적으로 가장 일상적으로 사용하는 프로토콜세트 중 하나이며
    컴퓨터가 서로 통신하는 경우, 특정 규칙이나 프로토콜을 사용해 순서대로 데이터를 전송 및 수신할 수 있다.

일반적인 기능예시로 메일, 컴퓨터간 파일 전송, 원격로그인 등이있다.

TCP/IP는 네트워크에 연결된 여러 컴퓨터(호스트) 사이의 통신을 허용한다.
각 네트워크는 해당 네트워크의 호스트와 통신하는 다른 네트워크에 연결될 수 있.
패킷 교환 및 스트림 전송으로 작동하는 많은 유형의 네트워크 기술이 있지만, TCP/IP는 하드웨어에 구애받지 않는다는 하나의 큰 장점이 있음.

# TCP와 IP의 역할

  • TCP
    • 데이터 전달을 관리하는 규칙임 즉, 데이터를 작게 나눠서 한쪽에서 다른 쪽으로 옮기고, 이를 다시 조립하여 원래의 데이터로 만드는 규칙임여기서 잘개 나눈 데이터 단위를 패킷이라고 함 인터넷에서는 정보를 전달하는 단위를 말함. TCP는 패킷을 조립하고 손실된 패킷을 확인하고 재전송 하도록 요청하는 기능을 함
  • IP
    • 인터넷상의 주소 규칙임. 집의 주소를 부여하듯 인터넷상의 연결된 모든 컴퓨터의 위치에도 규칙이 필요함. 이전에는 2에 8제곱4 자리의 주소인 IPv4를 사용했는데 주소가 고갈되고 있어 16의 4제곱8 자리인 IPv6로 전환되고 있음

# TCP/IP 4계층

OSI(Open Systems Iterconnections) 7계층은 시스템들의 연결을 위한 모델임
TCP/IP 4계층은 이를 웹서비스에 맞게 사용해야할 부분만 단순화 시킨 모델임(그래서 7계층이아니라 4계층)

https://chrisjune-13837.medium.com/web-http-tcp-ip-메시지란-4b2721fe296f

 

  • 응용계층: HTTP, FTP, Telnet, SMTP등 네트워크를 사용하는 응용프로그램으로 이루어짐
  • 전송계층: TCP, UDP 등 시스템을 연결하고 데이터를 전송하는 역할을 함
  • 인터넷계층: IGMP, ICMP, IP등 데이터를 정의하고 데이터의 경로를 라우팅함
  • 물리계층: Ethernet, ATM등 네트워크 하드웨어를 의미함

계층들이 각각 어떤역할인지 잘 모르겠따.

-> 클라이언트로 부터 특정 주소로 요청이 들어오면 DNS(도메인)상에서 IP주소를 받아옴
-> HTTP계층에서 HTTP메세지(블로그내 글들?)를 작성함
-> TCP계층에서 HTTP메세지를 패킷으로 분해함(블로그내용들을 각각 나눠서 보관?)
-> IP계층에서 전송위치(to Server)를 확인하고
-> 네트워크(Ethernet) 통해 전송함
-> 이후 위의 과정을 역순으로 진행하여 처리함

# Client-Server

클라이언트와 서버는 데이터를 주고받을때 클라이언트에서 한번 요청한 내용에 대해 기억하지않음 이를 StateLess하다고 표현함

  • Client
    요청 메세지 작성 -> 메세지 발송 -> 서버의 응답대기…
    -> 메세지 수신 -> 메세지 해석 -> 클라이언트에서 요청 추가처리
  • Server
    클라이언트의 요청대기… 요청메세지 수신 -> 메세지 해석 -> 애플리케이션에 대한 내용 처리 -> 결과 반환 -> 응답 메세지 작성 -> 메세지 발송

# HTTP메세지

  • 시작줄, 헤더, 본문으로 구성되있음
  • 시작줄
    • 요청메세지: 요청내용을 구제적으로 포함함
      메서드, 요청 URL, HTTP 버전 GET /document/item/1 1.1
  • 응답메세지
    • 사용자에게 일어난 내용을 응답한다. 상태코드와 사유 내용은 일대일 구조로 대응함
      버전, 상태코드, 사유구절 1.1 200 OK

# 용어

DNS - 호스트도메인이름을 호스트의 네트워크 주소롤 바꾸거나 그 반대의 변환을 수행할 수 있도록하기 위해 개발됨
클라이언트 - 다른 컴퓨터의 데이터 자원들을 접근하는 컴퓨터를 말함.
예시) 당근마켓에 중고쇼파를 검색해서 물건을 보려고 하는 행위가 데이터들에 접근하려는 것과 같음, 여기서 클라이언트는 나임.
호스트 - 클라이언트, 서버 또는 둘다 일 수 있음. 인터넷 네트워크에서 호스트는 인터넷이름과 주소로 식별됨
네트워크 - 둘 이상의 호스트 및 이들 사이의 연결링크 조합이며 물리적으로 구성하는 하드웨어이다.
패킷 - 정보를 보내는 단위(http를 사용해서 전송되는 규약의 데이터의 ) / 호스트(고객)와 네트워크(서버?) 사이의 한 거래내역에 대한 정보 및 데이터 블록임
포트 - 데이터는 포트(또는 소켓)통해 프로세스 사이에서 전송됨. 즉, 프로세스에 대한 논리적 연결지점임
ex)물을 보통 손으로 전달할 수 없으니 컵이나 물통을 통해 전달하듯이 데이터를 담아주는 것?같은건가…
프로토콜 - 통신을 처리하는 규칙
서버 - 데이터 자원을 제공하는 컴퓨터이다.

# HTTP 와 TCP/IP의 차이점

HTTP는 최상위 계층인 application 계층에 동작.
개념적으로만 봤을때 HTTP는 TCP/IP계층 위에 동작하는거라고 볼 수 있음

IP계층에는 출발지 주소와 목적지 주소가 존재함
TCP계층에는 출발지 포트, 목적지 포트가 존재함
IP가 아파트 주소라면 TCP는 번지, 동 개념이다.

데이터 형태 차이점

  • TCP: byte Array로 정보를 통신함
  • HTTP: String으로 정보를 통신함

클라이언트로 부터 특정 URL로 요청이 들어오면 DNS서버가 도메인에 매핑되는 IP주소를 받아옴.

TCP계층에서 HTTP메세지를 패킷으로 분해함

그리고 IP계층에서 전송위치를 확인하고 네트워크 통하여 전송함

그리고 받는 쪽은 위과정을 역순으로 진행하여 처리함

Reference

 

# method

참조링크
참조링크2

1. GET 은 언제 어떻게 사용하나요?

  • 서버로 부터 데이터를 받아올때 주로 사용하는 메서드
  • 데이터를 받아올때 사용되기 때문에 request 에 body 포함하지 않는다.

2. POST 는 언제 어떻게 사용하나요?

  • 데이터를 생성/수정/삭제 할때 주로 사용되는 메서드
  • 데이터를 서버로 보내고 서버가 받은 데이터를 처리할 때 사용한다.

3. PUT 은 언제 어떻게 사용하나요?

  • 데이터를 생성할때 사용되는 메서드
  • 서버(수신자)가 받은 데이터로 생성/업데이트할 때 사용한다.

4. PATCH 는 언제 어떻게 사용하나요?

  • 데이터를 수정할 때 사용되는 메서드
  • PUT과의 차이점은 데이터의 일부분을 수정하기 위해 사용한다는 점이다.

5. DELETE 는 언제 어떻게 사용하나요

  • 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰이는 메서드

참조링크

  • request-query
  • 주소 뒤에 ? 이후에 변수에 필요한 데이터를 담는 방법
    ex) http://주소?id=quokka&ie=utf8 
  • request-body(payload)
  • 데이터를 담아 보내는 방법
    데이터를 보내야할것이 많으면 주소가 너무 길어지기때문에 바디에 담아 보낼수있다.
    또는 개인정보나 비밀번호와 같이 주소창으로 노출되어선 안되는 내용의 경우 request-body에 담으면 밖으로 노출되지 않는다.
  • header
    • Content-Type 은 무엇인가요?
    Body를 어떤 형식으로 보낼 것인지 결정하는 값
    1. Multipart Related MIME 타입
    2. XML Media 의 타입
    3. Application 의 타입
    4. 오디오 타입
    5. Multipart 타입
    6. TEXT 타입
    • 파일을 전송할때 주로 사용되는 Content-Type 은 무엇인가요?
    Application/JSON,
  • Content-Type 의 종류

# Response - HTTP 응답의 핵심요소에 대해서 알아봅시다.

HTTP Status

참조링크

  • 200, 201 , 202, 204 상태 코드가 각각 무엇을 의미하는지 알아봅시다.

200대 코드: 성공응답
200: OK 정상임
204: No Centent, 보통 특정 내용을 삭제시 해당응답코드를 응답합니다.
206, Range, 헤더를 지정한 요청을 응답할때사용함

  • 400 , 401 , 403 , 404 , 406 상태 코드가 각각 무엇을 의미하는지 알아봅시다.

400대 코드: 클라이언트의 에러
400: Bad Request해당 요청이 잘못됨. 요청에 포함된 input 값에 잘못된 값이 보내졌을때.
401: Unauthorized 유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원 가입을 하거나 등등 필요하다는것을 나타낼때 쓰이는 코드
403: Forbidden 유저가 해당 요청에 대한 권한이 없다는 뜻.(결제한사람만 볼수있는 데이터를 요청했을때)
404: Not Found 요청된 url 이 존재하지 않는다는 뜻.

  • 500 , 502 , 504 상태 코드가 각각 무엇을 의미하는지 알아봅시다.

500대 코드: 서버의 에러
500: Internal Server Error 서버 내부적인 에러 발생했다는 뜻
502: Bad Gateway 서버가 게이트웨이로부터 잘못된 응답을 받았다는 뜻
504: Gateway Timeout 서버가 게이트웨이로부터 정해진 시간 내에 타임아웃을 받지 못했음을 나타냄

# 학습문제

  • 가장 기본적인 성공 요청 응답의 status 코드는 무엇일까요?

200

  • 인증 또는 권한등의 오류에 대해서 주로 사용되는 status 코드는 무엇일까요?

403

  • 잘못된 접근, 존재하지 않는 경로에 대한 접근에 주로사용되는 status 코드는 무엇일까요?

404

  • 서버측 오류에 대해서 주로 사용되는 status 코드는 무엇일까요?

500

  • status 를 통해서 얻을수 있는 이점은 무엇일까요?

어떤 문제가 생겼는지 빠르게 문제를 식별하고 대처할 수 있다.

URL / URI

참고링크

  • URL 과 URI에 대해서 알아봅시다.
    • URL(Uniform Resource Locator)은 자원이 실제로 존재하는 위치를 가르킨다.
    • URI(Uniform Resource Identifier)는 자원의 위치뿐만 아니라 자원에 대한 고유 식별자로서 URL을 의미를 포함한다.

예시
https://camp5th.yagom-academy.kr/camp - URL
https://camp5th.yagom-academy.kr/camp?id=grumpy - URI