Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발새발

네트워크 본문

CS

네트워크

개발하는후추 2022. 8. 3. 22:15

네트워크

  • 다른 장치로 데이터를 이동시킬 수 있는 컴퓨터들과 주변 장치들의 집합

1. 네트워크의 연결된 모든 장치들을 노드라고 한다

2. 다른 노드에게 하나 이상의 서비스를 해주는 노드를 호스트라고 한다

3. 하나의 컴퓨터에서 다른 컴퓨터로 데이터를 이동시킬 때 복잡한 계층을 통해 전송되는데, 이런 복잡한 레이어의 대표적인 모델이 OSI 계층 모델입

4. OSI 계층 모델은 모두 7계층으로 이루어져 있다

5. 데이터 통신을 이해하는데 OSI 계층 모델은 상당한 역할을 하지만, 인터넷 기반의 표준 모델로 사용하는 TCP/IP 계층 모델을 주로 사용한다

6. 자바에서 이야기하는 네트워크 프로그래밍은 TCP/IP모델을 사용한다

서버 - 클라이언트

서버: 서비스를 제공하는 프로그램

  • 웹서버, FTP서버, DBMS, 메신저서버
  • 클라이언트의 연결을 수락하고, 요청 내용을 처리한 후 응답을 보내는역할

클라이언트 : 서비스를 받는 프로그램

  • 웹브라우저, FTP클라이언트, DBMS, 메신저
  • 네트워크 데이터를 필요로하는 모든 애플리케이션이 해당

IP주소

  • 모든 호스트는 인터넷 주소(IP)라 불리는 32비트 숫자로 구성된 주소체계를 이용하여 서로 구분
  1. 8비트씩 끊어서 표현, 각 자리는 1바이트로 0~255 까지의 범위를 갖는다
  2. 32비트 주소 체계를 IPv4라고 한다
  3. IPv4가 포화상태여서 IPv6가 나옴
  4. IPv6는 128비트 주소쳬계를 가진다
  5. 각 호스트는 도메인 이름을 컴퓨터가 사용하는 주소로 바꿔주는데 이걸 DNS(domain name stystem)이라고 한다
  6. 도메인은 상호명 같은거다 만약 223.130.195.95이걸로 주소를 주면 naver.com이 열린다
  • 이처럼 숫자는 컴퓨터가 알아보는 주소고 그 주소의 도메인이 naver.com인거다

포트(Port)

  • 같은 컴퓨터내에서 프로그램을 식졀하는 번호
  • 클라이언트는 서버 연결 요청시 IP 주소와 Port르 같이 제공

HTTP Messages

  • HyperText Transfer Protocol
  • HTML과 같은 문서를 전송하기 위하 응용계층 프로토콜
  • 웹 브라우저와 웹 서버의 소통을 위해 디자인
  • 클라이언트와 서버 사이에서 데이터가 교환되는 방식
  • 특징 : Stateless(무상태성)
  • 두가지 유형
  • 요청(Requests)
  • 응답(Responses)
  1. start line: start line에는 요청이나 응답의 상태를 나타냄, 항상 첫 번째 줄에 위치(응답에서는 status line)
  2. HTTP headers: 요청을 지정하거나, 메세지에 포함된 본문을 설명하는 헤더의 집합
  3. empty line: 헤더와 본문을 구분하는 빈 줄이 있다
  4. body: 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함(요청과 응답의 유형에 따라 선택적으로 사용)
  • 이 중 start line과 HTTP headers를 묶어 요청이나 응답의 헤드(head)라고 하고, payload는 body라고 한다

메소드는 총 8개가 존재하며 아래와 같습니다.
GET: 서버로 부터 데이터를 취득
POST: 서버에 데이터를 추가, 작성 등
PUT: 서버의 데이터를 갱신, 작성 등
DELETE: 서버의 데이터를 삭제
HEAD: 서버 리소스의 헤더(메타 데이터의 취득)
OPTIONS: 리소스가 지원하고 있는 메소드의 취득
PATCH: 리소스의 일부분을 수정
CONNECT: 프록시 동작의 터널 접속을 변경

멱등성(Idempotence)이란?
우선, HTTP Method에 대한 자료를 찾아보면, idempotent라는 말이 나온다. 한국어로는 멱등성이라고 한다. 처음들어봤다.🙁
멱등성이란 여러번 수행해도 결과가 같음을 의미한다. 즉, 호출로 인하여 데이터가 변형이 되지 않는다는 것을 의미한다.

  1. GET
    정의
    GET 메소드는 주로 데이터를 읽거나(Read) 검색(Retrieve)할 때에 사용되는 메소드이다. 만약에 GET요청이 성공적으로 이루어진다면 XML이나 JSON과 함께 200 (Ok) HTTP 응답 코드를 리턴한다. 에러가 발생하면 주로 404 (Not found) 에러나 400 (Bad request) 에러가 발생한다.
  • HTTP 명세에 의하면 GET 요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다.
  • GET 요청은 idempotent 하다.
  • 같은 요청을 여러 번 하더라도 변함없이 항상 같은 응답을 받을 수 있다.
  • 데이터를 변경하는 연산에 사용하면 안된다.
    예시
    GET /user/1
    데이터를 조회하는 것이기 때문에 요청시에 Body 값과 Content-Type 가 비워져있다. 조회할 데이터에 대한 정보는 URL을 통해서 파라메터를 받고 있는 모습을 볼 수 있다.
    데이터 조회에 성공한다면 Body 값에 데이터 값을 저장하여 성공 응답을 보낸다.
    GET은 캐싱이 가능하여 같은 데이터를 한번 더 조회할 경우에 저장한 값을 사용하여 조회 속도가 빨라진다.
  1. POST
    정의
    POST 메소드는 주로 새로운 리소스를 생성(create)할 때 사용된다. 조금 더 구체적으로 POST는 하위 리소스(부모 리소스의 하위 리소스)들을 생성하는데 사용된다. 성공적으로 creation을 완료하면 201 (Created) HTTP 응답을 반환한다.
  • POST 요청은 idempotent 하지 않다.
  • 같은 POST 요청을 반복해서 했을 때 항상 같은 결과물이 나오는 것을 보장하지 않는다
  • 두 개의 같은 POST 요청을 보내면 같은 정보를 담은 두 개의 다른 resource를 반환할 가능성이 높다.
    예시
    POST /user
    body : {date : "example"}
    Content-Type : "application/json"
    데이터를 생성하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다. 해당 예시는 JSON을 통해서 작성된 예시이다.
    URL을 통해서 데이터를 받지 않고, Body 값을 통해서 받는다.
    데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.
  1. PUT
    정의
    PUT는 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용됩니다.
  • PUT 요청은 idempotent 합니다.
  • 동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과가 생성됩니다.
    예시
    PUT /user/1
    body : {date : "update example"}
    Content-Type : "application/json"
    데이터를 수정하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다. 해당 예시는 JSON을 통해서 작성된 예시이다.
    URL을 통해서 어떠한 데이터를 수정할지 파라메터를 받는다. 그리고 수정할 데이터 값을 Body 값을 통해서 받는다.
    데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.
  1. DELETE
    정의
    DELETE 메서드는 지정된 리소스를 삭제합니다.
    예시
    DELETE /user/1
    데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있다.
    URL을 통해서 어떠한 데이터를 삭제할지 파라메터를 받는다.
    데이터 삭제에 성공한다면 Body 값 없이 성공 응답만 보내게 된다.

ssr //// csr

CSR

  • 서버에서 만들어서 클라이언트에게 넘겨준다 그렇기 때문에 네이버에서 특정한 곳을 눌렀을때 그 부분만 바뀐다 배너만 변경된다고 이해
  • 빠른 검색을 요구하는 사이트에서 주로 사용

SSR

  • 부품을 클라이언트로 넘겨서 하기 때문에 페이지 전체가 리로딩된다

출처 및 참고 https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE

'CS' 카테고리의 다른 글

OAuth 와 JWT의 흐름  (0) 2022.10.27
CI / CD  (0) 2022.10.25
WebClient  (0) 2022.10.05
동기 비동기  (0) 2022.09.11
컴퓨터와 프로그래밍의 이해 - 웹 어플리케이션과 웹 서버  (0) 2022.07.27
Comments