본문 바로가기

Dev

(61)
HTTP의 메시지 HTTP 프로토콜을 통해 응답을 요청하거나 받는 경우 HTTP 메시지의 형태가 넘어온다. 이 메시지를 통해 어떤 정보들이 넘어왔는지 혹은 넘어가는지를 확인하는 것 HTTP의 요청메시지 형태와 응답메시지 형태의 구성은 아래 그림과 같다. (출처) ㅇ 먼저 HTTP의 메시지가 어떤 구조를 가지는지 부터 살펴보자! (출처) 요청메시지의 시작 라인에는 GET, POST 등이 들어간다. 공백 라인은 무조건 존재해야한다. 시작 라인(요청메시지) start-line = request-line(요청메시지일 경우) / status-line(응답메시지일 경우) request-line = method (GET, POST 등) SP(공백) request-target(요청하는 대상의 Path) SP HTTP-version CR..
HTTP의 성격 Connectionless HTTP는 연결을 유지하지 않는 성질을 기본적으로 가지고 있다. 일반적으로 초 단위 이하의 빠른 속도로 응답 수천명이 서비스를 사용해도 실제 동시에 처리하는 요청은 수십개 이하로 매우 작다. 서버 입장에서 봤을 떄는 자원을 효율적으로 사용한다는 장점이 있다. 아래의 그림에서 연결을 유지하는 경우와 유지하지 않는 경우를 알아보자 (참조) HTTP는 연결을 유지하지 않는다!! 연결을 유지하지 않는 HTTP는 서버에게 필요한 요청을 하고 서버측에서는 최소한의 자원만 유지한채 응답을 내려주고 연결을 끊는다. 비연결성의 한계 TCP/IP 연결을 새로 맺어야 하기 떄문에 3 way handshake 시간이 추가로 든다. ex) Syn, Ack 의 연결 요청할 때 HTML 뿐 아니라 자바스크립트, css 등 추가 이..
HTTP의 성질 Stateless Stateless 스테이스리스 라고 불리우는 이것은 HTTP의 대표적인 성질 중의 하나이다. 서버가 클라이언트의 상태를 보존하지 않겠다라는 의미 Stateless의 성질을 알아보기 위해서는 이와 반대되는 Stateful를 비교하여 알아두는 것이 좋다. Stateful의 특징을 알아보기 위해 예를 들어보려고 한다. 아래의 그림은.. 그렇다.. 31가지 아이스크림이다.. 필자가 자주 시켜먹는 아이스크림이다.. 31가지 아이스크림을 방문하게 되었고.. 아래와같이 3명의 직원이 있다고 가정하자.. 실제로도 3명이상 역할을 나누어 일을한다. 상태 유지 Stateful 상태일 경우 손님 : 31가지 아이스크림 파인트로 주세요 직원A : 7900원 입니다. (아이스크림 종류 상태 유지) 신용카드, 현금중에 어떤걸로 ..
HTTP 시작 HTTP(HyperText Transfer Protocol) 의 약자를 줄여서 나타낸다. 요즘에는 HTTP에 거의 모든 형태를 담아서 전송할 수 있다. HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML(API) 거의 모든 형태의 데이터를 전송 서버간의 데이터를 주고받을때도 사용할 수 있다. HTTP 1.1 버전 / 1997년에 등장했으며, 가장 많이 사용하고 중요한 버전이다. → 현재는 HTTP/3 진행 중 기반 프로토콜 HTTP/1.1, HTTP/2는 TCP 프로토콜 위에서 작동한다. HTTP/3은 UDP 프로토콜 에서 작동 현재는 1.1버전의 HTTP를 주로 사용하고 있다! 그래서 HTTP 1.1버전을 아는것이 제일 중요! HTTP의 특징 클라이언트 서버 구조를 기반으로 동작한다...
UR패밀리 URI, URL, URN 과 웹브라우저 흐름 필자는 URI와 URL에 대해서는 들어봤지만 URN에 대해서는 들어본적이 없다. 공부를 하며 알게된 내용을 정리하자! URI(Uniform Resource Identifier) > URL(Uniform Resource Locator) + URN(Uniform Resource Name) URI - 리소스(자원)을 식별한다. Uniform : 리소스를 식별하는 통일된 방식 Resource : 자원, URI로 식별할 수 있는 모든 것(제한없음) Identifier : 다른 항목과 구분하는데 필요한 정보 URL - 리소스의 위치를 나타낸다. ex) 특정 사용자가 어디에 위치해 있다라는 걸 나타냄 즉, 홍길동이 있는 위치 URN - 리소스에 이름을 부여 ex) 사용자 자체를 말함 즉, 홍길동 위치는 변할 수 있지..
친숙한 이름으로 바꿔주는 DNS - IP는 200.200.200.2 와 같이 복잡한 형태로 이루어져있기 때문에 기억하기 어렵다. - 또한 IP는 중간에 변경될 수 있다. - 이를 편하게 구분하기 위해 (전화번호부) 처럼 도메인을 등록해두고 사용할 수 있게 한다. 이것을 DNS라고 한다. DNS(Domain Name System) - 도메인 네임 시스템 전화번호부 도메인 명을 IP주소로 변환 (출처)
프로세스를 구분하는 PORT 만일 한 클라이언트가 둘 이상 연결을 해야하는 경우 어떻게 해야할까? - IP만 가지고 이 문제를 해결하려면 이러한 문제에 닥치게 된다. - 하지만 이전에 봤던 TCP/IP 패킷에 포함되어 있는 정보에 보면 이미 PORT 정보가 포함되어 있다. (출처) - 즉 PORT를 통해 여러 프로세스를 구분할 수 있다 PORT - 같은 IP내에서 프로세스를 구분 (출처) 대표적인 예로는 IP가 아파트의 단지라면 PORT는 몇동 몇호 웹브라우저로 예를 들면 도착지의 IP인 200.200.200.3:80(PORT)까지 포함하여 보낸다. 도착지에서는 아 100.100.100.1에 10010 포트에서 왔구나 라고 인식한다. 0 ~ 65535 까지 할당이 가능하다. 0 ~ 1023 까지는 잘 알려진 포트로 사용하지 않는게 ..
IP의 한계 극복 TCP와 UDP 앞서서 IP의 문제점인 비연결성, 비신뢰성 등의 문제점을 해결하기 위해 등장한 프로토콜이 TCP와 UDP 이다. 인터넷 프로토콜의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 아래의 그림을 통해 프로토콜 계층에서 어떻게 동작하는지 알아보자! (출처) 어떠한 프로그램이 메시지를 보낸다고 가정한다면, 소켓 라이브러리를 통해 OS 계층으로 메시지를 전달한다. OS계층에서는 메시지에다가 TCP정보를 겉에다가 씌워준다. 그리고 이어서 TCP정보 겉에다가 IP정보를 씌워준다. 이제 네트워크 인터페이스에서 LAN 카드를 통해서 나갈 때 이더넷 프레임이라는 것을 포함해서 밖으로 나간다. 메시지를 보내게 될 경우 아래 그림과 같이 전송데이터를..