HTTP 네트워크 기본

Shaun·2021년 9월 14일
1

네트워크 기본

목록 보기
1/8

네트워크 기본

  • 기본적으로 '소켓' 이란곳에 데이터를 담아서 서버에 보낸다고 가정 했을때, 그사이에 인터넷망이 '노드' 라는것을 통해 서버까지 ip주소로 전달해준다.

  • 하지만 이러한 ip주소로만 전달하는 방식은 문제점이있다. 사용자가 서버에 데이터를 보낼떄 그 서버가 안켜져있을수도 있거나, 중간에 소켓을 잃어버리거나, 아니면 데이터 순서가 잘못 전달 될수 있다.

  • 그걸 해결하고자 나온게 TCP UDP 이다

TCP

  • 연결지향 TCP 3 way handshake(가상연결)
  • 데이터 전달 보증
  • 순서 보장

-> ip프로토콜만 사용했을때 문제점들을 해결 해준다.

UDP

사용자 데이터그램 프로토콜(User Datagram Protocol)
• 하얀 도화지에 비유(기능이 거의 없음)
• 연결지향 - TCP 3 way handshake X
• 데이터 전달 보증 X
• 순서 보장 X
• 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
• 정리
IP와 거의 같다. +PORT +체크섬 정도만 추가

  • 그림에서처럼 데이터 위에 TCP를 감싸고 그다음 IP를 감싸서 보낸다고 생각하면된다.->TCP를 감싸고 보내니 노드끼리 주고 받을떄 문제가 발생하지 않는다.

  • 간단히 말하면 서버가 켜져있는지 확인 하는 작업이다. 그래야 소켓을 보냈을때 잘 도착하니까. 서버 열렸어? 응 열렸어 이런식으로 주고 받는 느낌이다.

  • 이 외에도 위에 설명 했듯이 데이터전달보증과 순서보증에 대한 것도 있다.

PORT

  • 두개 이상의 프로세스를 할떄 구분하기 위해 쓰는 것이다. IP는 아파트, PORT번호는 몇호인지로 생각하면 쉽다.

DNS

  • ip주소는 너무 길어서 외우기가 힘들고 언제든지 바뀔수 있다. 이를 해결하기위해 DNS라는것이 나왔다.

  • ip 주소가 바뀌어도 같은 도메인 이름을 입력하면 그 변경된 ip주소로 간다.

URI /URL / URN

URL/ URN

  • URL- Locator: 리소스가 있는 위치를 지정
  • URN - Name 리소스에 이름을 부여
  • 위치는 변할 수 있지만, 이름은 변하지 않는다.
    -URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음

scheme ->https

  • 주로 프로토콜 사용

  • 프로토콜: 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙

  • http는 80포트 ,https 443포트를 주로 사용 , 생략 가능

웹 브라우저 흐름

  • URL 에서 요청할 PORT와 IP주소를 가져온다.

  • 알아온주소로 TCP/IP 에 출발지 ip,port 목적지 ip,port를 심고 그 안에 요청메시지를 넣어서 보내준다

HTTP(Hyper Text Transfer Protocol)

• HTML, TEXT

• IMAGE, 음성, 영상, 파일

• JSON, XML (API)

• 거의 모든 형태의 데이터 전송 가능

• 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용

Stateful vs Stateless

Stateless

  • 서버가 클라이언트의 상태를 보존 x

  • 서버의 확장성이 높지만 클라이언트에게 추가 데이터 전송을 해야한다

  • 갑자기 클라이언트가 몰려도 서버를 대거 투입 할수 있다.

  • 중간에 서버1이 끊어져 서버2로 옮겨도 그전 데이터(내용) 에는 지장이 없다. 계속해서 이어나갈수 있다.

Stateful

  • 중간에 서버가 바뀌면 안된다.

  • 서버가 클라이언트의 상태를 보존 ㅇ

  • 중간에 서버 1이 끊기고 서버 2로 가면, 기존데이터들이 없어져 처음부터 다시 시작해야함

Stateless

실무 한계
• 모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다.

• 무상태
• 예) 로그인이 필요 없는 단순한 서비스 소개 화면

• 상태 유지
• 예) 로그인

• 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지

• 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지

• 상태 유지는 최소한만 사용

비 연결성(connectionless)

  • 연결유지 모델은 처음한번 TCP/IP 연결을 한뒤에도 계속 연결 상태를 유지해 클라이언트가 요청한 데이터를 쉽게 주고받을수 있지만 계속 서버를 유지해야 하기 떄문에 서버자원이 소모된다.

  • 연결을 유지하지 않는 모델은 서버자원을 아낄 수 있지만, 요청과 응답이 끝난뒤 클라이언트가 또 요청을 하면 다시한번 TCP/IP 를 연결하고 HTML CSS 등 다시 다 받아야한다.

-> 그래서 요즘은 연결유지 모델로 가는 추세이다. HTTP도 버전이 있는데 2 와 3에서 더많은 최적화가 되 있다.

HTTP 메세지

  • 크게 start line 과, 헤더 ,바디 부분으로 나눈다.

  • start line 은 http 메서드, path , httpverion 등 으로 이루어져 있다.

  • 헤더는 HTTP전송에 필요한 모든 부가정보( 바디의 내용, 크기, 압축, 인증, UTF-8 등등)

  • 바디는 실제 전송할 데이터 /HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능

profile
호주쉐프에서 개발자까지..

0개의 댓글