웹 — 정적 문서에서 WAS·RESTful까지
·
Network
오늘날의 웹은 복잡해 보이지만, 그 복잡함은 한 번에 생긴 것이 아니다. 정적인 문서 한 장을 보여주던 초창기 웹에서 출발해, 필요할 때마다 부품이 하나씩 더해지며 지금의 구조가 되었다. 그래서 이 글은 웹의 발전 과정을 시간 순서로 따라간다. 각 단계에서 어떤 한계에 부딪혔고, 그 한계를 넘기 위해 무엇이 등장했는지를 보면, 복잡한 전체 구조가 자연스러운 이야기로 읽힌다.출발점 — TCP 연결 위의 HTTP웹 클라이언트, 곧 브라우저와 웹 서버 사이에는 먼저 TCP 연결이 전제된다. 그 연결 위에서 HTTP 통신이 이루어진다. HTTP 트래픽은 소켓 수준에서 만들어지는 스트림 데이터다. 끝을 곧바로 알기 어려운 데이터가 쭉 이어지는 형태다.이 스트림을 네트워크로 보낼 때는 잘게 잘린다. IP 네트워크의..
웹 — URL·URI와 HTTP
·
Network
이 글에서는 두 가지를 다룬다. 하나는 우리가 주소창에 입력하는 주소 그 자체의 문법, 곧 URL과 URI다. 다른 하나는 그 주소로 문서를 실어 나르는 프로토콜, HTTP다. 웹의 근간이 HTML이라는 문서와 그것을 나르는 HTTP라면, 이 글은 그 "나르는" 쪽의 문법과 약속을 들여다보는 셈이다.리소스란 무엇인가 — 웹에서 다루는 것은 결국 파일URL과 URI를 이해하려면 먼저 리소스가 무엇인지 짚어야 한다. 리소스는 포괄적으로 말할 수 있지만, 웹에 한정하면 그 본질은 파일이다. 웹에서 가장 기본이 되는 리소스는 HTML 파일이다. 하지만 HTML만 있는 것은 아니다. 화면을 꾸미는 CSS, 이미지인 JPG, 동작을 담은 JavaScript, 데이터를 담은 JSON까지 종류가 다양하다. 이 파일들이..
웹 — 이름을 주소로 바꾸는 관문, DNS 그리고 웹의 탄생
·
Network
브라우저 주소창에 www.naver.com을 입력하고 엔터를 누르면, 화면에 네이버가 뜨기까지 여러 단계가 순식간에 지나간다. 그 첫 단계는 의외로 "접속"이 아니다. 네이버 서버에 연결하려면 그 서버의 IP 주소를 알아야 하는데, 우리가 입력한 것은 IP가 아니라 www.naver.com이라는 이름이기 때문이다. 이름을 주소로 바꿔주는 관문, 그것이 DNS다. 그리고 그렇게 찾아간 곳에서 주고받는 것이 웹, 즉 HTML 문서와 그것을 실어 나르는 HTTP다. 이 글에서는 주소창에 이름을 입력한 순간부터 그 너머의 웹에 닿기까지, 그 앞단을 이루는 두 축인 DNS와 웹의 탄생을 다룬다. OSI 7계층에서 L1부터 L4까지가 데이터를 실어 나르는 인프라라면, 그 위 L5 이상은 그 인프라를 딛고 선 응용 ..
L4 — TCP와 UDP: 연결의 실체와 착각
·
Network
L3에서 IP 주소로 호스트를 찾고 패킷을 전달하는 데까지 왔다. 그 위 L4에는 대표 프로토콜이 둘 있다. TCP와 UDP다. 둘은 같은 전송 계층에 살지만 성격이 정반대다. 한쪽은 상대가 받을 수 있는지 끝까지 확인하고, 다른 쪽은 받든 말든 보낸다. 연결지향이라는 것TCP와 UDP를 가르는 가장 핵심적인 한 가지는 연결지향(connection-oriented) 여부다. TCP에는 연결이라는 개념이 있고 UDP에는 없다. 연결은 우리말 번역이고, 영문 원문에서는 여러 단어가 혼재한다. connection, session, 그리고 virtual circuit이다. virtual이라는 단어가 핵심이다. 인터넷이 물리적 전압의 세기가 아니라 논리로 설명되는 네트워크인 것처럼, TCP 연결도 실제로 두 호스..
L3 — 서브넷 마스크부터 ARP까지
·
Network
들어가며앞의 두 글에서 패킷의 구조와 일생을 살폈다. 이전 글에서 IP 주소가 Network ID와 Host ID로 나뉜다는 것까지 봤지만, 그 경계를 무엇이 정하는지는 미뤄 뒀다. 이번 글에서 그 답인 서브넷 마스크부터 시작한다. 이어서 특별한 주소들(Broadcast, 루프백)을 보고, 패킷이 인터넷을 건너며 겪는 TTL과 단편화를 라우터 관점에서 다시 들여다본 뒤, 호스트가 인터넷을 쓰기 위해 주소를 자동으로 받고(DHCP), MAC을 알아내고(ARP), 연결 상태를 확인하는(Ping) 보조 프로토콜까지 정리한다. 서브넷 마스크 — Network와 Host의 경계IP 주소가 Network ID와 Host ID 두 부분으로 나뉜다는 건 앞서 봤다. 그런데 어디서 잘리는지는 IP 주소만 봐서는 알 수 ..
L3 — TCP/IP 송·수신 구조와 IP 헤더
·
Network
들어가며지난 글에서 IP 주소의 구조와 패킷의 개념, 캡슐화, 그리고 계층마다 데이터를 부르는 이름(Stream·Segment·Packet·Frame)을 정리했다. 이번 글은 그 패킷이 실제로 한 호스트에서 만들어져 인터넷을 건너 상대 호스트의 프로세스에 닿기까지, 송신과 수신의 전체 흐름을 한 번에 훑는다. 그리고 IP 헤더가 실제로 어떤 필드로 채워지는지 들여다본다. 이 글에는 아직 본격적으로 다루지 않은 TCP가 일부 등장한다. TCP의 세부는 다음 글에서 다루므로, 여기서는 "전체 흐름이 이렇게 이어지는구나" 정도로 큰 그림을 잡는 데 집중하면 된다.에펠탑을 택배로 보내려면파리에 있는 에펠탑을 택배로 보낼 수 있을까? 가능하다. 다만 순서가 있다. 먼저 에펠탑을 분해해서 택배 박스에 들어갈 만한 ..
L3 — IP 주소와 패킷의 구조
·
Network
들어가며지난 두 글(1편, 2편)에서 L2 데이터링크 계층을 다뤘다. NIC와 MAC 주소, 그리고 Frame이라는 단위로 같은 LAN 안에서 데이터가 어떻게 오가는지까지 봤다. 이제 한 계층 위, L3 네트워크 계층으로 올라간다. L3의 주인공은 IP다. 그리고 IP를 이야기하는 순간 따라 나오는 단어가 패킷(Packet)이다. 이 글에서는 IPv4 주소가 어떻게 생겼는지, 패킷이 무엇이고 어떻게 포장되는지, 그리고 그 패킷이 한 호스트에서 만들어져 다른 호스트의 프로세스에 닿기까지 어떤 흐름을 타는지를 정리한다. 라우팅·서브넷·헤더 세부 필드 같은 심화 내용은 다음 글들로 미룬다.IPv4 주소의 구조IP 주소는 인터넷에 연결된 컴퓨터 한 대(호스트)를 식별하기 위해 부여하는 고유 번호다. IPv4 환..
L2 — 데이터링크 계층, NIC와 MAC 그리고 스위칭
·
Network
네트워크를 계층으로 외우기로 했으니, 이번에는 바닥에서 두 번째 층인 L2를 본다. L2에서 외울 것은 다섯 가지다. 신호를 주고받는 하드웨어인 NIC, 그 하드웨어의 식별자인 MAC 주소, L2에서 데이터가 오가는 단위인 Frame, 그 Frame을 받아 길을 잡아주는 L2 스위치, 그리고 한 번에 모두에게 보내는 Broadcast다. 마지막에는 이 모든 것이 속하는 LAN이 어디까지인지, 그 경계를 물리와 논리로 가르는 요령까지 정리한다.NIC — 랜카드 말고 "네트워크 인터페이스"우리가 흔히 랜카드라고 부르는 것의 정확한 이름은 NIC(Network Interface Card), 즉 네트워크 인터페이스 카드다. 네트워크를 좀 안다는 사람들은 "랜카드"라는 말 대신 "NIC" 또는 "네트워크 인터페이..
네트워크 입문 — 계층, 식별자, 그리고 Host
·
Network
들어가며이 글은 네트워크를 이해하는 데 필요한 기본 틀과 용어를 정리한다. 계층 구조에서 출발해, 계층별 식별자, 그리고 Host와 Switch가 하는 일까지 다룬다. 다음 정도는 알고 있다고 가정한다. 모른다면 해당 키워드를 먼저 찾아보고 오는 편이 좋다.bit과 byte 같은 정보 표현 단위2진수와 16진수 변환프로세스(Process)와 프로그램(Program)의 차이범용 운영체제에 User mode와 Kernel mode가 있다는 사실Layer와 Layered 구조네트워크는 계층(Layer) 구조로 설계되어 있다. 복잡한 통신 과정을 여러 층으로 쪼개고, 각 층은 자기가 맡은 일만 책임진다. 층을 나누면 한 층의 내부 구현을 바꿔도 다른 층에 영향이 가지 않으므로, 전체를 한꺼번에 이해하거나 수정할..