블로그

holi

[우당탕탕 HTTP] 2. IP

가볍게 넘겨왔던 http에 대해 파헤쳐보자! [우당탕탕 HTTP] 저번 블로그에서 인터넷에서는 컴퓨터 끼리 정해진 TCP/IP라는 통신 규약을 통해 통신한다고 했습니다.이번에는 TCP와 IP중 더 하위 프로토콜인 IP에 대해 알아보겠습니다.IP란?IP(Internet Protocol)이란, 패킷 교환 네트워크에서 정보를 송신하고 수신하는 데 사용하는 정보 위주의 규약IP는 패킷 이라는 통신 단위로 정보를 전달하기로 한 규약입니다.따라서, IP는패킷이라는 통신 단위를 교환하는 네트워크에서 정보를 주고 받는 데 사용하는 규약이라고 할 수 있습니다.IP패킷에는 정말 다양한 정보들이 들어있습니다.이 IP패킷 안에 출발,목적지의 IP 주소가 담겨있고 데이터 등이 담겨있습니다.우리가 인터넷을 통해 다른 컴퓨터와 통신할 때,이 IP패킷을 전달함으로써 목적지를 찾아 데이터를 전송할 수 있는 것입니다. 우리가 네이버 서버로 접근하는 모습을 보면우리의 IP패킷에 우리의 IP주소를 담고 네이버 서버의 IP 주소를 담아서 데이터를 전송합니다.이 때, 컴퓨터 끼리의 연결인 인터넷을 통해 IP패킷을 전달해가면서 목적지인 네이버의 서버에 접근할 수 있는 것입니다.택배를 예로 들면 물건 판매사에서 송장을 통해 우리에게 까지 택배로 전달 되는데,여기서 송장이 IP패킷의 역할을 한다고 볼 수 있고택배 배송 조회를 하면 보이는 중간 중간의 무슨HUB, 무슨SUB가 인터넷 역할을 한다고 볼 수 있습니다. 그런데, 이 IP에는 한계들이 존재합니다.우리는 택배 배송 조회를 하면 내 택배가 어디쯤에 있는지 다 알 수 있습니다.그런데, IP 패킷은 어디쯤에 있는지 알 수 없습니다.그 한계를 살펴보면,비연결성패킷을 받을 대상이 없거나 서비스가 불가능한 상태여도 패킷을 전송한다.비신뢰성중간에 패킷이 손상 or 소실이 될 수 있다.패킷을 여러번 전송할 때, 그 순서가 보장이 되지 않을 수 있다.같은 패킷을 중복으로 전달 할 수 있다.프로그램 구분X같은 IP 주소를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상 일 수 있다.그렇다면, 이러한 한계들은 어떻게 해결을 할 수 있을까요??이것은 IP의 상위 프로토콜인 TCP 프로토콜을 통해 가능합니다.TCP프로토콜은 다음번에 알아보도록 하겠습니다. +추가 정보 HTTP에 대해 더 자세히 알기 위해서는 OSI 7계층과 인터넷 프로토콜 스위트에 대해서도 알아야 합니다.기회가 된다면 나중에 한번 자세히 다뤄보도록 하겠습니다.    

웹 개발httpprotocol프로토콜IP우당탕탕holi

holi

[우당탕탕 HTTP] 0. HTTP (맛보기)

가볍게 넘겨왔던 http 에 대해 파헤쳐보자! [우당탕탕 HTTP] 먼저 http를 wiki에서 한 줄만 가져왔습니다.HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다.여기서 프로토콜이란 통신 규약인데, 즉 약속 이라는 뜻입니다.클라이언트와 서버 사이에 HTTP라는 미리 정해진 약속을 통해 요청과 응답을 나눈다는 것입니다.가령, 우리(클라이언트)가 은행의 은행원(서버)과 요청/응답이 필요할 때, 우리는 일련의 약속을 통해은행원에게 요청을 합니다.은행에 우리가 방문한다.은행에서 번호표를 뽑고 순서를 기다린다.번호판을 확인하고 일치하면 창구로 간다.상담을 나눈다.즉, 이런 일련의 약속이 웹 상에서 정해진 것이 바로 HTTP인 것입니다.아무래도 기술이 진화를 하다 보면 새로 생겨나는 여러 기능과 개념들이 있기 마련이고그에 따라 HTTP 프로토콜도 거듭하여 진화가 있었습니다.초기의 웹 생태에서는 하이퍼 텍스트 문서만 주고 받았고그에 맞은 통신 규약이 있었습니다.그러다 이미지나 비디오 같은 데이터도 주고 받고 싶어지고주고 받으려면 아무래도 새로운 약속들이 필요해졌습니다.그렇게 진화를 해온 것이죠.현재의 http를 살펴보면TCP/IP 등의 기반 위에 HTTP가 있고 이 HTTP를 기반으로 HTML, CSS, JavaScript와 같은 파일들을요청/응답한다고 볼 수 있습니다.그렇다면 TCP .. UDP .. 는 무엇일까요?그것은 앞으로 알아보도록 하겠습니다.오늘은 HTTP를 맛보기로 알아보았습니다.앞으로 HTTP를 더 깊게 이해하기 위해 그 기반들을 알아보고 나서HTTP를 좀 더 파보도록 하겠습니다.

웹 개발httpprotocol프로토콜우당탕탕holi

holi

[우당탕탕 HTTP] 3. TCP / UDP

가볍게 넘겨왔던 http에 대해 파헤쳐보자! [우당탕탕 HTTP] 저번 블로그에서 IP에 대해 알아보았고, 그 IP만으로는 클라이언트와 서버간 통신의 한계가 있다고 했습니다.그리고, 그 한계들을 해결하기 위한 상위 프로토콜인 TCP 프로토콜이 있다고 했습니다. TCP란?TCP(Transport Control Protocol) 전송 제어 프로토콜이란, 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 네트워크 프로토콜이렇게 보면 TCP의 정의는 기본적으로 IP와 거의 같다고 볼 수 있습니다.둘의 큰 차이는 그 역할에 있습니다.TCP의 역할은 용어 그대로 전송을 제어하는 프로토콜입니다.IP 패킷을 전송할 때, IP로만 해결할 수 없는 것들을 제어 함으로써 패킷 교환을 돕는 프로토콜인 셈입니다.이렇게 TCP와 IP를 함께 사용해서 전달하는 패킷인 TCP/IP 패킷은전달 하고자 했던 데이터에 TCP 정보를 씌우고 그 위에 IP 정보를 씌워 패킷을 전달하는 형태입니다.IP의 한계들을 해결하는 TCP의 중요한 특징들을 살펴보면,연결성연결을 위해 3 방향 핸드셰이크를 사용한다.3 방향 핸드셰이크는 일종의 가상의 연결입니다.클라이언트가 서버에게 SYN 이라는 연결 요청을 하면, 서버는 ACK 라는 요청 수락과 함께 연결 요청을 보내고클라이언트는 요청 수락과 함께 데이터를 전송하게 됩니다.이렇게 하면 클라이언트와 서버가 연결이 되어 있기 때문에,패킷을 받을 대상이 없거나 서비스가 불가능한 대상에게 패킷을 전송하는 불상사가 일어나지 않게 됩니다. 신뢰성데이터 전달 보증TCP/IP 통신으로 클라이언트가 데이터를 전송하면, 서버는 데이터를 잘 받았다는 데이터를 전송함으로써 전달을 보증해줍니다.단순하게 대답을 해줌으로 인해 데이터 전달을 보증 하는 것입니다.만약 중간에 어딘가에서 패킷이 소실이 된다면, 대답이 오지 않게 되고 데이터가 전송이 되지 않음을 알 수 있습니다. 패킷 순서 보장데이터 전송 시 패킷을 여러개 보내는 경우가 있을 수 있습니다.이 때, TCP 세그먼트에 패킷의 순서 정보를 함께 담아 전송을 합니다.순서 정보가 다르게 들어온다면, 서버에서 다시 올바른 순서로 보내라고 할 수 있습니다. 중복 검증순서 보장과 같은 맥락으로패킷에 순서 정보를 담으면 동일 순서가 중복으로 오는 경우도 잡아낼 수 있고순서 정보가 다르게 도착하는 경우도 잡아낼 수 있습니다. 프로그램 구분TCP에는 port라는 정보가 담겨 있습니다.출발지 port와 도착지 port 정보가 담겨있는데, 이 port를 구분하여 하나의 IP주소에서 어떤 어플리케이션에 필요한 정보인지 가려내어 프로그램을 구분하고 적재적소에 통신을 할 수 있는 것입니다.TCP 프로토콜은 IP 프로토콜과 함께 대표적으로 이용되고 있는 통신 규약입니다.그러나, 이런 TCP에도 문제점은 분명히 존재합니다.IP의 한계를 해결하기 위해 필요로 했던 많은 부가적인 데이터와 연결이 시간을 지연시키고 부하를 증가시키는 것입니다.그래서 빠른 통신을 필요로하는 곳에서 UDP라는 프로토콜을 주로 사용하고 있습니다.그럼 UDP는 무엇일까요?UDP란?UDP(User Datagram Protocol) 사용자 데이터그램 프로토콜이란, 두 컴퓨터 간 데이터 통신을 위한 네트워크 프로토콜IP TCP UDP는 정의는 기본적으로 다 같다고 볼 수 있습니다.결국엔 역할의 차이인 셈입니다.UDP는 IP + PORT + 체크섬 이라고 할 수 있습니다.이로인한 UDP의 특징은비연결성패킷을 받을 대상이 없거나 서비스가 불가능한 상태여도 패킷을 전송하지만,연결 없이 통신하여 더 빠르다. 비신뢰성패킷이 손상되거나 손실 될 수도 잇고, 순서가 보장되지도 않으며 중복 전달일 수도 있지만,그 만큼 담겨있는 데이터가 적어 부하가 적고 더 빠르다.(체크섬을 통한 약간의 오류 검증만 존재한다.) 프로그램 구분OTCP의 특징인 프로그램 구분을 담당하는 PORT 데이터는 함께 전송하기 때문에, 프로그램 구분은 가능하다.이러한 UDP의 특징을 종합하면"TCP 보다는 안정성이 떨어지지만 빠르고 부하가 적다." 입니다.그런 특징 때문에 시간에 민감한 통신에서 주로 사용되는 프로토콜입니다.예를 들면, 인터넷 기반 전화 서비스입니다.대화가 정말 뚜렷하게 지연되어 소통하는 것보다는약간은 노이즈가 있더라도 실시간으로 소통하는 것이 더욱 중요하기 때문입니다.마찬가지로, 게임이나 DNS 서버 등 속도가 생명인 곳에서도 UDP 프로토콜이 주로 사용됩니다.

웹 개발httpprotocol프로토콜TCPUDP우당탕탕holi

holi

[우당탕탕 HTTP] 4. DNS

가볍게 넘겨왔던 http에 대해 파헤쳐보자! [우당탕탕 HTTP] 지난 블로그들에서 TCP/IP를 통해 통신을 하는 법을 쭉 훑어보았습니다.그런데 우리는 실제로 하나의 웹 서비스를 이용할 때,IP주소를 통해 해당 서비스로 접근하지 않습니다. (물론 접근이 가능하긴 하지만)실제로 우리는 도메인을 통해 접근을 합니다.이 도메인을 통해 접근하는 체계는 바로 DNS입니다.DNS란?DNS(Domain name System) 이란, 우리가 도메인 네임을 통해 IP주소를 얻고 그 주소로 접근할 수 있도록 하는 전체의 과정, 체계를 도메인 네임 시스템(DNS) 이라고 한다.예를 들어 구글의 IP주소가 123.456.789.10 이라고 가정하면,우리가 브라우저 주소 창에 123.456.789.10 이라고 입력을 하면 해당 서버로 접근할 수 있지만저희는 google.com 이라고 간단하게 접근할 수 있습니다.바로 이 간단한 이름이 도메인 네임입니다.그리고 주소창에 "도메인 이름만 입력해도 goole의 IP주소를 얻고 접근할 수 있도록 하는 전체의 시스템"이 도메인 네임 시스템 인 것입니다.도메인 네임 시스템이 어떻게 이루어 지는지 아주아주! 간단하게 살펴보면브라우저 창에 google.com 주소를 입력합니다.그럼 DNS 서버로 접근해서 요청한 도메인 네임에 해당하는 IP 주소를 전달 받습니다.그리고 IP패킷에 구글 서버의 IP주소를 담아 인터넷 통신을 하는 것입니다.실제로 DNS 는 훨씬 복잡한 체계로 이루어져 있습니다만,본질은 결국 도메인 네임을 IP주소로 변화해주는 것입니다. 마치 핸드폰의 연락처 같은 것이죠. 오늘은 정말 정말 간단하게 DNS를 살펴보았으나,이 DNS 하나로도 매우 방대한 양의 지식이 담겨있기 때문에..기회가 된다면 한 번 쭉 공부해보고 블로그에 남길 수 있으면 좋겠습니다.

웹 개발http도메인도메인네임DNS도메인네임시스템우당탕탕holi

holi

[우당탕탕 HTTP] 1. 인터넷

가볍게 넘겨왔던 http 에 대해 파헤쳐보자! [우당탕탕 HTTP] 이번에는 인터넷에 대해 알아보겠습니다.HTTP는 인터넷을 기반으로 동작하기 때문에, 먼저 알아두는 것이 좋습니다.인터넷이란?인터넷은 컴퓨터로 연결하여 TCP/IP(Transmission Control Protocol/Internet Protocol)라는 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이다.프로토콜은 저번 블로그에서 통신 규약, 즉 약속이라고 했습니다.그럼 이 말을 간단히 풀어 설명하면,"인터넷은 컴퓨터 끼리 연결하여 TCP/IP라는 약속을 이용해 정보를 주고받는다." 라고 할 수 있습니다.그렇다면 인터넷은 어떻게 연결이 되어 통신하고 있을까요? 일반적으로 전선으로 연결이 되어 통신합니다. ( 물론 요즘엔 블루투스나 wifi같은 무선 연결 기능도 많습니다. )먼저 서로 인접한 두 개의 컴퓨터가 통신하는 모습을 그려보면단순히 선 하나로 연결이 되어 서로 정보를 주고 받을 수 있습니다. 하지만 실제로는 이렇게 간단하진 않습니다.제 컴퓨터로 네이버의 서버에 접근하는 모습을 그려보면그림처럼 중간 중간 다른 컴퓨터들을 거쳐 네이버 서버에 접속할 수 있습니다.그리고 이런 컴퓨터들의 연결을 인터넷이라고 하는 것입니다. 그렇다면 인터넷은 컴퓨터 끼리 정해진 TCP/IP라는 약속/규칙을 통해 통신한다고 했는데,그 약속은 무엇일까요?그것은 다음번에 알아보도록 하겠습니다.😁 +추가 호기심 컴퓨터는 서로 일반적으로 전선으로 연결되어 있다고 하는데,국내 까지는 어떻게 어떻게 컴퓨터와 컴퓨터들 간의 연결된 전선으로 이어질 수 있을 것 같습니다.그런데 내가 연결하고자 하는 서버가 미국에 있다면?? 어떻게 전선으로 연결할 수 있을까요??놀랍게도!해외 역시, 전선으로 이어져 있습니다.바로 해저 케이블입니다.물론 다른 방식으로 연결된 경우도 있지만, (예를 들면, 인공위성과 같은)해저케이블 방식이 전세계 해외 연결망 트래픽의 약 90% 정도를 차지하고 있다고 합니다.신기하죠? ㅎㅎ

웹 개발httpprotocol프로토콜인터넷우딩팅팅holi